MASM32函数,它将两个双精度数相乘并返回它

时间:2014-03-28 17:46:23

标签: assembly x86 sse masm32 sse2

我需要编写应该使用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位(双)内容,以便它与给定的声明一起使用?

1 个答案:

答案 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值。