Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 在x86中,寄存器前的括号是什么意思?_Assembly_X86_Windbg_Disassembly_Ida - Fatal编程技术网

Assembly 在x86中,寄存器前的括号是什么意思?

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语法中,方括号用于分组 换句话说,它

在使用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+寄存器寻址模式的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对我来说很熟悉。那么这是相似的。谢谢