2010-08-12 62 views
1

我得到了所有这些术语混淆混淆。入门与ABI调用约定和拱

ABI与架构链接:x86-64具有与i386不同的ABI。 但是你也可以定义你自己的通话公约cdecl ...

那么所有这些概念之间的联系是什么? 哪一个是定义另一个?

大部分我觉得我很迷惑ABI。你在调用约定的部分内容是什么?

感谢

回答

2

这是一个很大的课题还是给你一些指点:

的ABI(应用程序二进制接口)覆盖需要以指定该应用程序可以在某些系统上工作的细节(通常使用操作系统)。所以,要到的例子:

  • 数据类型大小(例如C标准给出了类型只是最低要求,整型至少应该一样大的短,短的必须是16位。)
  • 布局在结构和位域的存储器
  • 调用约定(当一个函数被调用,其中它可以找到它的参数,其在寄存器,其上堆等)
  • 堆栈帧(它是什么本堆栈上,有用的对于调试器)
  • 系统调用号
  • 他人

基本上需要,以便建立与某些其它部件(库,OS)可以被包括在一个ABI一起运行的程序是已知的任何细节。一些ABI指定更多,一些指定更少的细节。

硬件架构也可以看作是一个规范,但更低级别(它是关于硬件而不是软件)。硬件体系结构指定了可用的指令集,存储器层次结构以及如何访问外设等。对于一个硬件体系结构,可以有不同的ABI-s。您也可以为多个(但通常相似)的硬件架构拥有相同的ABI。