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

本文详细介绍了Dalvik指令集的格式,包括位描述、指令格式标识,以及Dalvik的DEX文件反汇编工具BakSmali和Dedexer的使用。同时,讲解了Dalvik寄存器、寄存器命令法(v命名法和p命名法)以及Dalvik字节码的类型、方法和字段表示方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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表示指令应该

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值