如何在Windows nasm中返回浮点数

时间:2019-04-13 17:52:29

标签: c++ assembly nasm

我想将浮点变量从CPP文件传递到asm文件,对其进行一些数学运算然后将其返回。它适用于整数,适用于双精度显示奇怪的输出(-1。#INDOO)

它应该适用于NASM中的-f win32选项(适用于VS2008 Express Edition和nasm)

我已经检查了它是否适用于整数,是否可以。当我尝试双打时,mov eax, [ebp + 8] retmovsd xmm0, [ebp + 8] ret都不起作用

cpp文件

extern "C" double bar(double k);

int main(int argc, char** argv)
{
    double w[6];

    for(int j = 0; j < 6; j++) {
        w[j] = bar(3.5);
    }
    for(int i = 0; i < 6; i++) {
        printf("%f\n", w[i]);
    }

    return 0;
}

汇编文件

section .text
global _bar
_bar:
    push ebp
    mov ebp, esp
    movsd xmm0, [ebp + 8]

        ; or mov eax, [ebp + 8]

    leave
    ret

现在,它应该为每个元素返回3.5 in,但它返回-1。#INDOO

0 个答案:

没有答案