-
-
[原创]使用VMP指令模拟ARM条件跳转
-
发表于:
2019-1-18 15:27
9674
-
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
被爱吃菠菜编辑
,原因: