【发布时间】:2016-03-30 18:46:16
【问题描述】:
我正在查看以下说明,但我似乎无法理解。我尝试阅读一些在线 PowerPC 指令参考资料,但它们对我来说不是很容易理解。
lwz r4, dword_91C0DB28@l(r28)
dword 在 IDA 中的显示方式
dword_91C0DB28: .long 0
调用 lwz 时究竟发生了什么,为什么它有用?
【问题讨论】:
-
lwz在给定的内存地址加载一个字并将高 32 位清零。有什么不清楚的地方? -
@SamiKuhmonen 如果我们要加载的地址是
dword_91C0DB28,那么r28的目的是什么? -
"我们要加载的地址是dword_91C0DB28"。它不是。
dword_91C0DB28只是位移,而基地址在r28中给出。有效地址为 base_address + sign_extend(displacement)。在这种情况下,r28可能包含dword_91C0DB28所在部分的开头地址。 -
@Michael 这就是它显示的加载到 r28
lis r28, ((dword_91C0DB28+0x10000)@h)中的内容。我仍然不确定它在计算什么或为什么需要这样做?
标签: assembly powerpc instructions