在c ++中汇编内联(float和_cdecl)

时间:2018-06-06 22:54:23

标签: c++ assembly

我正在编写一个多模块应用程序(c ++和汇编)。我想使用__cdcel:

创建一个非整数变量的函数(例如float)
extern "C" float __cdecl foo(float* arr, float a, float b );

我应该写什么来在汇编代码中使用这些变量

.586
PUBLIC _foo
.model flat
.code 
_foo proc 
;...
;I want to use my arr, a and b here
;...
ret 
_foo endp
end

对我而言,如果我的变量是整数,我会使用ebp,但在我的情况下我有浮点数,所以我应该写什么? 我使用的是英特尔x86 ASM

1 个答案:

答案 0 :(得分:-2)

您将在XMM0,1,2和3中将三个浮点数传递给ASM。在使用C ++调用函数之前设置一个断点,然后使用F11进入ASM并检查已传递值的寄存器。

参见Calling Conventions 看看Compiling 64-bit Assembler Code in Visual Studio