什么是 C 调用约定标准?

问题描述

我正在编写一个编译器,我正在尝试实现一个 C 接口。于是,我写了一个简单的C程序,看到了GCC生成的汇编代码:

    ...

    mov rdi,rax
    call    puts@PL

    ....

我希望 C 通过堆栈将参数传递给 puts,但它使用 di 寄存器来这样做。我测试了其他 libc 的函数,例如 sleepcalloc,它们都使用寄存器。

那么,这有什么模式吗?即是否所有 libc 的函数都接收像系统调用这样的参数? 而且,C 在哪里使用堆栈作为函数参数?是否仅适用于用户定义的函数?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...