bipush java,Java Opcodes.BIPUSH屬性代碼示例

本文详细介绍了Java中org.objectweb.asm.Opcodes.BIPUSH的使用,通过多个代码示例展示了如何在不同场景下应用此属性,涉及类型转换、数组创建和常量推入等方面。这些示例涵盖了从简单的字节常量推入到复杂操作的多种情况,有助于深入理解Java字节码操作。
摘要由CSDN通过智能技术生成

本文整理匯總了Java中org.objectweb.asm.Opcodes.BIPUSH屬性的典型用法代碼示例。如果您正苦於以下問題:Java Opcodes.BIPUSH屬性的具體用法?Java Opcodes.BIPUSH怎麽用?Java Opcodes.BIPUSH使用的例子?那麽恭喜您, 這裏精選的屬性代碼示例或許可以為您提供幫助。您也可以進一步了解該屬性所在類org.objectweb.asm.Opcodes的用法示例。

在下文中一共展示了Opcodes.BIPUSH屬性的7個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於我們的係統推薦出更棒的Java代碼示例。

示例1: visitIntInsn

​點讚 3

@Override

public void visitIntInsn(final int opcode, final int operand) {

checkStartCode();

checkEndCode();

checkOpcode(opcode, 1);

switch (opcode) {

case Opcodes.BIPUSH:

checkSignedByte(operand, "Invalid operand");

break;

case Opcodes.SIPUSH:

checkSignedShort(operand, "Invalid operand");

break;

// case Constants.NEWARRAY:

default:

if (operand < Opcodes.T_BOOLEAN || operand > Opcodes.T_LONG) {

throw new IllegalArgumentException(

"Invalid operand (must be an array type code T_...): "

+ operand);

}

}

super.visitIntInsn(opcode, operand);

++insnCount;

}

開發者ID:ItzSomebody,項目名稱:DirectLeaks-AntiReleak-Remover,代碼行數:23,

示例2: updateState

​點讚 3

private void updateState(IntInsnNode insn) {

switch (insn.getOpcode()) {

case Opcodes.BIPUSH:

case Opcodes.SIPUSH: {

state.push(Type.INT_TYPE);

break;

}

case Opcodes.NEWARRAY: {

String desc = arrayTypeDesc(insn.operand);

Type type = Type.getType(desc);

state.pop();

state.push(type);

break;

}

default:

throw new Unreachable("Unexpected IntInsn opcode: " + insn.getOpcode());

}

}

開發者ID:inferjay,項目名稱:r8,代碼行數:18,

示例3: build

​點讚 3

private void build(IntInsnNode insn, IRBuilder builder) {

switch (insn.getOpcode()) {

case Opcodes.BIPUSH:

case Opcodes.SIPUSH: {

int dest = state.push(Type.INT_TYPE);

builder.addIntConst(dest, insn.operand);

break;

}

case Opcodes.NEWARRAY: {

String desc = arrayTypeDesc(insn.operand);

Type type = Type.getType(desc);

DexType dexType = application.getTypeFromDescriptor(desc);

int count = state.pop(Type.INT_TYPE).register;

int array = state.push(type);

builder.addNewArrayEmpty(array, count, dexType);

break;

}

default:

throw new Unreachable("Unexpected IntInsn opcode: " + insn.getOpcode());

}

}

開發者ID:inferjay,項目名稱:r8,代碼行數:21,

示例4: getPushInsn

​點讚 3

static AbstractInsnNode getPushInsn(int value) {

if (value == -1) {

return new InsnNode(Opcodes.ICONST_M1);

} else if (value == 0) {

return new InsnNode(Opcodes.ICONST_0);

} else if (value == 1) {

return new InsnNode(Opcodes.ICONST_1);

} else if (value == 2) {

return new InsnNode(Opcodes.ICONST_2);

} else if (value == 3) {

return new InsnNode(Opcodes.ICONST_3);

} else if (value == 4) {

return new InsnNode(Opcodes.ICONST_4);

} else if (value == 5) {

return new InsnNode(Opcodes.ICONST_5);

} else if ((value >= -128) && (value <= 127)) {

return new IntInsnNode(Opcodes.BIPUSH, value);

} else if ((value >= -32768) && (value <= 32767)) {

return new IntInsnNode(Opcodes.SIPUSH, value);

} else {

return new LdcInsnNode(value);

}

}

