小编han*_*fan的帖子

程序计数器的值如何递增?

我有一个指令块,我想知道电脑寄存器是如何工作的。维基百科上说,pc 寄存器保存下一条要执行的指令的值,但是,查看二进制忍者的反汇编图以查找同一指令块,似乎这并不完全正确。

这是二进制忍者的反汇编图的一部分,其中每个内存加载前面都写入了加载发生的内存地址。
在此输入图像描述

000080ec         ldr r3, [pc, #76] -> 0x813c = 0x80f0 + 0x4c -> pc = 80f0 ?? (shouldnt it be 80ee).
000080ee         cmp r3, #0
000080f0         it eq
000080f2         ldreq r3, [pc, #68] -> 0x8138 = 0x80f4 + 0x44 -> pc = 80f4 (this makes sense).
000080f4         mov sp, r3
000080f6         sub.w sl, r3, #65536 (edited) 
Run Code Online (Sandbox Code Playgroud)

这也发生在代码中,并不总是电脑保存下一条要执行的指令的地址..有什么我应该考虑的吗?

assembly arm reverse-engineering program-counter

1
推荐指数
1
解决办法
1873
查看次数