Dalvik指令一条操作码对应一条唯一的指令格式,而一条指令格式可能对应多个操作码。
例如,7010 0400 0000 0e00
opCode为0x70的操作码,它对应的指令格式是35c,格式35c对应如下几个指令:
[A=5] op {vC, vD, vE, vF, vG}, meth@BBBB
.........……
[A=1] op {vC}, kind@BBBB
[A=0] op {}, kind@BBBB
这条指令对应于:[A=1] op {vC}, kind@BBBB
而opCode为0x6e同样对应于指令格式35c,opCode 0x63对应的汇编指令为invoke-virtual
指令格式中,"king@"总共有6种类型,分别为:
meth:
field:
type:
string:
vtaoff:
fieldoff:
有的时候,在指令格式中不会明确说明"king@"是meth或field等,而是只是隐式的说为"kind@",在这种情况下不影响指令确定”kind@“类型,因为每种指令已经约定好了"kind@"是什么类型,比如说opCode 0x70对应的"kind@"为方法类型(meth)