開發者ID:yutian-tianpl,項目名稱:byte-cobweb,代碼行數:23,

示例5: isSimpleConstant

​點讚 2

private static boolean isSimpleConstant(Object previousInstructionObject) {

// CHECKSTYLE:OFF

final AbstractInsnNode previousInstruction = (AbstractInsnNode) previousInstructionObject;

// CHECKSTYLE:ON

final int opcode = previousInstruction.getOpcode();

return (opcode >= Opcodes.ACONST_NULL && opcode <= Opcodes.DCONST_1

|| opcode == Opcodes.SIPUSH || opcode == Opcodes.BIPUSH)

&& (previousInstruction instanceof InsnNode

|| previousInstruction instanceof IntInsnNode);

}

開發者ID:evernat,項目名稱:dead-code-detector,代碼行數:10,

示例6: visitIntInsn

​點讚 2

/**

* Imports instructions with a single integer operand (byte push, short push

* and allocation of primitive arrays).

*

* @param opcode Opcode.

* @param operand Integer operand.

*/

@Override

public void visitIntInsn(final int opcode, final int operand) {

switch(opcode) {

// Constants

case Opcodes.BIPUSH: createConstant(new Byte((byte) operand)); break;

case Opcodes.SIPUSH: createConstant(new Short((short) operand)); break;

// New Array (Primitive)

case Opcodes.NEWARRAY:

Type type = null;

switch(operand) {

case Opcodes.T_BOOLEAN: type = Type.BOOL; break;

case Opcodes.T_CHAR: type = Type.CHAR; break;

case Opcodes.T_FLOAT: type = Type.FLOAT; break;

case Opcodes.T_DOUBLE: type = Type.DOUBLE; break;

case Opcodes.T_BYTE: type = Type.BYTE; break;

case Opcodes.T_SHORT: type = Type.SHORT; break;

case Opcodes.T_INT: type = Type.INT; break;

case Opcodes.T_LONG: type = Type.LONG; break;

}

ordered.add(stack.push(new NewArray(type, stack.pop())));

break;

}

}

開發者ID:adnanmitf09,項目名稱:Rubus,代碼行數:33,

示例7: visitIntInsn

​點讚 2

@Override

public void visitIntInsn(final int opcode, final int operand) {

switch (opcode) {

case Opcodes.BIPUSH:

iconst(operand);

break;

case Opcodes.SIPUSH:

iconst(operand);

break;

case Opcodes.NEWARRAY:

switch (operand) {

case Opcodes.T_BOOLEAN:

newarray(Type.BOOLEAN_TYPE);

break;

case Opcodes.T_CHAR:

newarray(Type.CHAR_TYPE);

break;

case Opcodes.T_BYTE:

newarray(Type.BYTE_TYPE);

break;

case Opcodes.T_SHORT:

newarray(Type.SHORT_TYPE);

break;

case Opcodes.T_INT:

newarray(Type.INT_TYPE);

break;

case Opcodes.T_FLOAT:

newarray(Type.FLOAT_TYPE);

break;

case Opcodes.T_LONG:

newarray(Type.LONG_TYPE);

break;

case Opcodes.T_DOUBLE:

newarray(Type.DOUBLE_TYPE);

break;

default:

throw new IllegalArgumentException();

}

break;

default:

throw new IllegalArgumentException();

}

}

開發者ID:ItzSomebody,項目名稱:DirectLeaks-AntiReleak-Remover,代碼行數:43,

注:本文中的org.objectweb.asm.Opcodes.BIPUSH屬性示例整理自Github/MSDocs等源碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值