Dalvik指令集代码格式及调用规范

1、Dalvik指令格式

指令语法由指令的位描述与指令格式标识来决定。

位描述

约定如下:

  • 每16位的字采用空格分隔开来。
  • 每个字母表示四位,每个字母按顺序从高字节开始,排列到低字节。每四位之间可能使用竖线“|”来表示不同的内容。
  • 顺序采用A-Z的单个大写字母作为一个4位的操作码,op表示一个8位的操作码。
  • “Ø”来表示这字段的所有位为0值。

例:A|G|op BBBB F|E|D|C
此条指令由三个16位的字组成。

  • 第一个16位:A|G|op,高8位为A和G,低字节为操作码op。
  • 第二个16位:BBBB,表示一个16位的偏移值。
  • 第三个16位:F、E、D、C,这里表示寄存器参数。

指令格式标识

约定如下:

  • 指令格式标识大多由三个字符组成,前两个是数字,最后一个是字母。
  • 第一个数字表示指令由多少个16位的字组成
  • 第二个数字表示指令最多使用寄存器的个数。特殊标记“r”标识使用一定范围内的寄存器。
  • 第三个字母为类型码,表示指令用到的额外数据的类型。取值如下:
助记符 位大小 说明
b 8 8位有符号立即数
c 16,32 常量池索引
f 16 接口常量(仅对静态链接格式有效)
h 16 有符号立即数(32位或64位数的高值位,低值位为0)
i 32 立即数,有符号整数或32位浮点数
l 64 立即数,有符号整数或64位双精度浮点数
m 16 方法常量(仅对静态链接格式有效)
n 4 4位的立即数
s 16 短整型立即数
t 8,16,32 跳转、分支
x 0 无额外数据

特殊情况:末尾可能会多出另一个字母,如果是s表示指令采用静态链接,如果是i表示指令应该被内联处理。

例: 22x

  • 第一个数字2表示指令由两个16位字组成
  • 第二个数字2表示指令使用到2个寄存器
  • 第三个字母x表示没有使用到额外的数据

Dalvik语法说明ÿ

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值