1

当您编写代码时,编译器和/或汇编器遵循 ABI(应用程序二进制接口)。

然而,ISA 在不同的可用微架构之间是不同的,它们提供了一层数据处理,它们抽象了一些裸机操作,还是在最终方法上有所不同?

这三件事非常令人困惑,因为每个不同的微处理器都可以有不同的 ISA,并且 ABI 是特定于 ISA 的吗?如果是这样,您必须知道每个微处理器的确切 ISA,并且只使用一个与 ABI 的细节相匹配的 ISA 到微级别。

只是我,还是这不会让其他人感到困惑?维基百科对这些文章也没有多大意义,所以任何人都可以帮助理顺这背后的想法吗?

4

2 回答 2

3

William Stallings 的操作系统书对这些差异有很好的解释。

转述。

ISA是硬件提供的接口。它由应用程序或操作系统使用。

API 是应用程序的接口。这包括 ISA 以及对操作系统进行的系统调用。

ABI 类似于 API,只是它是可用于编译代码的版本。

以下线程很好地解释了 ABI 和 API 之间的区别。 什么是应用程序二进制接口 (ABI)?

于 2013-04-25T02:49:32.183 回答
0

它们并不完全依赖,但也不完全排斥。

我们以 x86 为例。ABI 的一个方面是__cdecl调用约定。这表明调用者按从右到左的顺序将参数压入堆栈。它声明调用者负责在调用后从堆栈中清除这些参数。这适用于所有 x86 微架构。

x86 指令集之间的区别在于 SSE 指令的存在。这些指令是否存在对如何将参数压入堆栈没有影响。

于 2013-01-30T22:41:01.117 回答