首页
社区
课程
招聘
[原创]使用VMP指令模拟ARM条件跳转
发表于: 2019-1-18 15:27 9677

[原创]使用VMP指令模拟ARM条件跳转

2019-1-18 15:27
9677

0.目的:

在不直接使用BEQ BNE BLE... 仅使用NAND ADD... 的前提下,

模拟CPU对BXX条件码的判断,选择出跳转的分支地址。



1.ARM条件码判断原理:

决定指令是否执行的关键,是判断CPSR/FLAG寄存器的某BIT位为0还是为1。

 

以一段 ARM BLT指令为例:

---------------------------------------------------

         ...

.text:000007BC CMP R2, R3

.text:000007C0 BLT loc_798

.text:000007C4 LDR R3, =13688

---------------------------------------------------

(1)当CPSR的N位==V位,BLT loc_798不会执行,

程序将会执行到.text:000007C4 LDR R3, =13688。(简称分支A)


(2)当CPSR的N位!=V位,BLT loc_798将会执行,

程序将会跳转到偏移LOC_798处。(简称分支B)



2.模拟CPU实现BLT:

简单描述模拟的过程就是:

用ADD和AND,来手动计算出CPSR的N位和V位,

最后计算N-V根据结果,选择一个出一个分支地址。

详细过程:

(1)使用AND(CPSR,掩码)将CPSR中除N和V以外的比特位清零。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2019-1-24 13:52 被爱吃菠菜编辑 ,原因:
收藏
免费 10
支持
分享
最新回复 (17)
雪    币: 26205
活跃值: (63302)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
2
感谢分享!
2019-1-18 15:39
0
雪    币: 42
活跃值: (5259)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
wsc
3
给力
2019-1-18 16:02
0
雪    币: 2829
活跃值: (1005)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
虽然看的不是很清楚,但还是点赞下。
2019-1-18 17:26
0
雪    币: 2141
活跃值: (7226)
能力值: ( LV11,RANK:180 )
在线值:
发帖
回帖
粉丝
5
空空飞飞 虽然看的不是很清楚,但还是点赞下。
暂时不方便放上传样本,以后会上传,可以调试分析过程。
最后于 2019-1-21 11:34 被爱吃菠菜编辑 ,原因:
2019-1-18 17:38
0
雪    币: 26136
活跃值: (1409)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
爱吃菠菜 能调试的话可能方便理解, 不过现在不方便放上传样本, 不然就相当于开源了 , 以后会上传。[em_52]
支持一波!
2019-1-18 23:44
1
雪    币: 2141
活跃值: (7226)
能力值: ( LV11,RANK:180 )
在线值:
发帖
回帖
粉丝
7
没几个人看啊,也没混到啥优秀精华,没啥兴趣发了
最后于 2019-1-22 13:58 被爱吃菠菜编辑 ,原因:
2019-1-21 11:18
0
雪    币: 16506
活跃值: (6392)
能力值: ( LV13,RANK:923 )
在线值:
发帖
回帖
粉丝
8
2019-1-21 16:58
0
雪    币: 26136
活跃值: (1409)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
爱吃菠菜 挽梦雪舞 支持一波![em_63]
what ?
2019-1-21 23:31
1
雪    币: 1895
活跃值: (1657)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
10
学习了。
2019-1-22 11:02
0
雪    币: 351
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
赞赞赞
2019-1-22 15:43
0
雪    币: 2644
活跃值: (5088)
能力值: ( LV9,RANK:225 )
在线值:
发帖
回帖
粉丝
12
so cool.
mark.
2019-1-22 16:44
0
雪    币: 1365
活跃值: (3579)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
13
厉害啊
2019-1-22 22:13
0
雪    币: 2166
活跃值: (3226)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
14
嗯,arm的虚拟机这块是空白,未来会有很大的发展空间的,你是用vmp的指令模拟BLT 跳转的是吧?这个研究一下是挺有意思的,但是缺乏实用价值,arm的优势的节能,缺点是性能低,如果用vm指令去模拟跳转实现的话,对性能影响太大了,我觉得做arm的vm的化必须要注意兼顾性能这块,你觉得呢?
2019-1-23 12:27
0
雪    币: 2141
活跃值: (7226)
能力值: ( LV11,RANK:180 )
在线值:
发帖
回帖
粉丝
15
xiaohang 嗯,arm的虚拟机这块是空白,未来会有很大的发展空间的,你是用vmp的指令模拟BLT 跳转的是吧?这个研究一下是挺有意思的,但是缺乏实用价值,arm的优势的节能,缺点是性能低,如果用vm指令去模拟跳转 ...
 效率是有些低,有更先进的方案啦,所以把个分享了。
最后于 2019-1-24 09:34 被爱吃菠菜编辑 ,原因:
2019-1-23 13:36
0
雪    币: 269
活跃值: (906)
能力值: ( LV12,RANK:345 )
在线值:
发帖
回帖
粉丝
16
如果想得精华,建议有条理的梳理下知识点,做个专题。这个离vm差之千里
2019-6-6 10:09
0
雪    币: 2231
活跃值: (1078)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
好贴
2019-6-6 12:12
0
雪    币: 2141
活跃值: (7226)
能力值: ( LV11,RANK:180 )
在线值:
发帖
回帖
粉丝
18
AJISky 如果想得精华,建议有条理的梳理下知识点,做个专题。这个离vm差之千里
无妨o(∩_∩)o 
最后于 2019-9-14 21:13 被爱吃菠菜编辑 ,原因:
2019-6-10 11:50
0
游客
登录 | 注册 方可回帖
返回
//