Assembly 在x86中,寄存器前的括号是什么意思?
在使用IDA Pro和WinDbg调试应用程序时,我遇到了以下语句Assembly 在x86中,寄存器前的括号是什么意思?,assembly,x86,windbg,disassembly,ida,Assembly,X86,Windbg,Disassembly,Ida,在使用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语法中,方括号用于分组 换句话说,它
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+寄存器寻址模式的symbol[index]语法一致。在英特尔语法中,圆括号用于分组,就像在数学中一样。这是因为
ds:dword_16C6 - 16B2h[esi]
可能被解释为
(ds:dword_16C6) - (16B2h[esi])
这没有任何意义
在AT&T语法中,方括号用于分组
换句话说,它是一种复杂的ds:[esi+dword_16C6-16B2h]或ds:dword_16C6[esi-16B2h]编写方法,我认为这两种语法都是有效的MASM语法
有些人可能会说不必要的复杂,但它确实与此反汇编程序用于symbol+寄存器寻址模式的symbol[index]语法保持一致。。。。写ds:[esi+DWORD16C6-16B2h]是一种复杂的方法,我认为它是有效的MASM语法。我确实这么认为,是的。好吧,8%ebp对我来说很熟悉。那么这是相似的。谢谢你。。。写ds:[esi+DWORD16C6-16B2h]是一种复杂的方法,我认为它是有效的MASM语法。我确实这么认为,是的。好吧,8%ebp对我来说很熟悉。那么这是相似的。谢谢