注册前的括号在 x86 中是什么意思?
What does parenthesis BEFORE register mean in x86?
在使用 IDA Pro 和 WinDbg 调试应用程序时,我遇到了以下语句。
mov esi, ds:(dword_16C6 - 16B2h)[esi]
为简化起见,假设
mov esi, ds:(ABC)[esi]
这里的(ABC)
是什么意思?
在英特尔语法中,圆括号用于分组,就像在数学中一样。这样做是因为
ds:dword_16C6 - 16B2h[esi]
可能会被解释为
(ds:dword_16C6) - (16B2h[esi])
这没有任何意义。
在 AT&T 语法中,方括号用于分组。
换句话说,它是一种复杂的 ds:[esi + dword_16C6 - 16B2h]
或 ds:dword_16C6[esi - 16B2h]
书写方式,它们也是有效的 MASM 语法(我认为)。
有些人可能会说过于复杂,但它确实与此反汇编程序用于符号 + 寄存器寻址模式的 symbol[index]
语法保持一致。
在使用 IDA Pro 和 WinDbg 调试应用程序时,我遇到了以下语句。
mov esi, ds:(dword_16C6 - 16B2h)[esi]
为简化起见,假设
mov esi, ds:(ABC)[esi]
这里的(ABC)
是什么意思?
在英特尔语法中,圆括号用于分组,就像在数学中一样。这样做是因为
ds:dword_16C6 - 16B2h[esi]
可能会被解释为
(ds:dword_16C6) - (16B2h[esi])
这没有任何意义。
在 AT&T 语法中,方括号用于分组。
换句话说,它是一种复杂的 ds:[esi + dword_16C6 - 16B2h]
或 ds:dword_16C6[esi - 16B2h]
书写方式,它们也是有效的 MASM 语法(我认为)。
有些人可能会说过于复杂,但它确实与此反汇编程序用于符号 + 寄存器寻址模式的 symbol[index]
语法保持一致。