Assembly ASM使用C编译,并将返回值从ASM转换为C

Assembly ASM使用C编译,并将返回值从ASM转换为C,assembly,floating-point,x86,Assembly,Floating Point,X86,我正在从头开始学习使用编程来学习asm,但是我找不到任何关于我当前问题的帮助 所以我制作了3个文件(2个在asm中,1个在c中) 我希望我的文件在C打印其他两个程序的输出。 用C语言编写的文件: iclude <stdio.h> float a = 1; float b = 2; float c = 3; extern float asm1 (float a, float b, float c); extern float asm2 (float a, float b, floa

我正在从头开始学习使用编程来学习asm,但是我找不到任何关于我当前问题的帮助

所以我制作了3个文件(2个在asm中,1个在c中)

我希望我的文件在C打印其他两个程序的输出。 用C语言编写的文件:

iclude <stdio.h>

float a = 1;
float b = 2;
float c = 3;

extern float asm1 (float a, float b, float c);
extern float asm2 (float a, float b, float c);


int main ()
{

float count1= 0;
float count2= 0;

count1= asm1 (a, b, c);
count2= asm2 (a, b, c);

printf("Output : %f and %f \n", count1, count2);

return 0;
}

我希望这个文件有x1(x2)作为返回值,它将在printf的C文件中显示。我得到的不是这个——楠。如何执行此操作?

要从函数返回浮点值,您需要在FPU堆栈上保留返回值

像这样

 addf ...
 ; leave the value one the FPU stack, don't fstp

要从函数返回浮点值,需要在FPU堆栈上保留返回值

像这样

 addf ...
 ; leave the value one the FPU stack, don't fstp

我将fstpx1更改为addfx1,并得到错误“没有这样的指令”。我正在使用Ubuntu32B@编辑,如果你的意思是faddp,这是增加了一些东西,现在我不知道什么和为什么。你能说得更清楚吗?我应该在哪里更改它(什么代码部分?)?我将fstp-x1更改为addf-x1,并得到错误“没有这样的指令”。我正在使用Ubuntu32B@编辑,如果你的意思是faddp,这是增加了一些东西,现在我不知道什么和为什么。你能说得更清楚吗?我应该在哪里更改它(什么代码部分?)?