1、Smali背景:
Smali,Baksmali分别是指安卓系统里的Java虚拟机(Dalvik)所使用的一种.dex格式文件的汇编器,反汇编器。其语法是一种宽松式的Jasmin/dedexer语法,而且它实现了.dex格式所有功能(注解,调试信息,线路信息等)。
Smali,Baksmali分别是冰岛语中编译器,反编译器的叫法。也许你会问为什么是冰岛语呢,因为Dalvik是一个冰岛渔村名字。
2、简单介绍
Davlik字节码中,寄存器都是32位的,能够支持任何类型,64位类型(Long/Double)用2个寄存器表示;
根据一些文档说明,以及实践检测,Dalvik字节码有两种类型:原始类型;引用类型。熟悉JAVA的同学,应该很快能够反应过来,原始类型也就是我们JAVA中的8中基础类型;引用类型,在smali中主要是对象和数组。事实上smali语法就是根据java来的,可以理解成java的一种变种。
3、基础类型
有了上面的基础介绍,我们能够很快理解,smali的语法类型。这里我们用两张表列出数据类型,左边的一张表示稍微简略一些,不能明白的同学可以对照右边的一起看: