smali 语法速查指南
4星 · 超过85%的资源 需积分: 9 124 浏览量
更新于2024-07-28
收藏 53KB DOCX 举报
"这是关于smali语法的参考文档,旨在方便打印和携带。"
在Android应用开发中,Dalvik虚拟机的字节码是以一种名为smali的汇编语言表示的。smali是一种人类可读的格式,用于描述Dalvik虚拟机(DVM)的机器指令。了解smali语法对于反编译、调试或者优化Android应用是至关重要的。
首先,smali文件不支持汉字。在保存smali文件时,应该选择"另存为",并确保文件编码设置为"UTF-8-无BOM",这样可以避免编码问题。
Dalvik Opcodes是Dalvik虚拟机执行的指令集。每个opcode都对应一个特定的操作,例如数据操作、控制流程、方法调用等。Vx值在表格中表示Dalvik寄存器,这些寄存器可以访问16、256或64k个不同的位置。对于操作长整型(long)和双精度浮点型(double)的值,需要两个寄存器,比如,V0寄存器中的一个double值会占用V0和V1寄存器。布尔值(boolean)在存储时,true表示为1,false表示为0,布尔操作会被转化为整数操作处理。
在smali代码中,偏移量(offset)可以是正也可以是负,它从指令起始字节的偏移量开始计算。偏移量始终按字(word)来解析,即每1个偏移增量/减量代表2字节。负偏移量使用两补数格式存储。当前的正偏移会在字节码中按高位字节优先(big-endian)的顺序表示,例如,0F000A00会被编码为0F,00,0A,00的序列。
值得注意的是,由于long和double值占用两个连续的寄存器,所以如果你需要操作这样的值,你需要考虑它们在寄存器中的连续位置,如vy寄存器中的值实际上存在于vy和vy+1寄存器中。
由于这个文档中并未对所有指令提供解释和示例,这可能意味着某些指令在实际应用中并不常见,或者仅通过Android的opcode常量列表得知其存在。
掌握smali语法,开发者可以更深入地理解Android应用的内部工作原理,进行更精细的性能优化,或者在没有源码的情况下进行逆向工程分析。对于Android开发者来说,学习和理解smali是提升技能的重要步骤。
244 浏览量
点击了解资源详情
116 浏览量
2015-08-28 上传
141 浏览量
171 浏览量
2013-03-25 上传
106 浏览量
244 浏览量
wanhaice
- 粉丝: 0
- 资源: 1
最新资源
- 教你几招如何给员工作培训DOC
- 源经理
- aiohttp-vs-tornado-benchmark
- mattn.deno.dev
- Java项目之音乐网站(JSP+SERVLET)源代码
- OCR-book
- 双视效果:模拟双视效果的基本算法-matlab开发
- 建设股份有限公司培训管理办法DOC
- erum18_geocompr
- 宠物收藏家
- ansible-role-systemd-resolved:ansible systemd-resolved 角色
- awesome-load-balancing:精选的负载均衡器和代理列表。 软件,库,帖子,讲座
- 现代时尚客厅3D效果图
- 企业-汇客云-2021q1中国实体商业客流报告.pdf.rar
- 电力设备与新能源行业周报本周碳酸锂价格持续走低各地鼓励独储开展容量租赁-18页.pdf.zip
- 租赁度假:租赁和度假物业