Architecture 编译器';应用程序二进制接口、指令集体系结构和物理微体系结构;工作“;在一起

Architecture 编译器';应用程序二进制接口、指令集体系结构和物理微体系结构;工作“;在一起,architecture,Architecture,编写代码时,编译器和/或汇编程序遵循ABI(应用程序二进制接口) 然而,是ISA在不同的可用微体系结构之间有所不同,它们提供了一层数据处理,抽象了一些裸机操作,还是在最终确定的方法上有所不同 这三件事非常混乱,因为每个不同的微处理器可以有不同的ISA,ABI是ISA特有的吗?如果是这样,您必须知道每个微处理器的确切ISA,并且只使用一个与ABI到ISA到微级别的细节相匹配的ISA 只是我,还是这不会让其他人感到困惑?维基百科对这些文章也没有多大意义,所以有人能帮我们进一步理清背后的想法吗?它们不

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

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

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


只是我,还是这不会让其他人感到困惑?维基百科对这些文章也没有多大意义,所以有人能帮我们进一步理清背后的想法吗?

它们不是完全依赖的,但也不是完全排他性的

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


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

它们不是完全依赖的,但也不是完全排斥的

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


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

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

意译

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

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

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

下面的线程很好地解释了ABI和API之间的区别。

威廉·斯泰林斯(William Stallings)的《操作系统》(operating systems)一书很好地解释了这些差异

意译

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

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

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

下面的线程很好地解释了ABI和API之间的区别。