Assembly 如何解释此地址-0x80(%rbp,%rax,4)
我目前正试图通过分析简单的C代码片段来学习汇编语言(以及不同编译器选项的效果)。现在,我艰难地完成了以下说明:Assembly 如何解释此地址-0x80(%rbp,%rax,4),assembly,x86-64,att,Assembly,X86 64,Att,我目前正试图通过分析简单的C代码片段来学习汇编语言(以及不同编译器选项的效果)。现在,我艰难地完成了以下说明: mov %edx,-0x80(%rbp,%rax,4) 我不理解的是目标地址的表达式-0x80(%rbp,%rax,4)。 指令将值分配给循环中的本地数组。机器命令将%edx的内容复制到%rbp+4*%rax-0x80给定的地址。似乎%rax保存着该数组的索引,%rbp-0x80是基址 请看一看,以更好地理解AT&T语法 -0x80(%rbp,%rax,4) = *(%rbp + %
mov %edx,-0x80(%rbp,%rax,4)
我不理解的是目标地址的表达式-0x80(%rbp,%rax,4)
。
指令将值分配给循环中的本地数组。机器命令将
%edx
的内容复制到%rbp+4*%rax-0x80
给定的地址。似乎%rax
保存着该数组的索引,%rbp-0x80
是基址
请看一看,以更好地理解AT&T语法
-0x80(%rbp,%rax,4) = *(%rbp + %rax * 4 + (-0x80))
因此,以下说明:
mov %edx,-0x80(%rbp,%rax,4)
意味着让CPU将寄存器%edx的值移动到地址
(%rbp+%rax*4+(-0x80))
,这是at&T风格的程序集。感谢您的回答-链接非常有用