以下汇编指令添加了什么-8(%rbp),%xmm0?

owa*_*agh 8 x86 assembly x86-64 memory-access sse2

我试图弄清楚汇编指令实际上做了什么

addsd   -8(%rbp), %xmm0
Run Code Online (Sandbox Code Playgroud)

我知道它是带有SSE2的x86-64机器上的浮点运算.另外,我知道%xmm0是一个寄存器.但是,我不确定的是-8(%rbp)的含义.手册有点令人困惑.

基本上,问题是,-8(%rbp)意味着它从寄存器中获取一个值(可能是rbp的最后8个字节),还是从内存中获取一个值(偏移量为-8的浮点值) rbp中包含的地址.

Mys*_*ial 8

你的第二个猜测是正确的.它正在访问-8从地址偏移的字节值rbp.

假设AT&T语法,该指令double从地址加载一个8字节rbp - 8,并将其添加到下半部分的值xmm0.