gpt4 book ai didi

android - ABI 和 CPU 架构类型有什么区别?

转载 作者:行者123 更新时间:2023-12-04 23:58:08 26 4
gpt4 key购买 nike

对 ABI 和 CPU 架构类型感到困惑,通过谷歌搜索我可以找到这个链接

https://developer.android.com/ndk/guides/android_mk#target_arch_abi

从中我了解到ABI是可以支持(或映射到)多cpu指令类型的接口(interface)。我们所说的 CPU 架构类型 x86、arm32、arm64 类型是 CPU 类别,ABI 是 Android 提供给我们与这些 CPU 类型交互的接口(interface)。如果我错了,请纠正我。

为什么首先需要这个接口(interface)?是否可以将相同的 c/c++ 代码编译为不同的体系结构类型?

最佳答案

ABI 标准化了 CPU 资源的使用方式以及编程语言类型如何映射到未类型化的 CPU 指令和内存布局。
例如,ABI 指定在函数调用期间如何使用寄存器,或 C++ 对象的布局。
CPU的ISA给了程序员相当大的自由度,ABI是类似于API约定的底层约定。

由于 ABI 与 CPU 架构相关,因此不同的 CPU 不能具有相同的 ABI。然而,术语 ABI 并没有绝对定义:ABI 是一种规范,完全可以编写一个通用的规范。
一个这样的例子是 Itanium C++ ABI它作为 C++ ABI 在其他体系结构中的基础被重用,带有少量的增补。

最后,由于给定 CPU 架构没有单一的约定选择,每个人都可以为该架构编写和提出其 ABI。
一个 CPU 有多个 ABI 的情况并不少见,但是这种自由是为编译操作系统和/或系统库的人保留的。
最终用户必须遵守操作系统/库设置的 ABI,否则他们的二进制文件将不会与系统的其余部分使用相同的低级语言。

关于android - ABI 和 CPU 架构类型有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55206130/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com