我想将浮点变量从CPP文件传递到asm文件,对其进行一些数学运算然后将其返回。它适用于整数,适用于双精度显示奇怪的输出(-1。#INDOO)
它应该适用于NASM中的-f win32选项(适用于VS2008 Express Edition和nasm)
我已经检查了它是否适用于整数,是否可以。当我尝试双打时,mov eax, [ebp + 8] ret
和movsd 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