我需要编写应该使用SSE2将弧度转换为度数的函数。 这是为了分配。我不知道该怎么做。
_180_PI数字等于180 / 3.141592 ......
我的功能需要返回return rad * _180_PI
这个函数在dll中,这就是它的声明:
__declspec(dllexport) double __stdcall RadToDegAsm(double rad);
我有:
.DATA
_180_PI dq 57.2957795130823208767981548141
.CODE
RadToDegAsm PROC rad: QWORD
movupd xmm0, rad
mulsd xmm0, _180_PI
;I need to somehow return it
RadToDegAsm ENDP
主要问题: 如何返回xmm0寄存器的64位(双)内容,以便它与给定的声明一起使用?
答案 0 :(得分:3)
搞定了:
.DATA
_180_PI dq 57.2957795130823208767981548141
.CODE
RadToDegAsm PROC rad: QWORD
LOCAL returnValue: QWORD
movsd xmm0, rad
mulsd xmm0, _180_PI
movsd returnValue, xmm0
fld return
ret
RadToDegAsm ENDP
通过浮点寄存器(fld)指令返回double值。