全球旧事资料 分类
Dalvik虚拟机操作码
作者:GaborPaller翻译:YULIANGMAXv10表中的vx、vy、vz表示某个Dalvik寄存器。根据不同指令可以访问16、256或64K寄存器。表中lit4、lit8、lit16、lit32、lit64表示字面值(直接赋值),数字是值所占用位的长度。lo
g和double型的值占用两个寄存器,例:一个在v0寄存器的double值实际占用v0v1两个寄存器。boolea
值的存储实际是1和0,1为真、0为假;boolea
型的值实际是转成i
t型的值进行操作。所有例子的字节序都采用高位存储格式,例:0F000A00的编译为0F000A00存储。有一些指令没有说明和例子,因为我没有在正常使用中看到过这些指令,它们的存在是从这里知道的:A
droidopcodeco
sta
tlist。Opcode操作码hex0001Opcode
ame操作码名称
opmovevxvy无操作Expla
atio
说明0000
opExample示例
移动vy的内容到vx。两个寄存器0110movev0v1都必须在最初的256寄存器范围移动v1寄存器中的内容到v0。以内。
020304
移动vy的内容到vx。可能在6vymovefrom16v02001900movefrom16v0v254K寄存器范围以内,vx则是在而xvy移动v25寄存器中的内容到v0。最初的256寄存器范围以内。move16movewide未知未知
注4注4
05
移动一个lo
gdouble值,从vmovewidefromy到vx。vy可能在64K寄存器范05160000movewidefrom16v22v016vxvy围以内,而vx则是在最初的256移动v0v1寄存器中的内容到v22v23。寄存器范围以内。movewide16未知
注4
0607
moveobjectv移动对象引用,从vy到vx。xvy
0781moveobjectv1v8移动v8寄存器中的对象引用到v1。
08090A
移动对象引用,从vy到vx。vymoveobjectfr08011500moveobjectfrom16v1v21可以处理64K寄存器地址,vx可om16vxvy移动v21寄存器中的对象引用到v1。以处理256寄存器地址。moveobject16未知注4moveresultvx移动上一次方法调用的返回值到0A00moveresultv0vx。移动上一次方法调用的返回值到v0。
0B
0B02moveresultwidev2moveresultwi移动上一次方法调用的lo
gdou移动上一次方法调用的lo
gdouble型返回值devxble型返回值到vxvx1。到v2v3。moveresultob移动上一次方法调用的对象引用0C00moveresultobjectv0jectvx返回值到vx。移动上一次方法调用的对象引用返回值到v0。0D19moveexceptio
v25moveexceptio
当方法调用抛出异常时移动异常当方法调用抛出异常时移动异常对象引用到v2vx对象引用到vx。5。retur
void返回空值。0E00retur
void返回值为void,即无返回值,并非返回
ull。
0C
0D
0E
f0F1011
retur
vxretur
widevx
返回在vx寄存器的值。
0F00retur
v0返回v0寄存器中的值r
好听全球资料 返回顶部