c - 什么是 C 调用约定标准?
问题描述
我正在编写一个编译器,我正在尝试实现一个 C 接口。于是,我写了一个简单的 C 程序,看到了 GCC 生成的汇编代码:
...
mov rdi, rax
call puts@PL
....
我期待 C 通过堆栈传递参数puts
,但它使用di
寄存器来这样做。我测试了其他libc
的函数,比如sleep
and calloc
,它们也都使用寄存器。
那么,有这种模式吗?ie alllibc
的函数是否接收系统调用之类的参数?而且,C 在哪里使用堆栈作为函数参数?它仅适用于用户定义的功能吗?
解决方案
推荐阅读
- python-3.x - 如何使用 DF.split 在 python 中拆分字符串
- spring - 类图对 Javers 的依赖需要 JDK9+
- sql - 对象“tablename”、数据库“database_Name”、模式“SampleSchema”的 INSERT 权限被拒绝。在 SQL Server 中
- python - 如何更改已从文本文件中提取的列格式
- linux - 如何从脚本添加/替换命令到 SSH 公钥的末尾?
- amazon-web-services - AWS 只允许从 S3 到 EC2 的流量
- google-bigquery - Google Big Query 中的功能
- java - JSON 解析错误:无法从字符串反序列化类型为“java.lang.Integer”的值
- ios - Tableview is not sorting once number is above 10
- c# - LINQ Select 语句使用递归映射实体