调用我使用x64 nasm编写的C程序中的函数应该如何进行?

huangapple go评论62阅读模式
英文:

How would I go about calling a function inside a c program that I wrote using x64 nasm?

问题

我正在尝试为我的编译器创建一个OpenGL绑定,该编译器将编译的程序编译为汇编语言,并且我需要知道如何在汇编中调用已编译的C代码中的函数。我正在使用GNU/Linux,不关心跨平台。

我已经尝试过搜索,但大多数内容都是关于如何在汇编内部使用printf。

英文:

I'm trying to make an opengl binding for my compiler that compiles a programming to asm, and I need to know how to call a function side of compiled c code in asm. I'm using gnu/linux and I don't care about being cross platform

I've tried googling it but most of it is about how to use printf inside of asm

答案1

得分: 2

如果你使用汇编对象文件链接C代码,你可以使用以下语法:

extern int your_function();

来从对象文件中导入它。

汇编部分:

; test.asm
global your_function
your_function:
mov eax, 500 ; 返回 500
ret

然后使用上述语法来使用该函数。

英文:

If you link or C with the assembly object file you can use the syntax

    extern int your_function();

to import it from the object file.
assembly:

; test.asm
global your_function
your_function:
mov eax, 500 ; return 500
ret

then use the above syntax to use that function.

huangapple
  • 本文由 发表于 2023年6月19日 06:49:50
  • 转载请务必保留本文链接:https://go.coder-hub.com/76502804.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定