是否可以使用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