编译器实现对 ABI 的依赖
Compiler Implementation Dependency on ABI
从这个问题 What is Application binary Interface 开始,ABI 涵盖了
等详细信息
- 数据类型、大小和对齐方式;
- 调用约定,控制函数参数的方式
已通过并检索到 return 个值;
- 系统调用号以及应用程序应如何创建系统
调用操作系统;
- 堆栈帧(激活记录)[不在上述问题]
我的问题是,
- 如果 ABI 定义了这些规则,那么编译器会生成
目标架构的二进制文件取决于架构 ABI???
例如ARM的编译器必须遵循ARM eabi???
- 谁设计了这些 ABI???供应商、架构设计师(核心)、编译器设计师???
编译器只是一个类似于图像处理程序的程序。您有一个输入和一个输出,在这两种情况下,它们都必须符合某些标准(语言、文件格式)。但是你怎么做取决于你。对于编译器的情况,您只需要编写可在指令集定义的目标平台上运行的代码,而对于理智的编译器,您可以选择或创建适用于该语言的调用约定,但这取决于您。
从这个问题 What is Application binary Interface 开始,ABI 涵盖了
等详细信息- 数据类型、大小和对齐方式;
- 调用约定,控制函数参数的方式 已通过并检索到 return 个值;
- 系统调用号以及应用程序应如何创建系统 调用操作系统;
- 堆栈帧(激活记录)[不在上述问题]
我的问题是,
- 如果 ABI 定义了这些规则,那么编译器会生成 目标架构的二进制文件取决于架构 ABI??? 例如ARM的编译器必须遵循ARM eabi???
- 谁设计了这些 ABI???供应商、架构设计师(核心)、编译器设计师???
编译器只是一个类似于图像处理程序的程序。您有一个输入和一个输出,在这两种情况下,它们都必须符合某些标准(语言、文件格式)。但是你怎么做取决于你。对于编译器的情况,您只需要编写可在指令集定义的目标平台上运行的代码,而对于理智的编译器,您可以选择或创建适用于该语言的调用约定,但这取决于您。