有人能解释一下以下代码的作用吗?
addsd xmm0, ds:__xmm@41f00000000000000000000000000000[edx*8]
我发现某些值被添加到浮点寄存器xmm0中,但__xmm@41f00000000000000000000000000000常量的含义是什么?是否有任何文档可以阅读这方面的内容?
以下是我试图理解的完整代码片段:
cvtsi2sd xmm0, [ebp+var_2C8]
mov edx, [ebp+var_2C8]
shr edx, 1Fh
addsd xmm0, ds:__xmm@41f00000000000000000000000000000[edx*8]
ebp+var_2C8是无符号整数值。
- 将ebp+var_2C8转换为浮点数并移动到xmm0寄存器中
- 将ebp+var_2C8移动到edx寄存器中,并向右移动31位
- 从此移位中得出的某些内容被添加到xmm0中。
到底添加了什么到xmm0中? 这个计算有可能有什么目的吗?
更新。
以下是该代码的原始反汇编代码:
cvtsi2sd xmm0,dword ptr [ebp-2C8h]
mov edx,dword ptr [ebp-2C8h]
shr edx,1Fh
addsd xmm0,mmword ptr [edx*8+2685CC0h]
看起来是从常量数组中添加了一些双精度值到xmm0...