首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
dalvik版本的hello world(转)
时间:
2016-03-03 01:22:50
阅读:
234
评论:
0
收藏:
0
[点我收藏+]
标签:
本文是
Dalvik指令集
的小练习
新建一个文本文件改名为HelloWorld.smali,然后写出HelloWorld类的程序代码如下
[java]
view plain
copy
print
?
.
class
public LHelloWorld; #定义类名
.
super Ljava/lang/Object; #定义父类
.method
public
static main([Ljava/lang/String;)V #声明静态main()方法
.registers
4 #程序中使用v0、v1、v2寄存器和一个参数寄存器
.parameter #一个参数
.prologue #代码起始指令
#空指令
nop
nop
nop
nop
#数据定义指令 v0 =
8; v1 =
5; v2 =
3;
const/
16 v0,
0x8
const/
4 v1,
0x5
const/
4 v2,
0x3
#数据操作指令 v1 = v2;
move v1, v2
#数组操作指令 v0 =
new
int[v0]; v1 = v0
new-array v0, v0, [I
array-length v1, v0
#实例操作指令 v1 =
new StringBuilder();
new-instance v1, Ljava/lang/StringBuilder;
#方法调用指令 v1.init();
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
#跳转指令
if(v0 !=
0)
if-nez v0, :cond_0
goto :goto_0
:cond_0
#数据运算指令 v2 = v2 << v2; (v2 ==
24)
shl-
int v2, v2, v2
#数据转换指令 v2 = (
float) v2;
int-to-
float v2, v2
#数据运算指令 v2 += v2; (v2 ==
48.0)
add-
float v2, v2, v2
#比较指令 v0 = v2 < v2; (v0 ==
0)
cmpl-
float v0, v2, v2
#字段操作指令 PrintStream v0 = System.out; v1 =
"Hello World"
sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
const-string v1,
"Hello World" #构造字符串
#方法调用指令 v0.println(v1); v0.println(v2);
invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
invoke-virtual {v0, v2}, Ljava/io/PrintStream;->println(F)V
#返回指令
:goto_0
return-
void #返回空
.end method
接下来编译smali文件,需要用到smali.jar。在cmd输入如下命令(smali.jar 和 HelloWorld.smali 在同一个目录):
java -jar smali.jar -o classes.dex HelloWorld.smali
将生成的classes.dex 压缩.zip格式
连接
Android
设备或模拟器 ,在cmd输入如下命令
adb push classes.zip /data/local
adb shell dalvikvm -cp /data/local/classes.zip HelloWorld
效果截图
dalvik版本的hello world(转)
标签:
原文地址:http://www.cnblogs.com/QianshaoStudio/p/5236937.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!