相关疑难解决方法(0)

什么是应用程序二进制接口(ABI)?

我从未明白ABI是什么.请不要指向维基百科的文章.如果我能理解它,我就不会在这里张贴这么长的帖子.

这是我对不同界面的看法:

电视遥控器是用户和电视之间的接口.它是一个现有实体,但本身无用(不提供任何功能).遥控器上每个按钮的所有功能都在电视机中实现.

接口:它是间"现有实体"层 functionalityconsumer的该功能.接口本身不起作用.它只是调用后面的功能.

现在取决于用户是谁,有不同类型的接口.

命令行界面(CLI)命令是现有实体,消费者是用户和功能所在.

functionality: 我的软件功能解决了我们描述这个界面的一些目的.

existing entities: 命令

consumer: 用户

图形用户界面(GUI)窗口,按钮等是现有实体,消费者再次是用户和功能所在.

functionality: 我的软件功能解决了我们描述这个界面的一些问题.

existing entities: 窗口,按钮等..

consumer: 用户

应用程序编程接口(API)函数(或更正确的)接口(在基于接口的编程中)是现有实体,这里的消费者是另一个程序而不是用户,并且该层后面的功能也是如此.

functionality: 我的软件功能解决了我们描述这个界面的一些问题.

existing entities: 函数,接口(函数数组).

consumer: 另一个程序/应用程序

应用程序二进制接口(ABI)这是我的问题开始的地方.

functionality: ???

existing entities: ???

consumer: ???

  • 我用不同的语言编写了软件并提供了不同类型的接口(CLI,GUI和API),但我不确定我是否提供过任何ABI.

维基百科说:

ABI涵盖了诸如此类的详细信息

  • 数据类型,大小和对齐方式;
  • 调用约定,它控制函数参数的传递方式并返回检索的值;
  • 系统调用号码以及应用程序应如何向操作系统进行系统调用;

其他ABI标准化细节,如

  • C++名称错误,
  • 异常传播,和
  • 在同一平台上调用编译器之间的约定,但不需要跨平台兼容性.
  • 谁需要这些细节?请不要说操作系统.我知道汇编编程.我知道链接和加载是如何工作的.我确切地知道里面发生了什么.

  • 为什么C++名称输入?我以为我们正在谈二进制.语言为什么会进来?

无论如何,我已经下载了[PDF] System V Application Binary Interface Edition 4.1(1997-03-18),看看它究竟包含了什么.好吧,大部分都没有任何意义.

  • 为什么它包含两章(第4和第5章)来描述ELF文件格式?实际上,这些是该规范中仅有的两个重要章节.其余章节是"处理器特定的".无论如何,我认为这是一个完全不同的话题.请不要说ELF文件格式规范 ABI.根据定义,它不符合接口的条件.

  • 我知道,因为我们谈论的水平很低,所以必须非常具体.但我不确定它是如何"指令集架构(ISA)"具体的?

  • 我在哪里可以找到Microsoft Windows的ABI?

所以,这些是困扰我的主要问题.

compiler-construction api binary operating-system abi

444
推荐指数
11
解决办法
10万
查看次数

Linux上的COFF或Windows上的ELF

是否可以在UNIX上运行COFF可执行文件或在Windows上运行ELF可执行文件?在Windows和UNIX上运行任一文件类型的步骤是什么?我只是好奇.

unix windows coff elf

14
推荐指数
2
解决办法
1万
查看次数

标签 统计

abi ×1

api ×1

binary ×1

coff ×1

compiler-construction ×1

elf ×1

operating-system ×1

unix ×1

windows ×1