Dalvik虚拟机指令集与字节码格式对照表,根据此表可以快速查阅字节码与指令集对应关系。
转载请注明出处:http://www.zhangchuany.com/dalvik/dalvik-bytecode-instructionset-comparedtab/
字节码ID | 指令格式ID | 助记符/语法 | 说明 | 指令格式ID | 指令格式 | 指令格式语法 | |
---|---|---|---|---|---|---|---|
00 | 10x | nop | 10x | ØØ|op | op | ||
01 | 12x | move vA,vB | 将vB寄存器中的值赋予vA寄存器,vA和vB寄存器都是16位 | 12x | B|A|op | op vA, vB | |
02 | 22x | move/from16 vAA,vBBBB | 将vBBBB寄存器中的值赋予vAA寄存器,源寄存器vBBBB为16位目标寄存器vAA为8位 | 22x | AA|op BBBB | op vAA, vBBBB | |
03 | 32x | move/16 vAAAA,vBBBB | 将vBBBB寄存器中的值赋予vAAAA,源寄存器和目标寄存器都是16位 | 32x | ØØ|op AAAA BBBB | op vAAAA, vBBBB | |
04 | 12x | move-wide vA,vB | 将vB寄存器中的值赋予vA,源寄存器和目标寄存器都是四位 | 12x | B|A|op | op vA, vB | |
05 | 22x | move-wide/from16 vAA,vBBBB | 将vBBBB寄存器中的值赋予vAA寄存器,源寄存器vBBBB为16位目标寄存器vAA为8位 | 22x | AA|op BBBB | op vAA, vBBBB | |
06 | 32x | move-wide/16 vAAAA,vBBBB | 将vBBBB寄存器中的值赋予vAAAA,源寄存器和目标寄存器都是16位 | 32x | ØØ|op AAAA BBBB | op vAAAA, vBBBB | |
07 | 12x | move-object vA,vB | 将vB寄存器中的对象赋予vA寄存器,源寄存器与目标寄存器都是四位 | 12x | B|A|op | op vA, vB | |
08 | 22x | move-object/from16 vAA, vBBBB | 将vBBBB寄存器中的对象赋予vAA寄存器,源寄存器是16位,目标寄存器是8位 | 22x | AA|op BBBB | op vAA, vBBBB | |
09 | 32x | move-object/16 vAAAA,vBBBB | 将vBBBB寄存器中的值赋予vAAAA,源寄存器和目标寄存器都是16位 | 32x | ØØ|op AAAA BBBB | op vAAAA, vBBBB | |
0a | 11x | move-result vAA | 将最新的invoke类型指令操作的单字非对象结果移到指定的寄存器中 | 11x | AA|op | op vAA | |
0b | 11x | move-result-wide vAA | 将最新的invoke类型指令操作的双字节非对象结果移到指定的寄存器中 | 11x | AA|op | op vAA | |
0c | 11x | move-result-object vAA | 将最新的invoke类型指令操作的对象结果移到指定的寄存器中 | 11x | AA|op | op vAA | |
0d | 11x | move-exception vAA | 将刚刚捕获的异常保存到给定寄存器中。 | 11x | AA|op | op vAA | |
0e | 10x | return-void | 函数以void形式返回 | 10x | ØØ|op | op | |
0f | 11x | return vAA | 返回一个32位非对象类型的值,返回值为8位寄存器 | 11x | AA|op | op vAA | |
10 | 11x | return-wide vAA | 返回一个64位非对象类型的值,返回值为8位寄存器 | 11x | AA|op | op vAA | |
11 | 11x | return-object vAA | 返回一个对象类型的值,返回值为8位寄存器 | 11x | AA|op | op vAA | |
12 | 11n | const/4 vA, #+B | 将数值符号扩展为32位后赋予寄存器vA | 11n | B|A|op | op vA, #+B | |
13 | 21s | const/16 vAA, #+BBBB | 将数值符号扩展为32位后赋予寄存器vAA | 21s | AA|op BBBB | op vAA, #+BBBB | |
14 | 31i | const vAA, #+BBBBBBBB | 将数值赋予寄存器vAA | 31i | AA|op BBBBlo BBBBhi | op vAA, #+BBBBBBBB | |
15 | 21h | const/high16 vAA, #+BBBB0000 | 将数值右边的0扩展为32位后赋予寄存器vAA | 21h | AA|op BBBB | [op vAA, #+BBBB0000,op vAA, #+BBBB000000000000] | |
16 | 21s | const-wide/16 vAA, #+BBBB | 将数值符号扩展为64位后赋予寄存器vAA | 21s | AA|op BBBB | op vAA, #+BBBB | |
17 | 31i | const-wide/32 vAA, #+BBBBBBBB | 将数值符号扩展为64位后赋予寄存器vAA | 31i | AA|op BBBBlo BBBBhi | op vAA, #+BBBBBBBB | |
18 | 51l | const-wide vAA, #+BBBBBBBBBBBBBBBB | 将数值赋予寄存器vAA | 51l | AA|op BBBBlo BBBB BBBB BBBBhi | op vAA, #+BBBBBBBBBBBBBBBB | |
19 | 21h | const-wide/high16 vAA, #+BBBB000000000000 | 将数值右边的0扩展为64位后赋予寄存器vAA | 21h | AA|op BBBB | [op vAA, #+BBBB0000,op vAA, #+BBBB000000000000] | |
1a | 21c | const-string vAA, string@BBBB | 通过给定的字符串所有构造字符串并将其赋予寄存器中。 | 21c | AA|op BBBB | [op vAA, type@BBBB,op vAA, field@BBBB,op vAA, method_handle@BBBB,op vAA, proto@BBBB,op vAA, string@BBBB] | |
1b | 31c | const-string/jumbo vAA, string@BBBBBBBB | 通过给定的字符串所有构造字符串并将其赋予寄存器中。 | 31c | AA|op BBBBlo BBBBhi | op vAA, string@BBBBBBBB | |
1c | 21c | const-class vAA, type@BBBB | 通过给定的索引获取的类引用移到指定的寄存器中。如果指定的类型是原始类型,则将存储对原始类型的退化类的引用。 | 21c | AA|op BBBB | [op vAA, type@BBBB,op vAA, field@BBBB,op vAA, method_handle@BBBB,op vAA, proto@BBBB,op vAA, string@BBBB] | |
1d | 11x | monitor-enter vAA | 获取指定对象的监视锁。 | 11x | AA|op | op vAA | |
1e | 11x | monitor-exit vAA | 释放指定对象的监视锁。 | 11x | AA|op | op vAA | |
1f | 21c | check-cast vAA, type@BBBB | 将vAA寄存器中的对象转换成指定的类型,如果给定寄存器中的引用不能转型为指定的类型,则抛出 ClassCastException。 | 21c | AA|op BBBB | [op vAA, type@BBBB,op vAA, field@BBBB,op vAA, method_handle@BBBB,op vAA, proto@BBBB,op vAA, string@BBBB] | |
20 | 22c | instance-of vA,vB,type@CCCC | 用于判断vB寄存器中的对象引用是否可以转换成指定的类型,如果可以就为vA寄存器赋值1,否则为vA寄存器中赋值0 | 22c | B|A|op CCCC | [op vA, vB, type@CCCC,op vA, vB, field@CCCC] | |
21 | 12x | array-length vA,vB | 将指定数组的长度赋值给给定目标寄存器 | 12x | B|A|op | op vA, vB | |
22 | 21c | new-instance vAA,type@BBBB | 根据指定的类型构造新实例,并将对象引用赋值到目标寄存器vAA中。该类型不能使数组类 | 21c | AA|op BBBB | [op vAA, type@BBBB,op vAA, field@BBBB,op vAA, method_handle@BBBB,op vAA, proto@BBBB,op vAA, string@BBBB] | |
23 | 22c | new-array vA,vB,type@CCCC | 根据指定的类型(type@CCCC)和大小(vB)构造新数组。该类型必须是数组类型。 | 22c | B|A|op CCCC | [op vA, vB, type@CCCC,op vA, vB, field@CCCC] | |
24 | 35c | filled-new-array {vC,vD,vE,vF,vG},type@BBBB | 构造指定类型(type@BBBB)和大小(vA)的数组并填充数组内容,该类型必须是数组类型。数组的内容必须是单字类型(即不接受 long 或 double 类型的数组,但接受引用类型的数组)。vA寄存器是隐含使用的,除了指定数组的大小还指定了参数的个数。vC-vG是所使用的参数寄存器序列 | 35c | A|G|op BBBB F|E|D|C | [[A=5] op {vC, vD, vE, vF, vG}, meth@BBBB,[A=5] op {vC, vD, vE, vF, vG}, site@BBBB,[A=5] op {vC, vD, vE, vF, vG}, type@BBBB,[A=4] op {vC, vD, vE, vF}, kind@BBBB,[A=3] op {vC, vD, vE}, kind@BBBB,[A=2] op {vC, vD}, kind@BBBB,[A=1] op {vC}, kind@BBBB,[A=0] op {}, kind@BBBB] | |
25 | 3rc | filled-new-array/range {vCCCC .. vNNNN},type@BBBB | 根据给定类型和大小构造数组,并使用提供的内容填充该数组。相关的说明和限制与上文所述 filled-new-array 的相同,只是参数寄存器使用range字节码后缀来指定取值范围。vC是第一个寄存器参数下一个寄存器命名方式为 vN=vA+vC-1 | 3rc | AA|op BBBB CCCC | [op {vCCCC .. vNNNN}, meth@BBBB,op {vCCCC .. vNNNN}, site@BBBB,op {vCCCC .. vNNNN}, type@BBBB] | |
26 | 31t | fill-array-data vAA,+BBBBBBBB | 使用指定的数据填充数组,vAA寄存器为数组引用(引用必须是基础类型的数组),在指令后会紧跟一个数据表 | 31t | AA|op BBBBlo BBBBhi | op vAA, +BBBBBBBB | |
27 | 11x | throw vAA | 抛出vAA寄存器中指定类型的异常。 | 11x | AA|op | op vAA | |
28 | 10t | goto +AA | 无条件跳转到指定偏移出,偏移量AA(8位)不能为0 | 10t | AA|op | op +AA | |
29 | 20t | goto/16 +AAAA | 无条件跳转到指定偏移出,偏移量AAAA(16位)不能为0 | 20t | ØØ|op AAAA | op +AAAA | |
2a | 30t | goto/32 +AAAAAAAA | 无条件跳转到指定便宜出,A(32位) | 30t | ØØ|op AAAAlo AAAAhi | op +AAAAAAAA | |
2b | 31t | packed-switch vAA, +BBBBBBBB | 分支跳转指令,vAA寄存器位switch分支中需要判断的值,BBBBBBBB指向一个sparse-switch-payload格式的偏移表,表中的值是无规律的偏移量 | 31t | AA|op BBBBlo BBBBhi | op vAA, +BBBBBBBB | |
2c | 31t | sparse-switch vAA, +BBBBBBBB | 分支跳转指令,vAA寄存器位switch分支中需要判断的值,BBBBBBBB指向一个sparse-switch-payload格式的偏移表,表中的值是无规律的偏移量 | 31t | AA|op BBBBlo BBBBhi | op vAA, +BBBBBBBB | |
2d | 23x | cmpl-float vAA, vBB, vCC | 比较两个单精度浮点数,如果vBB寄存器的值大于vCC寄存器的值,则结果为-1。如果等于则结果为0,否则如果小于则结果为1,vAA寄存器存放比较结果。 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
2e | 23x | cmpg-float vAA, vBB, vCC | 比较两个单精度浮点数,如果vBB寄存器的值大于vCC寄存器的值,则结果为1。如果等于则结果为0,否则如果小于则结果为-1,vAA寄存器存放比较结果。 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
2f | 23x | cmpl-double vAA, vBB, vCC | 比较两个双精度浮点数,如果vBB寄存器的值大于vCC寄存器的值,则结果为-1。如果等于则结果为0,否则如果小于则结果为1,vAA寄存器存放比较结果。 | 23x | AA|op CC|BB | AA|op CC|BB | |
30 | 23x | cmpg-double vAA, vBB, vCC | 比较两个双精度浮点数,如果vBB寄存器的值大于vCC寄存器的值,则结果为1。如果等于则结果为0,否则如果小于则结果为-1,vAA寄存器存放比较结果。 | 23x | AA|op CC|BB | AA|op CC|BB | |
31 | 23x | cmp-long vAA, vBB, vCC | 比较两个长整数,如果vBB寄存器的值大于vCC寄存器的值,则结果为1。如果等于则结果为0,否则如果小于则结果为-1,vAA寄存器存放比较结果。 | 23x | AA|op CC|BB | AA|op CC|BB | |
32 | 22t | if-eq vA, vB, +CCCC | 如果vA等于vB则跳转,其Java语法为“if(vA==vB)” | 22t | B|A|op CCCC | op vA, vB, +CCCC | |
33 | 22t | if-ne vA, vB, +CCCC | 如果vA不等于vB则跳转,其Java语法为“if(vA!=vB)” | 22t | B|A|op CCCC | op vA, vB, +CCCC | |
34 | 22t | if-lt vA, vB, +CCCC | 如果vA小于vB则跳转,其Java语法为”if(vA<vB)” | 22t | B|A|op CCCC | op vA, vB, +CCCC | |
35 | 22t | if-ge vA, vB, +CCCC | 如果vA大于等于vB则跳转,其Java语法为”if(vA>=vB)” | 22t | B|A|op CCCC | op vA, vB, +CCCC | |
36 | 22t | if-gt vA, vB, +CCCC | 如果vA大于vB则跳转,其Java语法为“if(vA>=vB)” | 22t | B|A|op CCCC | op vA, vB, +CCCC | |
37 | 22t | if-le vA, vB, +CCCC | 如果vA小于等于vB则跳转,其Java语法为”if(vA<=vB)” | 22t | B|A|op CCCC | op vA, vB, +CCCC | |
38 | 21t | if-eqz vAA, +BBBB | 如果vAA为0则跳转,其Java语法为”if(!vAA) | 21t | AA|op BBBB | op vAA, +BBBB | |
39 | 21t | if-nez vAA, +BBBB | 如果vAA不为0则跳转,其Java语法为”if(vAA)” | 21t | AA|op BBBB | op vAA, +BBBB | |
3a | 21t | if-ltz vAA, +BBBB | 如果vAA小于0则跳转,其Java语法为“if(vAA<0)” | 21t | AA|op BBBB | op vAA, +BBBB | |
3b | 21t | if-gez vAA, +BBBB | 如果vAA大于等于0则跳转,其Java语法为“if(vAA>=0)” | 21t | AA|op BBBB | op vAA, +BBBB | |
3c | 21t | if-gtz vAA, +BBBB | 如果vAA大于0则跳转,其Java语法为”if(vAA>0)” | 21t | AA|op BBBB | op vAA, +BBBB | |
3d | 21t | if-lez vAA, +BBBB | 如果vAA小于等于0则跳转,其Java语法为”if(vAA<=)” | 21t | AA|op BBBB | op vAA, +BBBB | |
44 | 23x | aget vAA, vBB, vCC | 对vBB寄存器指定的数组元素进行取值与赋值,vCC寄存器用于指定数组元素的索引。vAA寄存器用于存放读取到的值 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
45 | 23x | aget-wide vAA, vBB, vCC | 对vBB寄存器指定的数组元素进行取值与赋值,vCC寄存器用于指定数组元素的索引。vAA寄存器用于存放读取到的值 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
46 | 23x | aget-object vAA, vBB, vCC | 对vBB寄存器指定的数组元素进行取值与赋值,vCC寄存器用于指定数组元素的索引。vAA寄存器用于存放读取到的值 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
47 | 23x | aget-boolean vAA, vBB, vCC | 对vBB寄存器指定的数组元素进行取值与赋值,vCC寄存器用于指定数组元素的索引。vAA寄存器用于存放读取到的值 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
48 | 23x | aget-byte vAA, vBB, vCC | 对vBB寄存器指定的数组元素进行取值与赋值,vCC寄存器用于指定数组元素的索引。vAA寄存器用于存放读取到的值 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
49 | 23x | aget-char vAA, vBB, vCC | 对vBB寄存器指定的数组元素进行取值与赋值,vCC寄存器用于指定数组元素的索引。vAA寄存器用于存放读取到的值 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
4a | 23x | aget-short vAA, vBB, vCC | 对vBB寄存器指定的数组元素进行取值与赋值,vCC寄存器用于指定数组元素的索引。vAA寄存器用于存放读取到的值 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
4b | 23x | aput vAA, vBB, vCC | 对vBB寄存器指定的数组元素进行取值与赋值,vCC寄存器用于指定数组元素的索引。vAA寄存器用于存放需要设置的值 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
4c | 23x | aput-wide vAA, vBB, vCC | 对vBB寄存器指定的数组元素进行取值与赋值,vCC寄存器用于指定数组元素的索引。vAA寄存器用于存放需要设置的值 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
4d | 23x | aput-object vAA, vBB, vCC | 对vBB寄存器指定的数组元素进行取值与赋值,vCC寄存器用于指定数组元素的索引。vAA寄存器用于存放需要设置的值 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
4e | 23x | aput-boolean vAA, vBB, vCC | 对vBB寄存器指定的数组元素进行取值与赋值,vCC寄存器用于指定数组元素的索引。vAA寄存器用于存放需要设置的值 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
4f | 23x | aput-byte vAA, vBB, vCC | 对vBB寄存器指定的数组元素进行取值与赋值,vCC寄存器用于指定数组元素的索引。vAA寄存器用于存放需要设置的值 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
50 | 23x | aput-char vAA, vBB, vCC | 对vBB寄存器指定的数组元素进行取值与赋值,vCC寄存器用于指定数组元素的索引。vAA寄存器用于存放需要设置的值 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
51 | 23x | aput-short vAA, vBB, vCC | 对vBB寄存器指定的数组元素进行取值与赋值,vCC寄存器用于指定数组元素的索引。vAA寄存器用于存放需要设置的值 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
52 | 22c | iget vA, vB, field@CCCC | 字段操作指令用于对对象实例的字段进行读操作,根据访问的字段类型的不同,字段操作指令后面会紧跟字段类型的后缀。例如,iget-short指令读取实例字段的值的类型为短整型 | 22c | B|A|op CCCC | [op vA, vB, type@CCCC,op vA, vB, field@CCCC] | |
53 | 22c | iget-wide vA, vB, field@CCCC | 字段操作指令用于对对象实例的字段进行读操作,根据访问的字段类型的不同,字段操作指令后面会紧跟字段类型的后缀。例如,iget-short指令读取实例字段的值的类型为短整型 | 22c | B|A|op CCCC | [op vA, vB, type@CCCC,op vA, vB, field@CCCC] | |
54 | 22c | iget-object vA, vB, field@CCCC | 字段操作指令用于对对象实例的字段进行读操作,根据访问的字段类型的不同,字段操作指令后面会紧跟字段类型的后缀。例如,iget-short指令读取实例字段的值的类型为短整型 | 22c | B|A|op CCCC | [op vA, vB, type@CCCC,op vA, vB, field@CCCC] | |
55 | 22c | iget-boolean vA, vB, field@CCCC | 字段操作指令用于对对象实例的字段进行读操作,根据访问的字段类型的不同,字段操作指令后面会紧跟字段类型的后缀。例如,iget-short指令读取实例字段的值的类型为短整型 | 22c | B|A|op CCCC | [op vA, vB, type@CCCC,op vA, vB, field@CCCC] | |
56 | 22c | iget-byte vA, vB, field@CCCC | 字段操作指令用于对对象实例的字段进行读操作,根据访问的字段类型的不同,字段操作指令后面会紧跟字段类型的后缀。例如,iget-short指令读取实例字段的值的类型为短整型 | 22c | B|A|op CCCC | [op vA, vB, type@CCCC,op vA, vB, field@CCCC] | |
57 | 22c | iget-char vA, vB, field@CCCC | 字段操作指令用于对对象实例的字段进行读操作,根据访问的字段类型的不同,字段操作指令后面会紧跟字段类型的后缀。例如,iget-short指令读取实例字段的值的类型为短整型 | 22c | B|A|op CCCC | [op vA, vB, type@CCCC,op vA, vB, field@CCCC] | |
58 | 22c | iget-short vA, vB, field@CCCC | 字段操作指令用于对对象实例的字段进行读操作,根据访问的字段类型的不同,字段操作指令后面会紧跟字段类型的后缀。例如,iget-short指令读取实例字段的值的类型为短整型 | 22c | B|A|op CCCC | [op vA, vB, type@CCCC,op vA, vB, field@CCCC] | |
59 | 22c | iput vA, vB, field@CCCC | 字段操作指令用于对对象实例的字段进行写操作,根据访问的字段类型的不同,字段操作指令后面会紧跟字段类型的后缀。例如,iput-short指令用于设置实例字段的值的类型为短整型 | 22c | B|A|op CCCC | [op vA, vB, type@CCCC,op vA, vB, field@CCCC] | |
5a | 22c | iput-wide vA, vB, field@CCCC | 字段操作指令用于对对象实例的字段进行写操作,根据访问的字段类型的不同,字段操作指令后面会紧跟字段类型的后缀。例如,iput-short指令用于设置实例字段的值的类型为短整型 | 22c | B|A|op CCCC | [op vA, vB, type@CCCC,op vA, vB, field@CCCC] | |
5b | 22c | iput-object vA, vB, field@CCCC | 字段操作指令用于对对象实例的字段进行写操作,根据访问的字段类型的不同,字段操作指令后面会紧跟字段类型的后缀。例如,iput-short指令用于设置实例字段的值的类型为短整型 | 22c | B|A|op CCCC | [op vA, vB, type@CCCC,op vA, vB, field@CCCC] | |
5c | 22c | iput-boolean vA, vB, field@CCCC | 字段操作指令用于对对象实例的字段进行写操作,根据访问的字段类型的不同,字段操作指令后面会紧跟字段类型的后缀。例如,iput-short指令用于设置实例字段的值的类型为短整型 | 22c | B|A|op CCCC | [op vA, vB, type@CCCC,op vA, vB, field@CCCC] | |
5d | 22c | iput-byte vA, vB, field@CCCC | 字段操作指令用于对对象实例的字段进行写操作,根据访问的字段类型的不同,字段操作指令后面会紧跟字段类型的后缀。例如,iput-short指令用于设置实例字段的值的类型为短整型 | 22c | B|A|op CCCC | [op vA, vB, type@CCCC,op vA, vB, field@CCCC] | |
5e | 22c | iput-char vA, vB, field@CCCC | 字段操作指令用于对对象实例的字段进行写操作,根据访问的字段类型的不同,字段操作指令后面会紧跟字段类型的后缀。例如,iput-short指令用于设置实例字段的值的类型为短整型 | 22c | B|A|op CCCC | [op vA, vB, type@CCCC,op vA, vB, field@CCCC] | |
5f | 22c | iput-short vA, vB, field@CCCC | 字段操作指令用于对对象实例的字段进行写操作,根据访问的字段类型的不同,字段操作指令后面会紧跟字段类型的后缀。例如,iput-short指令用于设置实例字段的值的类型为短整型 | 22c | B|A|op CCCC | [op vA, vB, type@CCCC,op vA, vB, field@CCCC] | |
60 | 21c | sget vAA, field@BBBB | 字段操作指令用于对对象的静态字段进行读操作,根据访问的字段类型的不同,字段操作指令后面会紧跟字段类型的后缀。例如,sget-byte指令用于读取字段的值的类型为字节码类型 | 21c | AA|op BBBB | [op vAA, type@BBBB,op vAA, field@BBBB,op vAA, method_handle@BBBB,op vAA, proto@BBBB,op vAA, string@BBBB] | |
61 | 21c | sget-wide vAA, field@BBBB | 字段操作指令用于对对象的静态字段进行读操作,根据访问的字段类型的不同,字段操作指令后面会紧跟字段类型的后缀。例如,sget-byte指令用于读取字段的值的类型为字节码类型 | 21c | AA|op BBBB | [op vAA, type@BBBB,op vAA, field@BBBB,op vAA, method_handle@BBBB,op vAA, proto@BBBB,op vAA, string@BBBB] | |
62 | 21c | sget-object vAA, field@BBBB | 字段操作指令用于对对象的静态字段进行读操作,根据访问的字段类型的不同,字段操作指令后面会紧跟字段类型的后缀。例如,sget-byte指令用于读取字段的值的类型为字节码类型 | 21c | AA|op BBBB | [op vAA, type@BBBB,op vAA, field@BBBB,op vAA, method_handle@BBBB,op vAA, proto@BBBB,op vAA, string@BBBB] | |
63 | 21c | sget-boolean vAA, field@BBBB | 字段操作指令用于对对象的静态字段进行读操作,根据访问的字段类型的不同,字段操作指令后面会紧跟字段类型的后缀。例如,sget-byte指令用于读取字段的值的类型为字节码类型 | 21c | AA|op BBBB | [op vAA, type@BBBB,op vAA, field@BBBB,op vAA, method_handle@BBBB,op vAA, proto@BBBB,op vAA, string@BBBB] | |
64 | 21c | sget-byte vAA, field@BBBB | 字段操作指令用于对对象的静态字段进行读操作,根据访问的字段类型的不同,字段操作指令后面会紧跟字段类型的后缀。例如,sget-byte指令用于读取字段的值的类型为字节码类型 | 21c | AA|op BBBB | [op vAA, type@BBBB,op vAA, field@BBBB,op vAA, method_handle@BBBB,op vAA, proto@BBBB,op vAA, string@BBBB] | |
65 | 21c | sget-char vAA, field@BBBB | 字段操作指令用于对对象的静态字段进行读操作,根据访问的字段类型的不同,字段操作指令后面会紧跟字段类型的后缀。例如,sget-byte指令用于读取字段的值的类型为字节码类型 | 21c | AA|op BBBB | [op vAA, type@BBBB,op vAA, field@BBBB,op vAA, method_handle@BBBB,op vAA, proto@BBBB,op vAA, string@BBBB] | |
66 | 21c | sget-short vAA, field@BBBB | 字段操作指令用于对对象的静态字段进行读操作,根据访问的字段类型的不同,字段操作指令后面会紧跟字段类型的后缀。例如,sget-byte指令用于读取字段的值的类型为字节码类型 | 21c | AA|op BBBB | [op vAA, type@BBBB,op vAA, field@BBBB,op vAA, method_handle@BBBB,op vAA, proto@BBBB,op vAA, string@BBBB] | |
67 | 21c | sput vAA, field@BBBB | 字段操作指令用于对对象的静态字段进行写操作,根据访问的字段类型的不同,字段操作指令后面会紧跟字段类型的后缀。例如,sput-byte指令用于设置字段的值的类型为字节码类型 | 21c | AA|op BBBB | [op vAA, type@BBBB,op vAA, field@BBBB,op vAA, method_handle@BBBB,op vAA, proto@BBBB,op vAA, string@BBBB] | |
68 | 21c | sput-wide vAA, field@BBBB | 字段操作指令用于对对象的静态字段进行写操作,根据访问的字段类型的不同,字段操作指令后面会紧跟字段类型的后缀。例如,sput-byte指令用于设置字段的值的类型为字节码类型 | 21c | AA|op BBBB | [op vAA, type@BBBB,op vAA, field@BBBB,op vAA, method_handle@BBBB,op vAA, proto@BBBB,op vAA, string@BBBB] | |
69 | 21c | sput-object vAA, field@BBBB | 字段操作指令用于对对象的静态字段进行写操作,根据访问的字段类型的不同,字段操作指令后面会紧跟字段类型的后缀。例如,sput-byte指令用于设置字段的值的类型为字节码类型 | 21c | AA|op BBBB | [op vAA, type@BBBB,op vAA, field@BBBB,op vAA, method_handle@BBBB,op vAA, proto@BBBB,op vAA, string@BBBB] | |
6a | 21c | sput-boolean vAA, field@BBBB | 字段操作指令用于对对象的静态字段进行写操作,根据访问的字段类型的不同,字段操作指令后面会紧跟字段类型的后缀。例如,sput-byte指令用于设置字段的值的类型为字节码类型 | 21c | AA|op BBBB | [op vAA, type@BBBB,op vAA, field@BBBB,op vAA, method_handle@BBBB,op vAA, proto@BBBB,op vAA, string@BBBB] | |
6b | 21c | sput-byte vAA, field@BBBB | 字段操作指令用于对对象的静态字段进行写操作,根据访问的字段类型的不同,字段操作指令后面会紧跟字段类型的后缀。例如,sput-byte指令用于设置字段的值的类型为字节码类型 | 21c | AA|op BBBB | [op vAA, type@BBBB,op vAA, field@BBBB,op vAA, method_handle@BBBB,op vAA, proto@BBBB,op vAA, string@BBBB] | |
6c | 21c | sput-char vAA, field@BBBB | 字段操作指令用于对对象的静态字段进行写操作,根据访问的字段类型的不同,字段操作指令后面会紧跟字段类型的后缀。例如,sput-byte指令用于设置字段的值的类型为字节码类型 | 21c | AA|op BBBB | [op vAA, type@BBBB,op vAA, field@BBBB,op vAA, method_handle@BBBB,op vAA, proto@BBBB,op vAA, string@BBBB] | |
6d | 21c | sput-short vAA, field@BBBB | 字段操作指令用于对对象的静态字段进行写操作,根据访问的字段类型的不同,字段操作指令后面会紧跟字段类型的后缀。例如,sput-byte指令用于设置字段的值的类型为字节码类型 | 21c | AA|op BBBB | [op vAA, type@BBBB,op vAA, field@BBBB,op vAA, method_handle@BBBB,op vAA, proto@BBBB,op vAA, string@BBBB] | |
6e | 35c | invoke-virtual {vC,vD,vE,vF,vG}, meth@BBBB | 用于调用实例的虚方法 ,meth@BBBB表示16位方法引用索引,vC-vG表示方法所需参数寄存器 | 35c | A|G|op BBBB F|E|D|C | [A=5] op {vC, vD, vE, vF, vG}, meth@BBBB,[A=5] op {vC, vD, vE, vF, vG}, site@BBBB,[A=5] op {vC, vD, vE, vF, vG}, type@BBBB,[A=4] op {vC, vD, vE, vF}, kind@BBBB,[A=3] op {vC, vD, vE}, kind@BBBB,[A=2] op {vC, vD}, kind@BBBB,[A=1] op {vC}, kind@BBBB,[A=0] op {}, kind@BBBB | |
6f | 35c | invoke-super {vC,vD,vE,vF,vG}, meth@BBBB | 用于调用实例的父方法 ,meth@BBBB表示16位方法引用索引,vC-vG表示方法所需参数寄存器 | 35c | A|G|op BBBB F|E|D|C | [A=5] op {vC, vD, vE, vF, vG}, meth@BBBB,[A=5] op {vC, vD, vE, vF, vG}, site@BBBB,[A=5] op {vC, vD, vE, vF, vG}, type@BBBB,[A=4] op {vC, vD, vE, vF}, kind@BBBB,[A=3] op {vC, vD, vE}, kind@BBBB,[A=2] op {vC, vD}, kind@BBBB,[A=1] op {vC}, kind@BBBB,[A=0] op {}, kind@BBBB | |
70 | 35c | invoke-direct {vC,vD,vE,vF,vG}, meth@BBBB | 用于调用实例的直接方法,meth@BBBB表示16位方法引用索引,vC-vG表示方法所需参数寄存器 | 35c | A|G|op BBBB F|E|D|C | [A=5] op {vC, vD, vE, vF, vG}, meth@BBBB,[A=5] op {vC, vD, vE, vF, vG}, site@BBBB,[A=5] op {vC, vD, vE, vF, vG}, type@BBBB,[A=4] op {vC, vD, vE, vF}, kind@BBBB,[A=3] op {vC, vD, vE}, kind@BBBB,[A=2] op {vC, vD}, kind@BBBB,[A=1] op {vC}, kind@BBBB,[A=0] op {}, kind@BBBB | |
71 | 35c | invoke-static {vC,vD,vE,vF,vG}, meth@BBBB | 用于调用实例的静态方法,meth@BBBB表示16位方法引用索引,vC-vG表示方法所需参数寄存器 | 35c | A|G|op BBBB F|E|D|C | [A=5] op {vC, vD, vE, vF, vG}, meth@BBBB,[A=5] op {vC, vD, vE, vF, vG}, site@BBBB,[A=5] op {vC, vD, vE, vF, vG}, type@BBBB,[A=4] op {vC, vD, vE, vF}, kind@BBBB,[A=3] op {vC, vD, vE}, kind@BBBB,[A=2] op {vC, vD}, kind@BBBB,[A=1] op {vC}, kind@BBBB,[A=0] op {}, kind@BBBB | |
72 | 35c | invoke-interface {vC,vD,vE,vF,vG}, meth@BBBB | 用于调用实例的接口方法,meth@BBBB表示16位方法引用索引,vC-vG表示方法所需参数寄存器 | 35c | A|G|op BBBB F|E|D|C | [A=5] op {vC, vD, vE, vF, vG}, meth@BBBB,[A=5] op {vC, vD, vE, vF, vG}, site@BBBB,[A=5] op {vC, vD, vE, vF, vG}, type@BBBB,[A=4] op {vC, vD, vE, vF}, kind@BBBB,[A=3] op {vC, vD, vE}, kind@BBBB,[A=2] op {vC, vD}, kind@BBBB,[A=1] op {vC}, kind@BBBB,[A=0] op {}, kind@BBBB | |
74 | 3rc | invoke-virtual/range {vCCCC .. vNNNN}, meth@BBBB | 用于调用实例的虚方法 ,meth@BBBB表示16位方法引用索引 | 3rc | AA|op BBBB CCCC | [op {vCCCC .. vNNNN}, meth@BBBB,op {vCCCC .. vNNNN}, site@BBBB,op {vCCCC .. vNNNN}, type@BBBB] | |
75 | 3rc | invoke-super/range {vCCCC .. vNNNN}, meth@BBBB | 用于调用实例的父方法 ,meth@BBBB表示16位方法引用索引 | 3rc | AA|op BBBB CCCC | [op {vCCCC .. vNNNN}, meth@BBBB,op {vCCCC .. vNNNN}, site@BBBB,op {vCCCC .. vNNNN}, type@BBBB] | |
76 | 3rc | invoke-direct/range {vCCCC .. vNNNN}, meth@BBBB | 用于调用实例的直接方法,meth@BBBB表示16位方法引用索引 | 3rc | AA|op BBBB CCCC | [op {vCCCC .. vNNNN}, meth@BBBB,op {vCCCC .. vNNNN}, site@BBBB,op {vCCCC .. vNNNN}, type@BBBB] | |
77 | 3rc | invoke-static/range {vCCCC .. vNNNN}, meth@BBBB | 用于调用实例的静态方法,meth@BBBB表示16位方法引用索引 | 3rc | AA|op BBBB CCCC | [op {vCCCC .. vNNNN}, meth@BBBB,op {vCCCC .. vNNNN}, site@BBBB,op {vCCCC .. vNNNN}, type@BBBB] | |
78 | 3rc | invoke-interface/range {vCCCC .. vNNNN}, meth@BBBB | 用于调用实例的接口方法,meth@BBBB表示16位方法引用索引 | 3rc | AA|op BBBB CCCC | [op {vCCCC .. vNNNN}, meth@BBBB,op {vCCCC .. vNNNN}, site@BBBB,op {vCCCC .. vNNNN}, type@BBBB] | |
7b | 12x | neg-int vA, vB | 用于对整型数求补。vB寄存器中存放了需要转换的数据,转换结果保存在vA寄存器中。 | 12x | B|A|op | op vA, vB | |
7c | 12x | not-int vA, vB | 用于对整型数求反。vB寄存器中存放了需要转换的数据,转换结果保存在vA寄存器中。 | 12x | B|A|op | op vA, vB | |
7d | 12x | neg-long vA, vB | 用于对长整型数求补。vB寄存器中存放了需要转换的数据,转换结果保存在vA寄存器中。 | 12x | B|A|op | op vA, vB | |
7e | 12x | not-long vA, vB | 用于对长整型数求反。vB寄存器中存放了需要转换的数据,转换结果保存在vA寄存器中。 | 12x | B|A|op | op vA, vB | |
7f | 12x | neg-float vA, vB | 用于对单精度浮点型数求补。vB寄存器中存放了需要转换的数据,转换结果保存在vA寄存器中。 | 12x | B|A|op | op vA, vB | |
80 | 12x | neg-double vA, vB | 用于对双精度浮点型数求补。vB寄存器中存放了需要转换的数据,转换结果保存在vA寄存器中。 | 12x | B|A|op | op vA, vB | |
81 | 12x | int-to-long vA, vB | 用于将整型数转换为长整型数。vB寄存器中存放了需要转换的数据,转换结果保存在vA寄存器中。 | 12x | B|A|op | op vA, vB | |
82 | 12x | int-to-float vA, vB | 用于将整型数转换为单精度浮点型。vB寄存器中存放了需要转换的数据,转换结果保存在vA寄存器中。 | 12x | B|A|op | op vA, vB | |
83 | 12x | int-to-double vA, vB | 用于将整型数转换为双精度浮点型。vB寄存器中存放了需要转换的数据,转换结果保存在vA寄存器中。 | 12x | B|A|op | op vA, vB | |
84 | 12x | long-to-int vA, vB | 用于将长整型数转换为整型数。vB寄存器中存放了需要转换的数据,转换结果保存在vA寄存器中。 | 12x | B|A|op | op vA, vB | |
85 | 12x | long-to-float vA, vB | 用于将长整型数转换为单精度浮点型。vB寄存器中存放了需要转换的数据,转换结果保存在vA寄存器中。 | 12x | B|A|op | op vA, vB | |
86 | 12x | long-to-double vA, vB | 用于将长整型数转换为双精度浮点型。vB寄存器中存放了需要转换的数据,转换结果保存在vA寄存器中。 | 12x | B|A|op | op vA, vB | |
87 | 12x | float-to-int vA, vB | 用于将单精度浮点型转换为整数型。vB寄存器中存放了需要转换的数据,转换结果保存在vA寄存器中。 | 12x | B|A|op | op vA, vB | |
88 | 12x | float-to-long vA, vB | 用于将单精度浮点型转换为长整型。vB寄存器中存放了需要转换的数据,转换结果保存在vA寄存器中。 | 12x | B|A|op | op vA, vB | |
89 | 12x | float-to-double vA, vB | 用于将单精度浮点型转换为双精度浮点型。vB寄存器中存放了需要转换的数据,转换结果保存在vA寄存器中。 | 12x | B|A|op | op vA, vB | |
8a | 12x | double-to-int vA, vB | 用于将双精度浮点型转换为整数型。vB寄存器中存放了需要转换的数据,转换结果保存在vA寄存器中。 | 12x | B|A|op | op vA, vB | |
8b | 12x | double-to-long vA, vB | 用于将双精度浮点型转换为长整型。vB寄存器中存放了需要转换的数据,转换结果保存在vA寄存器中。 | 12x | B|A|op | op vA, vB | |
8c | 12x | double-to-float vA, vB | 用于将双精度浮点型转换为单精度浮点型。vB寄存器中存放了需要转换的数据,转换结果保存在vA寄存器中。 | 12x | B|A|op | op vA, vB | |
8d | 12x | int-to-byte vA, vB | 用于将整型数转换为字节型。vB寄存器中存放了需要转换的数据,转换结果保存在vA寄存器中。 | 12x | B|A|op | op vA, vB | |
8e | 12x | int-to-char vA, vB | 用于将整数型转换为字符型。vB寄存器中存放了需要转换的数据,转换结果保存在vA寄存器中。 | 12x | B|A|op | op vA, vB | |
8f | 12x | int-to-short vA, vB | 用于将整型数转换为短整型。vB寄存器中存放了需要转换的数据,转换结果保存在vA寄存器中。 | 12x | B|A|op | op vA, vB | |
90 | 23x | add-int vAA, vBB, vCC | vBB寄存器与vCC寄存器进行加法运算,将运算结果保存到vAA寄存器中 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
91 | 23x | sub-int vAA, vBB, vCC | vBB寄存器与vCC寄存器进行减法运算,将运算结果保存到vAA寄存器中 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
92 | 23x | mul-int vAA, vBB, vCC | vBB寄存器与vCC寄存器进行乘法运算,将运算结果保存到vAA寄存器中 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
93 | 23x | div-int vAA, vBB, vCC | vBB寄存器与vCC寄存器进行除法运算,将运算结果保存到vAA寄存器中 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
94 | 23x | rem-int vAA, vBB, vCC | vBB寄存器与vCC寄存器进行模运(vBB % vCC)算,将运算结果保存到vAA寄存器中 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
95 | 23x | and-int vAA, vBB, vCC | vBB寄存器与vCC寄存器进行与运(vBB and vCC)算,将运算结果保存到vAA寄存器中 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
96 | 23x | or-int vAA, vBB, vCC | vBB寄存器与vCC寄存器进行或(vBB or vCC)运算,将运算结果保存到vAA寄存器中 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
97 | 23x | xor-int vAA, vBB, vCC | vBB寄存器与vCC寄存器进行异或(vBB XOR vCC)运算,将运算结果保存到vAA寄存器中 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
98 | 23x | shl-int vAA, vBB, vCC | 将vBB寄存器的值(有符号数)左移vCC位(vBB<<vCC),将运算结果保存到vAA寄存器中 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
99 | 23x | shr-int vAA, vBB, vCC | 将vBB寄存器的值(有符号数)右移vCC位(vBB>>vCC),将运算结果保存到vAA寄存器中 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
9a | 23x | ushr-int vAA, vBB, vCC | 将vBB寄存器的值(无符号数)右移vCC位(vBB>>vCC),将运算结果保存到vAA寄存器中 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
9b | 23x | add-long vAA, vBB, vCC | vBB寄存器与vCC寄存器进行加法运算,将运算结果保存到vAA寄存器中 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
9c | 23x | sub-long vAA, vBB, vCC | vBB寄存器与vCC寄存器进行减法运算,将运算结果保存到vAA寄存器中 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
9d | 23x | mul-long vAA, vBB, vCC | vBB寄存器与vCC寄存器进行乘法运算,将运算结果保存到vAA寄存器中 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
9e | 23x | div-long vAA, vBB, vCC | vBB寄存器与vCC寄存器进行除法运算,将运算结果保存到vAA寄存器中 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
9f | 23x | rem-long vAA, vBB, vCC | vBB寄存器与vCC寄存器进行模运(vBB % vCC)算,将运算结果保存到vAA寄存器中 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
a0 | 23x | and-long vAA, vBB, vCC | vBB寄存器与vCC寄存器进行与运(vBB and vCC)算,将运算结果保存到vAA寄存器中 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
a1 | 23x | or-long vAA, vBB, vCC | vBB寄存器与vCC寄存器进行或(vBB or vCC)运算,将运算结果保存到vAA寄存器中 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
a2 | 23x | xor-long vAA, vBB, vCC | vBB寄存器与vCC寄存器进行异或(vBB XOR vCC)运算,将运算结果保存到vAA寄存器中 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
a3 | 23x | shl-long vAA, vBB, vCC | 将vBB寄存器的值(有符号数)左移vCC位(vBB<<vCC),将运算结果保存到vAA寄存器中 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
a4 | 23x | shr-long vAA, vBB, vCC | 将vBB寄存器的值(有符号数)右移vCC位(vBB>>vCC),将运算结果保存到vAA寄存器中 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
a5 | 23x | ushr-long vAA, vBB, vCC | 将vBB寄存器的值(无符号数)右移vCC位(vBB>>vCC),将运算结果保存到vAA寄存器中 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
a6 | 23x | add-float vAA, vBB, vCC | vBB寄存器与vCC寄存器进行加法运算,将运算结果保存到vAA寄存器中 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
a7 | 23x | sub-float vAA, vBB, vCC | vBB寄存器与vCC寄存器进行减法运算,将运算结果保存到vAA寄存器中 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
a8 | 23x | mul-float vAA, vBB, vCC | vBB寄存器与vCC寄存器进行乘法运算,将运算结果保存到vAA寄存器中 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
a9 | 23x | div-float vAA, vBB, vCC | vBB寄存器与vCC寄存器进行除法运算,将运算结果保存到vAA寄存器中 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
aa | 23x | rem-float vAA, vBB, vCC | vBB寄存器与vCC寄存器进行模运(vBB % vCC)算,将运算结果保存到vAA寄存器中 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
ab | 23x | add-double vAA, vBB, vCC | vBB寄存器与vCC寄存器进行加法运算,将运算结果保存到vAA寄存器中 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
ac | 23x | sub-double vAA, vBB, vCC | vBB寄存器与vCC寄存器进行减法运算,将运算结果保存到vAA寄存器中 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
ad | 23x | mul-double vAA, vBB, vCC | vBB寄存器与vCC寄存器进行乘法运算,将运算结果保存到vAA寄存器中 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
ae | 23x | div-double vAA, vBB, vCC | vBB寄存器与vCC寄存器进行除法运算,将运算结果保存到vAA寄存器中 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
af | 23x | rem-double vAA, vBB, vCC | vBB寄存器与vCC寄存器进行模运(vBB % vCC)算,将运算结果保存到vAA寄存器中 | 23x | AA|op CC|BB | op vAA, vBB, vCC | |
b0 | 12x | add-int/2addr vA,vB | vA寄存器与vB寄存器进行加法运算,将运算结果保存到vA寄存器中 | 12x | B|A|op | op vA, vB | |
b1 | 12x | sub-int/2addr vA,vB | vA寄存器与vB寄存器进行减法运算,将运算结果保存到vA寄存器中 | 12x | B|A|op | op vA, vB | |
b2 | 12x | mul-int/2addr vA,vB | vA寄存器与vB寄存器进行乘法运算,将运算结果保存到vA寄存器中 | 12x | B|A|op | op vA, vB | |
b3 | 12x | div-int/2addr vA,vB | vA寄存器与vB寄存器进行除法运算,将运算结果保存到vA寄存器中 | 12x | B|A|op | op vA, vB | |
b4 | 12x | rem-int/2addr vA,vB | vA寄存器与vB寄存器进行模运(vA % vB)算,将运算结果保存到vA寄存器中 | 12x | B|A|op | op vA, vB | |
b5 | 12x | and-int/2addr vA,vB | vA寄存器与vB寄存器进行与运(vA and vB)算,将运算结果保存到vA寄存器中 | 12x | B|A|op | op vA, vB | |
b6 | 12x | or-int/2addr vA,vB | vA寄存器与vB寄存器进行或(vA or vB)运算,将运算结果保存到vA寄存器中 | 12x | B|A|op | op vA, vB | |
b7 | 12x | xor-int/2addr vA,vB | vA寄存器与vB寄存器进行异或(vA XOR vB)运算,将运算结果保存到vA寄存器中 | 12x | B|A|op | op vA, vB | |
b8 | 12x | shl-int/2addr vA,vB | 将vA寄存器的值(有符号数)左移vB位(vA<<vB),将运算结果保存到vA寄存器中 | 12x | B|A|op | op vA, vB | |
b9 | 12x | shr-int/2addr vA,vB | 将vA寄存器的值(有符号数)右移vB位(vA>>vB),将运算结果保存到vA寄存器中 | 12x | B|A|op | op vA, vB | |
ba | 12x | ushr-int/2addr vA,vB | 将vA寄存器的值(无符号数)右移vB位(vA>>vB),将运算结果保存到vA寄存器中 | 12x | B|A|op | op vA, vB | |
bb | 12x | add-long/2addr vA,vB | vA寄存器与vB寄存器进行加法运算,将运算结果保存到vA寄存器中 | 12x | B|A|op | op vA, vB | |
bc | 12x | sub-long/2addr vA,vB | vA寄存器与vB寄存器进行减法运算,将运算结果保存到vA寄存器中 | 12x | B|A|op | op vA, vB | |
bd | 12x | mul-long/2addr vA,vB | vA寄存器与vB寄存器进行乘法运算,将运算结果保存到vA寄存器中 | 12x | B|A|op | op vA, vB | |
be | 12x | div-long/2addr vA,vB | vA寄存器与vB寄存器进行除法运算,将运算结果保存到vA寄存器中 | 12x | B|A|op | op vA, vB | |
bf | 12x | rem-long/2addr vA,vB | vA寄存器与vB寄存器进行模运(vA % vB)算,将运算结果保存到vA寄存器中 | 12x | B|A|op | op vA, vB | |
c0 | 12x | and-long/2addr vA,vB | vA寄存器与vB寄存器进行与运(vA and vB)算,将运算结果保存到vA寄存器中 | 12x | B|A|op | op vA, vB | |
c1 | 12x | or-long/2addr vA,vB | vA寄存器与vB寄存器进行或(vA or vB)运算,将运算结果保存到vA寄存器中 | 12x | B|A|op | op vA, vB | |
c2 | 12x | xor-long/2addr vA,vB | vA寄存器与vB寄存器进行异或(vA XOR vB)运算,将运算结果保存到vA寄存器中 | 12x | B|A|op | op vA, vB | |
c3 | 12x | shl-long/2addr vA,vB | 将vA寄存器的值(有符号数)左移vB位(vA<<vB),将运算结果保存到vA寄存器中 | 12x | B|A|op | op vA, vB | |
c4 | 12x | shr-long/2addr vA,vB | 将vA寄存器的值(有符号数)右移vB位(vA>>vB),将运算结果保存到vA寄存器中 | 12x | B|A|op | op vA, vB | |
c5 | 12x | ushr-long/2addr vA,vB | 将vA寄存器的值(无符号数)右移vB位(vA>>vB),将运算结果保存到vA寄存器中 | 12x | B|A|op | op vA, vB | |
c6 | 12x | add-float/2addr vA,vB | vA寄存器与vB寄存器进行加法运算,将运算结果保存到vA寄存器中 | 12x | B|A|op | op vA, vB | |
c7 | 12x | sub-float/2addr vA,vB | vA寄存器与vB寄存器进行减法运算,将运算结果保存到vA寄存器中 | 12x | B|A|op | op vA, vB | |
c8 | 12x | mul-float/2addr vA,vB | vA寄存器与vB寄存器进行乘法运算,将运算结果保存到vA寄存器中 | 12x | B|A|op | op vA, vB | |
c9 | 12x | div-float/2addr vA,vB | vA寄存器与vB寄存器进行除法运算,将运算结果保存到vA寄存器中 | 12x | B|A|op | op vA, vB | |
ca | 12x | rem-float/2addr vA,vB | vA寄存器与vB寄存器进行模运(vA % vB)算,将运算结果保存到vA寄存器中 | 12x | B|A|op | op vA, vB | |
cb | 12x | add-double/2addr vA,vB | vA寄存器与vB寄存器进行加法运算,将运算结果保存到vA寄存器中 | 12x | B|A|op | op vA, vB | |
cc | 12x | sub-double/2addr vA,vB | vA寄存器与vB寄存器进行减法运算,将运算结果保存到vA寄存器中 | 12x | B|A|op | op vA, vB | |
cd | 12x | mul-double/2addr vA,vB | vA寄存器与vB寄存器进行乘法运算,将运算结果保存到vA寄存器中 | 12x | B|A|op | op vA, vB | |
ce | 12x | div-double/2addr vA,vB | vA寄存器与vB寄存器进行除法运算,将运算结果保存到vA寄存器中 | 12x | B|A|op | op vA, vB | |
cf | 12x | rem-double/2addr vA,vB | vA寄存器与vB寄存器进行模运(vA % vB)算,将运算结果保存到vA寄存器中 | 12x | B|A|op | op vA, vB | |
d0 | 22s | add-int/lit16 | 22s | ||||
d1 | 22s | rsub-int | 22s | ||||
d2 | 22s | mul-int/lit16 | 22s | ||||
d3 | 22s | div-int/lit16 | 22s | ||||
d4 | 22s | rem-int/lit16 | 22s | ||||
d5 | 22s | and-int/lit16 | 22s | ||||
d6 | 22s | or-int/lit16 | 22s | ||||
d7 | 22s | xor-int/lit16 | 22s | ||||
d8 | 22b | add-int/lit8 | 22b | ||||
d9 | 22b | rsub-int/lit8 | 22b | ||||
da | 22b | mul-int/lit8 | 22b | ||||
db | 22b | div-int/lit8 | 22b | ||||
dc | 22b | rem-int/lit8 | 22b | ||||
dd | 22b | and-int/lit8 | 22b | ||||
de | 22b | or-int/lit8 | 22b | ||||
df | 22b | xor-int/lit8 | 22b | ||||
e0 | 22b | shl-int/lit8 | 22b | ||||
e1 | 22b | shr-int/lit8 | 22b | ||||
e2 | 22b | ushr-int/lit8 | 22b |