Dalvik指令学习

来源:互联网 发布:大数据威力的来源包括 编辑:程序博客网 时间:2024/06/10 15:13

任何程序的入门都是hello world,Dalvik指令对应的smali语法学习也从hello world开始!

.class public LHelloWordld; # 定义类名

.super Ljava/lang/Object; # 定义父类

.mehod public static main(Ljava/lang/String;)V # 声明静态main()方法

.registers 4# 程序中使用 v0、v1、v2寄存器与一个参数寄存器

.parameter # 一个参数

.prologue # 代码起始指令

return-void# 返回空

.end method

这是一段Hello World 的架构代码,定义了一个可编译运行的dex文件的最小组成部分。

下面在.prologue指令下面编写具体代码:

# 空指令

nop

nop

nop

#数据定义指令

const/16 v0,0x8

const/4 v1,0x5

const/4 v2,0x3

#数据操作指令

move v1,v2

#数组操作指令

new-array v0,v0,[I

array-length v1,v0

#实例操作指令

new-instance v1,Ljava/lang/StringBuilder;

#方法调用指令

invoke-direct {v1},Ljava/lang/StringBuilder;-><init>()V

#跳转指令

if-nez v0, :cond_0

goto : goto_0

:cond_0

#数据转换指令

int-to-float v2,v2

#数据运算指令

add-float v2,v2,v2

#比较指令

cmpl-float v0,v2,v2

#字段操作指令

sget-object v0,Ljava/lang/System;->out:Ljava/io/PrintStream;

const-string v1,"Hello World" #构造字符串

#方法调用指令

invoke-virtual {v0,v1},Ljava/io/PrintStream;->println(Ljava/lang/String;)V

#返回指令

:goto_0

return-void



原创粉丝点击