以下汇编指令做了什么:将-8(%rbp)的值加到%xmm0寄存器中。

9

我正在尝试弄清楚这个汇编指令实际上是做什么的。

addsd   -8(%rbp), %xmm0

我知道这是在x86-64机器上使用SSE2进行浮点加法。同时,我也知道%xmm0是一个寄存器。但我不确定的是-8(%rbp)是什么意思。手册对此有点混淆。
基本上,问题是,-8(%rbp)是否意味着它从寄存器中获取值(可能是rbp的最后8个字节),还是从内存中获取值(从rbp所包含地址的偏移量为-8处获取浮点值)。

2
你的第二个猜想是正确的。它正在访问地址 rbp 偏移 -8 字节处的值。 - Mysticial
嘿,Mysticial,你能指出一个易于理解的参考资料吗? - owagh
AT & T 的语法又让人感到困惑了。 - harold
1个回答

9
你的第二个猜测是正确的。它访问了地址rbp偏移量为-8字节处的值。
假设使用AT&T语法,这条指令会从地址rbp - 8加载一个8字节的double,并将其加到xmm0的低半部分的值上。

你能指出一个易于理解的解释吗?大多数汇编语言教程和参考资料都非常晦涩难懂(或者至少我是这么感觉的)。 - owagh
我现在正在尝试找到一个。但是相对寻址可能有点基础。 - Mysticial

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接