Smali语法列表显示
周三 四月 10, 2019 2:05 pm
[[Smali语法:(nop )没有操作
(move vx,vy)移动内容 vy 到 vx.寄存器范围必须在256以内
(move/from16 vx,vy) 移动 vy 到 vx. vy寄存器范围只能在64k以内 vx 寄存器范围必须在256内.
(move-wide/from16 vx,vy )移动 long/double 值从 vy 到 vx. vy 寄存器范围只能在64k以内 vx是一个 256 寄存器.
(move-object vx,vy )自动对象引用从 vy 到 vx.
(move-object/from16 vx,vy )移动对象引用从 vy 到 vx, vy 可以添加 64k 寄存器和 vx 可以添加 256 寄存器.
(move-result vx )把前面运行的结果赋值给 vx.
(move-result-wide vx )移动 long/double 方法调用结果赋值到vx,vx+1.
(move-result-object vx )移动前面的方法调用结果到 vx
(move-exception vx )移动异常对象 并抛出异常到 vx.
(return-void )没有返回值返回,结束代码
(return vx )返回值 vx
(return-wide vx )返回double/long 结果 vx,vx+1.
(return-object vx )返回vx对象引用值
(const/4 vx,lit4 )将4字节的参数赋值到 vx
(const/16 vx,lit16 )将16进制数赋值到 vx
(const vx, lit32 )将整数常量赋值到 vx
(const/high16 v0, lit16 )将16位不变的最高位寄存器用于初始化浮点数
(const-wide/16 vx, lit16 )将整数常量vx和vx+1寄存器扩大整数为常量..
(const-wide/32 vx, lit32 )把 32 bit 常数 vx 和 vx+1 寄存器
(const-wide vx, lit64 )把64 bit 常数 vx 和 vx+1 放入寄存器.
(const-wide/high16 vx,lit16 )将16位常数 vx 和 vx+1 的最高位寄存器终于初始化值的两倍
(const-string vx,string_id )设定一个字符串常量 vx 字符串id
(const-class vx,type_id 从 type_id )移动类对象和类标识[e.g. Object.class]到 vx.
(monitor-enter vx )监控对象引用 vx.
(monitor-exit )监视器对象引用 vx.
(check-cast vx, type_id )检查是否对象引用
(instance-of vx,vy,type_id )检查是否 vy 是否是一个类的实例 type_id.
(array-length vx,vy )计算vy引用的数组元素并赋值到 vx.
(new-instance vx,type )实例化对象引用并将 vx 创建为新实例
(new-array vx,vy,type_id )生成新的数组 type_id 类型和 vy 元素大小并将数组赋值给 vx.
(filled-new-array {parameters},type_id )生成新数组 type_id 并填充 parameters5. 生成的数组可以通过 move-result-object 引用后使用 filled-new-array 指令
(filled-new-array-range {vx..vy},type_id )生成一个新数组 type_id 和填补参数 生成新数组引用可以通过 move-result-object 指令使用 filled-new-array fill-array-data vx,array_data_offset 填充数组引用到vx
(throw vx )抛出一个异常对象,异常对象vx.
(goto target )无条件跳转.
(goto/16 target )无条件跳转
(packed-switch vx,table )实例化一个 switch语句,查找表与常量和偏移量为常数,如果表里没有匹配到则继续执行下一条指令.
(sparse-switch vx,table )实例化 switch语法表 指令使用查找表与常量和偏移量为常数,如果表里没有匹配到则继续执行下一条指令.
(cmpl-float )在vy 比较浮点值后赋值到 vx
(cmpg-float vx, vy, vz )比较浮点值 vy 和 vz 和设置整数赋值到 vx.
(cmpl-double vx,vy,vz )比较 double 值 vy 和 vz 并设置整数 赋值到 vx.
(cmpg-double vx, vy, vz )比较 double 值 vy 和 vz 并设置整数 赋值到 vx.
(cmp-long vx, vy, vz )比较 long 值 vy 和 vz 并设置整数 赋值到 vx.
(if-eq vx,vy,)目标 如果vx == vy注2,跳转到目标。.
(if-ne vx,vy,)目标 如果vx != vy注2,跳转到目标
(if-lt vx,vy,)目标 如果vx < vy注2,跳转到目标
(if-ge vx, vy,)目标 如果vx >= vy注2,跳转到目标。
(if-gt vx,vy,)目标 如果vx > vy注2,跳转到目标
(if-le vx,vy,)目标 如果vx <= vy注2,跳转到目标
(if-eqz vx,)目标 如果vx == 0注2,跳转到目标。
(if-nez vx,)目标 如果vx != 0注2,跳转到目标。
(if-ltz vx,)目标 如果 vx < 0跳转到目标
(if-gez vx,)目标 如果 vx>=0 跳转到目标.
(if-gtz vx,)目标 如果 vx>0 跳转到目标.
(if-lez vx,)目标 如果 vx<=0 跳转到目标.
(aget vx,vy,vz )得到整数值对象引用 array 到 vx. aget-wide vx,vy,vz 获得 long/double 值 long/double 数组为 vx,vx+1. vy引用数组和vz引索
(aget-object vx,vy,vz )获得对象引用 值和 n对象引用 数组赋值到 vx vy 引用数组和vz引索
(aget-boolean vx,vy,vz )获得 boolean 值和 boolean 数组赋值到 vx vy 引用数组和vz引索
(aget-byte vx,vy,vz )获得 byte 值把 byte 数组赋值到 vx vy 引用数组和vz引索
(aget-char vx, vy,vz )获得 char 值和 character 数组赋值到 vx
(aget-short vx,vy,vz )获得 short 值和 short 数组赋值到 vx .
(aput vx,vy,vz )把integer 赋值到 vx 得到整数元素组. .
(aput-wide vx,vy,vz )把double/long 赋值到 vx,vx+1 成double/long 数组.
(aput-object vx,vy,vz )把vy对象引用 赋值到 vx 得到整数元素组
(aput-boolean vx,vy,vz )把boolean 赋值到 vx 得到元素 boolean 数组 .
(aput-byte vx,vy,vz )把 byte 赋值到 vx 得到元素 byte 数组 .
(aput-char vx,vy,vz )把 char 赋值到 vx 字符数组的一个元素被vy引用的数组对象.
(aput-short vx,vy,vz )把 short 赋值到 vx 得到元素 short 数组 .
(iget vx, vy, field_id )读取一个 实例字段到 vx. 实例从vy引用.
(iget-wide vx,vy,field_id )读取一个 实例字段到 vx1. 实例从vy引用.
(iget-object vx,vy,field_id )读取一个对象引用 实例字段到 vx. 实例从vy引用.
(iget-boolean vx,vy,field_id )读取 boolean 实例字段到 vx. 实例从vy引用.
(iget-byte vx,vy,field_id )读取 byte 实例字段到 vx. 实例从vy引用.
(iget-char vx,vy,field_id )读取 char 实例字段到 vx. 实例从vy引用.
(iget-short vx,vy,field_id )读取 short 实例字段到 vx. 实例从vy引用.
(iput vx,vy, field_id )将vx放入一个实例字段. 实例从vy引用.
(iput-wide vx,vy, field_id )把 wide 数值 in vx and vx+1 注册到一个实例字段 实例从vy引用.
(iput-object vx,vy,field_id )把 the对象引用在vx实际化字段. 实例从vy引用.
(iput-boolean vx,vy, field_id )把 boolean 数值在vx实际化字段 实例从vy引用.
(iput-byte vx,vy,field_id )把 byte 数值在vx实际化字段. 实例从vy引用.
(iput-char vx,vy,field_id )把 char 数值在vx实际化字段. 实例从vy引用.
(iput-short vx,vy,field_id )把 short 数值在vx实际化字段. 实例从vy引用.
(sget vx,field_id 从 field_id )读取整个字段到 vx.
(sget-wide vx, field_id 从 field_id )读取静态字段到 vx 和 vx+1 寄存器.
(sget-object vx,field_id )读取对象引用 field_id 到 vx.
(sget-boolean vx,field_id )读取 boolean 静态字段 field_id 到 vx.
(sget-byte vx,field_id )读取 byte 静态字段 field_id 到 vx.
(sget-char vx,field_id )读取 char 静态字段 field_id 到 vx.
(sget-short vx,field_id )读取 short 静态字段 field_id 到 vx.
(sput vx, field_id )把 vx 静态字段
(sput-wide vx, field_id )把 vx and vx+1 转到一个静态字段
(sput-object vx,field_id )对象引用 in vx 转到一个静态字段
(sput-boolean vx,field_id )把 boolean 赋值到 vx转到一个静态字段
(sput-byte vx,field_id )把 byte 赋值到 vx转到一个静态字段
(sput-char vx,field_id )把 char 赋值到 vx 转到一个静态字段
(sput-short vx,field_id )把 short 赋值到 vx 转到一个静态字段
(invoke-virtual { parameters }, methodtocall )调用一个虚拟方法与参数.
(invoke-super {parameter},methodtocall )调用直接父类的虚方法.
(invoke-direct { parameters }, methodtocall )调用一个方法参数,没有虚拟方法解析
(invoke-static {parameters}, methodtocall )调用一个静态方法与参数
(invoke-inte***ce {parameters},methodtocall )调用接口方法
(invoke-virtual/range {vx..vy},methodtocall )调用虚拟方法的寄存器.指定一个寄存器和寄存器数量被传递给方法
(invoke-super/range )直接调用父类的虚方法。指定一个寄存器和寄存器数量被传递给方法
(invoke-direct/range {vx..vy},methodtocall )直接调用寄存器方法指定一个寄存器和寄存器数量被传递给方法
(invoke-static/range {vx..vy},methodtocall )调用静态方法寄存器指定一个寄存器和寄存器数量被传递给方法
(invoke-inte***ce-range )调用一个接口方法寄存器,指定一个寄存器和寄存器数量被传递给方法
(neg-int vx,vy )计算 vx=-vy.
(neg-long vx,vy )计算 vx,vx+1=-[vy,vy+1]
(neg-float vx,vy )计算 vx=-vy
(neg-double vx,vy )计算 vx,vx+1=-[vy,vy+1]
(int-to-long vx, vy )转换整数到 vy 并转成 long in vx,vx+1.
(int-to-float vx, vy )转换整数到 vx 并转成 float in vx.
(int-to-double vx, vy )转换vy到整数 double in vx,vx+1.
(long-to-int vx,vy )转换 long vy 值 ,vy+1 到整数储存到 vx
(long-to-float vx, vy )转换 long vy 值 ,vy+1 成 float in vx.
(long-to-double vx, vy )转换 long vy 值 ,vy+1 成 double 赋值到 vx,vx+1.
(float-to-int vx, vy )转换 float vy 值到整数并赋值到 vx.
(float-to-long vx,vy )转换 float vy 值 成long 赋值到 vx.
(float-to-double vx, vy )转换 float vy 值 成double 赋值到 vx,vx+1.
(double-to-int vx, vy )转换 double vy 值 ,vy+1 到整数赋值到 vx.
(double-to-long vx, vy )转换 double vy 值 ,vy+1 成long 赋值到 vx,vx+1.
(double-to-float vx, vy )转换 double vy 值 ,vy+1 成float 赋值到 vx.
(int-to-byte vx,vy )转换 int vy 值到 byte 值,并保存到vx.
(int-to-char vx,vy )转换 int vy 值到char 值,并保存到vx.
(int-to-short vx,vy )转换 int vy 值到 short 值,并保存到vx.
(add-int vx,vy,vz )计算 vy+vz 并将结果放到 vx.
(sub-int vx,vy,vz )计算 vy-vz 并将结果放到 vx.
(mul-int vx, vy, vz vz )与 vy 相乘并将结果转int放到 vx.
(div-int vx,vy,vz Divides vy )与 vz 并将结果赋值到 vx.
(rem-int vx,vy,vz )计算 vy % vz 并将结果赋值到 vx.
(and-int vx, vy, vz )计算 vy AND vz 并将结果赋值到 vx.
(or-int vx, vy, vz )计算 vy OR vz 并将结果赋值到 vx.
(xor-int vx, vy, vz )计算 vy XOR vz 并将结果赋值到 vx.
(shl-int vx, vy, vz )转换 vy 指定的位置留下后并储存结果 到 vx.
(shr-int vx, vy, vz )从vy指定位置转换并储存到 vx.
(ushr-int vx, vy, vz )无符号右移 [>>>] vy 指定位置后将结果储存到 vx
(add-long vx, vy, vz )添加 vy 到 vz 并将结果赋值到 vx1.
(sub-long vx,vy,vz )计算 vy-vz 并将结果赋值到 vx1.
(mul-long vx,vy,vz )计算 vy*vz 并将结果赋值到 vx1.
(div-long vx, vy, vz )计算 vy/vz 并将结果赋值到 vx1.
(rem-long vx,vy,vz )计算 vy % vz 并将结果赋值到 vx1.
(and-long vx, vy, vz )计算 the vy AND vz 并将结果赋值到 vx1.
(or-long vx, vy, vz )计算 the vy OR vz 并将结果赋值到 vx1.
(xor-long vx, vy, vz )计算 the vy XOR vz 并将结果赋值到 vx1.
(shl-long vx, vy, vz) Shifts left vy by vz positions 并将结果储存在 vx1.
(shr-long vx,vy,vz )Shifts right vy by vz positions 并将结果储存在 vx1.
(ushr-long vx, vy, vz )Unsigned shifts right vy by vz positions 并将结果储存在 vx1.
(add-float vx,vy,vz )添加 vy 到 vz 并将结果赋值到 vx.
(sub-float vx,vy,vz )计算 vy-vz 并将结果赋值到 vx.
(mul-float vx, vy, vz )增加 vy 与 vz 并将结果赋值到 vx.
(div-float vx, vy, vz )计算 vy/vz 并将结果赋值到 vx.
(rem-float vx,vy,vz )计算 vy % vz 并将结果赋值到 vx.
(add-double vx,vy,vz )添加 vy 到 vz 并将结果赋值到 vx1.
(sub-double vx,vy,vz )计算 vy-vz 并将结果赋值到 vx1.
(mul-double vx, vy, vz )增加 vy 与 vz 并将结果赋值到 vx1.
(div-double vx, vy, vz )计算 vy/vz 并将结果赋值到 vx1.
(rem-double vx,vy,vz )计算 vy % vz 并将结果赋值到 vx1.
(add-int/2addr vx,vy )添加 vy 到 vx.
(sub-int/2addr vx,vy )计算 vx-vy 并将结果赋值到 vx.
(mul-int/2addr vx,vy )相乘 vx 和 vy.
(div-int/2addr vx,vy Divides vx )和 vy 并将结果赋值到 vx.
(rem-int/2addr vx,vy )计算 vx % vy 并将结果赋值到 vx
(and-int/2addr vx, vy )计算 vx AND vy 并将结果赋值到 vx.
(or-int/2addr vx, vy )计算 vx OR vy 并将结果赋值到 vx.
(xor-int/2addr vx, vy )计算 vx XOR vy 并将结果赋值到 vx.
(shr-int/2addr vx, vy )从 vy 转换到 vx.
(ushr-int/2addr vx, vy )无符号右移vy到vx的指定位置
(add-long/2addr vx,vy )添加 vy 到 vx1.
(sub-long/2addr vx,vy )计算 vx-vy 并将结果赋值到 vx1.
(mul-long/2addr vx,vy )计算 vx*vy 并将结果赋值到 vx1.
(div-long/2addr vx, vy )计算 vx/vy 并将结果赋值到 vx1.
(rem-long/2addr vx,vy )计算 vx % vy 并将结果赋值到 vx1.
(and-long/2addr vx, vy )计算 vx AND vy 并将结果赋值到 vx1.
(or-long/2addr vx, vy )计算 vx OR vy 并将结果赋值到 vx1.
(xor-long/2addr vx, vy )计算 vx XOR vy 并将结果赋值到 vx1.
(shl-long/2addr vx, vy )Shifts left the 赋值到 vx,vx+1 从 vy 指定的位置 并将结果储存在 vx,vx+1.
(shr-long/2addr vx, vy) Shifts right the 赋值到 vx,vx+1 从 vy 指定的位置 并将结果储存在 vx,vx+1.
(ushr-long/2addr vx, vy )无条件转移vy 赋值到 vx,vx+1 并将结果储存在 vx,vx+1.
(add-float/2addr vx,vy )添加 vy 到 vx.
(sub-float/2addr vx,vy )计算 vx-vy 并将结果储存在 vx.
(mul-float/2addr vx, vy )相乘 vx 和 vy.
(div-float/2addr vx, vy )计算 vx/vy 并将结果赋值到 vx.
(rem-float/2addr vx,vy )计算 vx/vy 并将结果赋值到 vx.
(add-double/2addr vx, vy )添加 vy 到 vx1.
(sub-double/2addr vx, vy )计算 vx-vy 并将结果赋值到 vx1.
(mul-double/2addr vx, vy )相乘 vx 和 vy1.
(div-double/2addr vx, vy )计算 vx/vy 并将结果赋值到 vx1.
(rem-double/2addr vx,vy )计算 vx % vy 并将结果赋值到 vx1.
(add-int/lit16 vx,vy,lit16 )添加 vy to lit16 并将结果储存到 vx
(sub-int/lit16 vx,vy,lit16 )计算 vy - lit16 并将结果储存到 vx
(mul-int/lit16 vx,vy,lit16 )计算 vy * lit16 并将结果储存到 vx
(div-int/lit16 vx,vy,lit16 )计算 vy / lit16 并将结果储存到 vx
(rem-int/lit16 vx,vy,lit16 )计算 vy % lit16 并将结果储存到 vx
(and-int/lit16 vx,vy,lit16 )计算 vy AND lit16 并将结果储存到 vx
(or-int/lit16 vx,vy,lit16 )计算 vy OR lit16 并将结果储存到 vx
(xor-int/lit16 vx,vy,lit16 )计算 vy XOR lit16 并将结果储存到 vx
(add-int/lit8 vx,vy,lit8 )添加 vy to lit8 并将结果储存到 vx
(sub-int/lit8 vx,vy,lit8 )计算 vy-lit8 并将结果储存到 vx
(mul-int/lit8 vx,vy,lit8 )增加 vy 与 lit8 8-bit 文字常量 并将结果赋值到 vx.
(div-int/lit8 vx,vy,lit8 )计算 vy/lit8 并将结果储存到 vx
(rem-int/lit8 vx,vy,lit8 )计算 vy % lit8 并将结果储存到 vx
(and-int/lit8 vx,vy,lit8 )计算 vy AND lit8 并将结果储存到 vx
(or-int/lit8 vx, vy, lit8 )计算 vy OR lit8 并将结果赋值到 vx.
(xor-int/lit8 vx, vy, lit8 )计算 vy XOR lit8 并将结果赋值到 vx.
(shl-int/lit8 vx, vy, lit8 )转换 v0 留下指定位置
(shr-int/lit8 vx, vy, lit8 )从指定位置读取文字常量并将结果储存到 vx.
(ushr-int/lit8 vx, vy, lit8 )无符号右移 v0 [>>>]
(execute-inline {parameters},inline ID )执行内联方法内联 ID.
(invoke-direct-empty )占位符修改空对象.<init>. 期间使用nop正常执行6.
(iget-quick vx,vy,offset )从vy实例的数据区获得的数据储存到vx
(iget-wide-quick vx,vy,offset )获取对象引用偏移vy值到vx,vx+16.
(iget-object-quick vx,vy,offset )获取对象引用 偏移vy值到vx6.
(iput-quick vx,vy,offset vy)实例数据抵消并将值储存在 vx.
(iput-wide-quick vx,vy,offset )将值储存在 vx,vx+1 to offset in vy instance's data area6.
(iput-object-quick vx,vy,offset )将对象引用值储存在vx来抵消vy实例的数据区域
(invoke-virtual-quick {parameters},vtable offset )调用方法目地址对象
(invoke-virtual-quick/range {parameter range},vtable offset )调用一个方法使用vtable的目标对象
(invoke-super-quick {parameters},vtable offset )调用一个虚方法直接在目标对象的父类直接使用.
(invoke-super-quick/range {register range},vtable offset )调用一个虚方法在目标对象父类使用.
]]
(move vx,vy)移动内容 vy 到 vx.寄存器范围必须在256以内
(move/from16 vx,vy) 移动 vy 到 vx. vy寄存器范围只能在64k以内 vx 寄存器范围必须在256内.
(move-wide/from16 vx,vy )移动 long/double 值从 vy 到 vx. vy 寄存器范围只能在64k以内 vx是一个 256 寄存器.
(move-object vx,vy )自动对象引用从 vy 到 vx.
(move-object/from16 vx,vy )移动对象引用从 vy 到 vx, vy 可以添加 64k 寄存器和 vx 可以添加 256 寄存器.
(move-result vx )把前面运行的结果赋值给 vx.
(move-result-wide vx )移动 long/double 方法调用结果赋值到vx,vx+1.
(move-result-object vx )移动前面的方法调用结果到 vx
(move-exception vx )移动异常对象 并抛出异常到 vx.
(return-void )没有返回值返回,结束代码
(return vx )返回值 vx
(return-wide vx )返回double/long 结果 vx,vx+1.
(return-object vx )返回vx对象引用值
(const/4 vx,lit4 )将4字节的参数赋值到 vx
(const/16 vx,lit16 )将16进制数赋值到 vx
(const vx, lit32 )将整数常量赋值到 vx
(const/high16 v0, lit16 )将16位不变的最高位寄存器用于初始化浮点数
(const-wide/16 vx, lit16 )将整数常量vx和vx+1寄存器扩大整数为常量..
(const-wide/32 vx, lit32 )把 32 bit 常数 vx 和 vx+1 寄存器
(const-wide vx, lit64 )把64 bit 常数 vx 和 vx+1 放入寄存器.
(const-wide/high16 vx,lit16 )将16位常数 vx 和 vx+1 的最高位寄存器终于初始化值的两倍
(const-string vx,string_id )设定一个字符串常量 vx 字符串id
(const-class vx,type_id 从 type_id )移动类对象和类标识[e.g. Object.class]到 vx.
(monitor-enter vx )监控对象引用 vx.
(monitor-exit )监视器对象引用 vx.
(check-cast vx, type_id )检查是否对象引用
(instance-of vx,vy,type_id )检查是否 vy 是否是一个类的实例 type_id.
(array-length vx,vy )计算vy引用的数组元素并赋值到 vx.
(new-instance vx,type )实例化对象引用并将 vx 创建为新实例
(new-array vx,vy,type_id )生成新的数组 type_id 类型和 vy 元素大小并将数组赋值给 vx.
(filled-new-array {parameters},type_id )生成新数组 type_id 并填充 parameters5. 生成的数组可以通过 move-result-object 引用后使用 filled-new-array 指令
(filled-new-array-range {vx..vy},type_id )生成一个新数组 type_id 和填补参数 生成新数组引用可以通过 move-result-object 指令使用 filled-new-array fill-array-data vx,array_data_offset 填充数组引用到vx
(throw vx )抛出一个异常对象,异常对象vx.
(goto target )无条件跳转.
(goto/16 target )无条件跳转
(packed-switch vx,table )实例化一个 switch语句,查找表与常量和偏移量为常数,如果表里没有匹配到则继续执行下一条指令.
(sparse-switch vx,table )实例化 switch语法表 指令使用查找表与常量和偏移量为常数,如果表里没有匹配到则继续执行下一条指令.
(cmpl-float )在vy 比较浮点值后赋值到 vx
(cmpg-float vx, vy, vz )比较浮点值 vy 和 vz 和设置整数赋值到 vx.
(cmpl-double vx,vy,vz )比较 double 值 vy 和 vz 并设置整数 赋值到 vx.
(cmpg-double vx, vy, vz )比较 double 值 vy 和 vz 并设置整数 赋值到 vx.
(cmp-long vx, vy, vz )比较 long 值 vy 和 vz 并设置整数 赋值到 vx.
(if-eq vx,vy,)目标 如果vx == vy注2,跳转到目标。.
(if-ne vx,vy,)目标 如果vx != vy注2,跳转到目标
(if-lt vx,vy,)目标 如果vx < vy注2,跳转到目标
(if-ge vx, vy,)目标 如果vx >= vy注2,跳转到目标。
(if-gt vx,vy,)目标 如果vx > vy注2,跳转到目标
(if-le vx,vy,)目标 如果vx <= vy注2,跳转到目标
(if-eqz vx,)目标 如果vx == 0注2,跳转到目标。
(if-nez vx,)目标 如果vx != 0注2,跳转到目标。
(if-ltz vx,)目标 如果 vx < 0跳转到目标
(if-gez vx,)目标 如果 vx>=0 跳转到目标.
(if-gtz vx,)目标 如果 vx>0 跳转到目标.
(if-lez vx,)目标 如果 vx<=0 跳转到目标.
(aget vx,vy,vz )得到整数值对象引用 array 到 vx. aget-wide vx,vy,vz 获得 long/double 值 long/double 数组为 vx,vx+1. vy引用数组和vz引索
(aget-object vx,vy,vz )获得对象引用 值和 n对象引用 数组赋值到 vx vy 引用数组和vz引索
(aget-boolean vx,vy,vz )获得 boolean 值和 boolean 数组赋值到 vx vy 引用数组和vz引索
(aget-byte vx,vy,vz )获得 byte 值把 byte 数组赋值到 vx vy 引用数组和vz引索
(aget-char vx, vy,vz )获得 char 值和 character 数组赋值到 vx
(aget-short vx,vy,vz )获得 short 值和 short 数组赋值到 vx .
(aput vx,vy,vz )把integer 赋值到 vx 得到整数元素组. .
(aput-wide vx,vy,vz )把double/long 赋值到 vx,vx+1 成double/long 数组.
(aput-object vx,vy,vz )把vy对象引用 赋值到 vx 得到整数元素组
(aput-boolean vx,vy,vz )把boolean 赋值到 vx 得到元素 boolean 数组 .
(aput-byte vx,vy,vz )把 byte 赋值到 vx 得到元素 byte 数组 .
(aput-char vx,vy,vz )把 char 赋值到 vx 字符数组的一个元素被vy引用的数组对象.
(aput-short vx,vy,vz )把 short 赋值到 vx 得到元素 short 数组 .
(iget vx, vy, field_id )读取一个 实例字段到 vx. 实例从vy引用.
(iget-wide vx,vy,field_id )读取一个 实例字段到 vx1. 实例从vy引用.
(iget-object vx,vy,field_id )读取一个对象引用 实例字段到 vx. 实例从vy引用.
(iget-boolean vx,vy,field_id )读取 boolean 实例字段到 vx. 实例从vy引用.
(iget-byte vx,vy,field_id )读取 byte 实例字段到 vx. 实例从vy引用.
(iget-char vx,vy,field_id )读取 char 实例字段到 vx. 实例从vy引用.
(iget-short vx,vy,field_id )读取 short 实例字段到 vx. 实例从vy引用.
(iput vx,vy, field_id )将vx放入一个实例字段. 实例从vy引用.
(iput-wide vx,vy, field_id )把 wide 数值 in vx and vx+1 注册到一个实例字段 实例从vy引用.
(iput-object vx,vy,field_id )把 the对象引用在vx实际化字段. 实例从vy引用.
(iput-boolean vx,vy, field_id )把 boolean 数值在vx实际化字段 实例从vy引用.
(iput-byte vx,vy,field_id )把 byte 数值在vx实际化字段. 实例从vy引用.
(iput-char vx,vy,field_id )把 char 数值在vx实际化字段. 实例从vy引用.
(iput-short vx,vy,field_id )把 short 数值在vx实际化字段. 实例从vy引用.
(sget vx,field_id 从 field_id )读取整个字段到 vx.
(sget-wide vx, field_id 从 field_id )读取静态字段到 vx 和 vx+1 寄存器.
(sget-object vx,field_id )读取对象引用 field_id 到 vx.
(sget-boolean vx,field_id )读取 boolean 静态字段 field_id 到 vx.
(sget-byte vx,field_id )读取 byte 静态字段 field_id 到 vx.
(sget-char vx,field_id )读取 char 静态字段 field_id 到 vx.
(sget-short vx,field_id )读取 short 静态字段 field_id 到 vx.
(sput vx, field_id )把 vx 静态字段
(sput-wide vx, field_id )把 vx and vx+1 转到一个静态字段
(sput-object vx,field_id )对象引用 in vx 转到一个静态字段
(sput-boolean vx,field_id )把 boolean 赋值到 vx转到一个静态字段
(sput-byte vx,field_id )把 byte 赋值到 vx转到一个静态字段
(sput-char vx,field_id )把 char 赋值到 vx 转到一个静态字段
(sput-short vx,field_id )把 short 赋值到 vx 转到一个静态字段
(invoke-virtual { parameters }, methodtocall )调用一个虚拟方法与参数.
(invoke-super {parameter},methodtocall )调用直接父类的虚方法.
(invoke-direct { parameters }, methodtocall )调用一个方法参数,没有虚拟方法解析
(invoke-static {parameters}, methodtocall )调用一个静态方法与参数
(invoke-inte***ce {parameters},methodtocall )调用接口方法
(invoke-virtual/range {vx..vy},methodtocall )调用虚拟方法的寄存器.指定一个寄存器和寄存器数量被传递给方法
(invoke-super/range )直接调用父类的虚方法。指定一个寄存器和寄存器数量被传递给方法
(invoke-direct/range {vx..vy},methodtocall )直接调用寄存器方法指定一个寄存器和寄存器数量被传递给方法
(invoke-static/range {vx..vy},methodtocall )调用静态方法寄存器指定一个寄存器和寄存器数量被传递给方法
(invoke-inte***ce-range )调用一个接口方法寄存器,指定一个寄存器和寄存器数量被传递给方法
(neg-int vx,vy )计算 vx=-vy.
(neg-long vx,vy )计算 vx,vx+1=-[vy,vy+1]
(neg-float vx,vy )计算 vx=-vy
(neg-double vx,vy )计算 vx,vx+1=-[vy,vy+1]
(int-to-long vx, vy )转换整数到 vy 并转成 long in vx,vx+1.
(int-to-float vx, vy )转换整数到 vx 并转成 float in vx.
(int-to-double vx, vy )转换vy到整数 double in vx,vx+1.
(long-to-int vx,vy )转换 long vy 值 ,vy+1 到整数储存到 vx
(long-to-float vx, vy )转换 long vy 值 ,vy+1 成 float in vx.
(long-to-double vx, vy )转换 long vy 值 ,vy+1 成 double 赋值到 vx,vx+1.
(float-to-int vx, vy )转换 float vy 值到整数并赋值到 vx.
(float-to-long vx,vy )转换 float vy 值 成long 赋值到 vx.
(float-to-double vx, vy )转换 float vy 值 成double 赋值到 vx,vx+1.
(double-to-int vx, vy )转换 double vy 值 ,vy+1 到整数赋值到 vx.
(double-to-long vx, vy )转换 double vy 值 ,vy+1 成long 赋值到 vx,vx+1.
(double-to-float vx, vy )转换 double vy 值 ,vy+1 成float 赋值到 vx.
(int-to-byte vx,vy )转换 int vy 值到 byte 值,并保存到vx.
(int-to-char vx,vy )转换 int vy 值到char 值,并保存到vx.
(int-to-short vx,vy )转换 int vy 值到 short 值,并保存到vx.
(add-int vx,vy,vz )计算 vy+vz 并将结果放到 vx.
(sub-int vx,vy,vz )计算 vy-vz 并将结果放到 vx.
(mul-int vx, vy, vz vz )与 vy 相乘并将结果转int放到 vx.
(div-int vx,vy,vz Divides vy )与 vz 并将结果赋值到 vx.
(rem-int vx,vy,vz )计算 vy % vz 并将结果赋值到 vx.
(and-int vx, vy, vz )计算 vy AND vz 并将结果赋值到 vx.
(or-int vx, vy, vz )计算 vy OR vz 并将结果赋值到 vx.
(xor-int vx, vy, vz )计算 vy XOR vz 并将结果赋值到 vx.
(shl-int vx, vy, vz )转换 vy 指定的位置留下后并储存结果 到 vx.
(shr-int vx, vy, vz )从vy指定位置转换并储存到 vx.
(ushr-int vx, vy, vz )无符号右移 [>>>] vy 指定位置后将结果储存到 vx
(add-long vx, vy, vz )添加 vy 到 vz 并将结果赋值到 vx1.
(sub-long vx,vy,vz )计算 vy-vz 并将结果赋值到 vx1.
(mul-long vx,vy,vz )计算 vy*vz 并将结果赋值到 vx1.
(div-long vx, vy, vz )计算 vy/vz 并将结果赋值到 vx1.
(rem-long vx,vy,vz )计算 vy % vz 并将结果赋值到 vx1.
(and-long vx, vy, vz )计算 the vy AND vz 并将结果赋值到 vx1.
(or-long vx, vy, vz )计算 the vy OR vz 并将结果赋值到 vx1.
(xor-long vx, vy, vz )计算 the vy XOR vz 并将结果赋值到 vx1.
(shl-long vx, vy, vz) Shifts left vy by vz positions 并将结果储存在 vx1.
(shr-long vx,vy,vz )Shifts right vy by vz positions 并将结果储存在 vx1.
(ushr-long vx, vy, vz )Unsigned shifts right vy by vz positions 并将结果储存在 vx1.
(add-float vx,vy,vz )添加 vy 到 vz 并将结果赋值到 vx.
(sub-float vx,vy,vz )计算 vy-vz 并将结果赋值到 vx.
(mul-float vx, vy, vz )增加 vy 与 vz 并将结果赋值到 vx.
(div-float vx, vy, vz )计算 vy/vz 并将结果赋值到 vx.
(rem-float vx,vy,vz )计算 vy % vz 并将结果赋值到 vx.
(add-double vx,vy,vz )添加 vy 到 vz 并将结果赋值到 vx1.
(sub-double vx,vy,vz )计算 vy-vz 并将结果赋值到 vx1.
(mul-double vx, vy, vz )增加 vy 与 vz 并将结果赋值到 vx1.
(div-double vx, vy, vz )计算 vy/vz 并将结果赋值到 vx1.
(rem-double vx,vy,vz )计算 vy % vz 并将结果赋值到 vx1.
(add-int/2addr vx,vy )添加 vy 到 vx.
(sub-int/2addr vx,vy )计算 vx-vy 并将结果赋值到 vx.
(mul-int/2addr vx,vy )相乘 vx 和 vy.
(div-int/2addr vx,vy Divides vx )和 vy 并将结果赋值到 vx.
(rem-int/2addr vx,vy )计算 vx % vy 并将结果赋值到 vx
(and-int/2addr vx, vy )计算 vx AND vy 并将结果赋值到 vx.
(or-int/2addr vx, vy )计算 vx OR vy 并将结果赋值到 vx.
(xor-int/2addr vx, vy )计算 vx XOR vy 并将结果赋值到 vx.
(shr-int/2addr vx, vy )从 vy 转换到 vx.
(ushr-int/2addr vx, vy )无符号右移vy到vx的指定位置
(add-long/2addr vx,vy )添加 vy 到 vx1.
(sub-long/2addr vx,vy )计算 vx-vy 并将结果赋值到 vx1.
(mul-long/2addr vx,vy )计算 vx*vy 并将结果赋值到 vx1.
(div-long/2addr vx, vy )计算 vx/vy 并将结果赋值到 vx1.
(rem-long/2addr vx,vy )计算 vx % vy 并将结果赋值到 vx1.
(and-long/2addr vx, vy )计算 vx AND vy 并将结果赋值到 vx1.
(or-long/2addr vx, vy )计算 vx OR vy 并将结果赋值到 vx1.
(xor-long/2addr vx, vy )计算 vx XOR vy 并将结果赋值到 vx1.
(shl-long/2addr vx, vy )Shifts left the 赋值到 vx,vx+1 从 vy 指定的位置 并将结果储存在 vx,vx+1.
(shr-long/2addr vx, vy) Shifts right the 赋值到 vx,vx+1 从 vy 指定的位置 并将结果储存在 vx,vx+1.
(ushr-long/2addr vx, vy )无条件转移vy 赋值到 vx,vx+1 并将结果储存在 vx,vx+1.
(add-float/2addr vx,vy )添加 vy 到 vx.
(sub-float/2addr vx,vy )计算 vx-vy 并将结果储存在 vx.
(mul-float/2addr vx, vy )相乘 vx 和 vy.
(div-float/2addr vx, vy )计算 vx/vy 并将结果赋值到 vx.
(rem-float/2addr vx,vy )计算 vx/vy 并将结果赋值到 vx.
(add-double/2addr vx, vy )添加 vy 到 vx1.
(sub-double/2addr vx, vy )计算 vx-vy 并将结果赋值到 vx1.
(mul-double/2addr vx, vy )相乘 vx 和 vy1.
(div-double/2addr vx, vy )计算 vx/vy 并将结果赋值到 vx1.
(rem-double/2addr vx,vy )计算 vx % vy 并将结果赋值到 vx1.
(add-int/lit16 vx,vy,lit16 )添加 vy to lit16 并将结果储存到 vx
(sub-int/lit16 vx,vy,lit16 )计算 vy - lit16 并将结果储存到 vx
(mul-int/lit16 vx,vy,lit16 )计算 vy * lit16 并将结果储存到 vx
(div-int/lit16 vx,vy,lit16 )计算 vy / lit16 并将结果储存到 vx
(rem-int/lit16 vx,vy,lit16 )计算 vy % lit16 并将结果储存到 vx
(and-int/lit16 vx,vy,lit16 )计算 vy AND lit16 并将结果储存到 vx
(or-int/lit16 vx,vy,lit16 )计算 vy OR lit16 并将结果储存到 vx
(xor-int/lit16 vx,vy,lit16 )计算 vy XOR lit16 并将结果储存到 vx
(add-int/lit8 vx,vy,lit8 )添加 vy to lit8 并将结果储存到 vx
(sub-int/lit8 vx,vy,lit8 )计算 vy-lit8 并将结果储存到 vx
(mul-int/lit8 vx,vy,lit8 )增加 vy 与 lit8 8-bit 文字常量 并将结果赋值到 vx.
(div-int/lit8 vx,vy,lit8 )计算 vy/lit8 并将结果储存到 vx
(rem-int/lit8 vx,vy,lit8 )计算 vy % lit8 并将结果储存到 vx
(and-int/lit8 vx,vy,lit8 )计算 vy AND lit8 并将结果储存到 vx
(or-int/lit8 vx, vy, lit8 )计算 vy OR lit8 并将结果赋值到 vx.
(xor-int/lit8 vx, vy, lit8 )计算 vy XOR lit8 并将结果赋值到 vx.
(shl-int/lit8 vx, vy, lit8 )转换 v0 留下指定位置
(shr-int/lit8 vx, vy, lit8 )从指定位置读取文字常量并将结果储存到 vx.
(ushr-int/lit8 vx, vy, lit8 )无符号右移 v0 [>>>]
(execute-inline {parameters},inline ID )执行内联方法内联 ID.
(invoke-direct-empty )占位符修改空对象.<init>. 期间使用nop正常执行6.
(iget-quick vx,vy,offset )从vy实例的数据区获得的数据储存到vx
(iget-wide-quick vx,vy,offset )获取对象引用偏移vy值到vx,vx+16.
(iget-object-quick vx,vy,offset )获取对象引用 偏移vy值到vx6.
(iput-quick vx,vy,offset vy)实例数据抵消并将值储存在 vx.
(iput-wide-quick vx,vy,offset )将值储存在 vx,vx+1 to offset in vy instance's data area6.
(iput-object-quick vx,vy,offset )将对象引用值储存在vx来抵消vy实例的数据区域
(invoke-virtual-quick {parameters},vtable offset )调用方法目地址对象
(invoke-virtual-quick/range {parameter range},vtable offset )调用一个方法使用vtable的目标对象
(invoke-super-quick {parameters},vtable offset )调用一个虚方法直接在目标对象的父类直接使用.
(invoke-super-quick/range {register range},vtable offset )调用一个虚方法在目标对象父类使用.
]]
您在这个论坛的权限:
您不能在这个论坛回复主题