是否可以使用GCC从C函数生成汇编语言函数,以便可以从汇编语言程序中调用它们?我知道gcc将C编译为机器代码(可以很容易地将其拆分成汇编语言),并且我已经知道可以对inline assembly language functions in C进行编译,但是我还没有找到从汇编语言程序调用C函数的方法,它是基本上与此相反。从x86汇编语言中调用C函数
在这里,我试图在x86汇编程序中内联C函数。如果内联不可行,那么是否有其他方法可以从汇编语言程序中调用C函数?
.686p
.model flat,stdcall
.stack 2048
.data
.code
start:
invoke ExitProcess, 0
printSomething PROC ;now I'm attempting to inline a C function here
void printSomething(thingToPrint){
printf("This is a C function that I want to invoke from an assembly language program.");
printf("There must be some way to do this - is it possible somehow?");
}
printSomething ENDP
end start
我不记得所有的细节,但你只需要编译目标文件并将它们链接在一起。您只需要知道调用该函数时使用的调用约定。 – 2013-04-27 18:44:54
您可以添加显示您尝试过的汇编代码,并告诉它如何编译失败或其行为错误。答案指出它有什么问题会容易得多。 – hyde 2013-04-27 18:47:53
你可以通过编写一个C函数来学习如何做到这一点,C函数调用你想调用的函数,将其编译为汇编语言('-S'),并研究结果。我也会将您指向“psABI”,但我再也找不到副本了。 – zwol 2013-04-27 18:59:49