lwz 到底发生了什么?
What is actually happening in lwz?
我正在查看以下说明,但我似乎无法理解。我尝试阅读了一些在线 PowerPC 指令参考,但它们对我来说不是很理解。
lwz r4, dword_91C0DB28@l(r28)
双字在 IDA 中的显示方式
dword_91C0DB28: .long 0
调用 lwz 时到底发生了什么,为什么有用?
lwz
从定义的内存地址加载一个字到目标寄存器,并将高 32 位清零。在这种情况下,目标是 r4
,内存地址是 dword_91X0DB28 + r28
.
不对,以上答案不正确。
IDA指令:
lwz r4, dword_91C0DB28@l(r28)
上面的指令访问内存 dword_91C0DB28
本身。
此内存地址是通过 IDA 的分析启发式计算的。
原指令:
lwz r4, -12345(r28)
这一刻真正的指令会像上面那样。
您在 IDA 上看到的地址0x91C0DB28
将在运行时由 $r28
- 12345 生成。
(偏移-12345只是一个例子)
仅供参考: 您可以使用 objdump
等愚蠢的反汇编程序查看原始指令。
我正在查看以下说明,但我似乎无法理解。我尝试阅读了一些在线 PowerPC 指令参考,但它们对我来说不是很理解。
lwz r4, dword_91C0DB28@l(r28)
双字在 IDA 中的显示方式
dword_91C0DB28: .long 0
调用 lwz 时到底发生了什么,为什么有用?
lwz
从定义的内存地址加载一个字到目标寄存器,并将高 32 位清零。在这种情况下,目标是 r4
,内存地址是 dword_91X0DB28 + r28
.
不对,以上答案不正确。
IDA指令:
lwz r4, dword_91C0DB28@l(r28)
上面的指令访问内存 dword_91C0DB28
本身。
此内存地址是通过 IDA 的分析启发式计算的。
原指令:
lwz r4, -12345(r28)
这一刻真正的指令会像上面那样。
您在 IDA 上看到的地址0x91C0DB28
将在运行时由 $r28
- 12345 生成。
(偏移-12345只是一个例子)
仅供参考: 您可以使用 objdump
等愚蠢的反汇编程序查看原始指令。