关于什么是ABI、EABI、OABI

2024-01-29 06:32
文章标签 abi eabi oabi

本文主要是介绍关于什么是ABI、EABI、OABI,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关于ABI 和EABI
codesourcery 公司提供的编译器是符合EABI 标准的编译器,我们公司的文件系统内容
就是基于该编译器制作生成的,因此使用老式的ABI 接口编译器如arm-linux-gcc 2.95.3 等编
译出的可执行文件,是不能在上面运行的。
关于ABI 和EABI 的描述,见下面的说明:
原文链接:
http://linux.chinaunix.net/bbs/thread-1143604-1-8.html
1. 什么是ABI
ABI,application binary interface (ABI),应用程序二进制接口。
既然是 接口,那就是某两种东西之间的沟通桥梁,此处有这些种情况:
A。应用程序 <-> 操作系统;
B。应用程序 <-> (应用程序所用到的)库
C 。应用程序各个组件之间
类似于API 的作用是使得程序的代码间的兼容,ABI 目的是使得程序的二进制(级别)
的兼容。
2. 什么是OABI 和 EABI
OABI 中的O,表示“Old”,“Lagacy”,旧的,过时的,OABI 就是旧的/老的ABI。
EABI 中的E,表示“Embedded”,是一种新的ABI。
EABI 有时候也叫做GNU EABI。
OABI 和EABI 都是专门针对ARM 的CPU 来说的。
3. EABI 的好处/为何要用EABI
A. 支持软件浮点和硬件实现浮点功能混用
B. 系统调用的效率更高
C. 后今后的工具更兼容

D. 软件浮点的情况下,EABI 的软件浮点的效率要比OABI 高很多。
4. OABI 和EABI 的区别
两种ABI 在如下方面有区别:
A.调用规则(包括参数如何传递及如何获得返回值)
B.系统调用的数目以及应用程序应该如何去做系统调用
C.目标文件的二进制格式,程序库等
D.结构体中的 填充(padding/packing)和对齐。

这篇关于关于什么是ABI、EABI、OABI的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/656030

相关文章

ABI和API的区别

ABI和API的区别 ABI(Application Binary Interface): ABI是一种定义了二进制接口规范的概念,用于描述不同模块之间如何进行二进制交互。它定义了函数调用约定、参数传递方式、寄存器使用、内存布局等底层细节。ABI的目标是确保不同编译单元(如不同源文件、不同库)之间能够正确地进行链接和执行,以及确保二进制代码的兼容性。通常,ABI是针对特定的硬件和操作系统平台而

基于Android studio 2.2+ 向项目添加 C 和 C++ 代码并编译成so,指定ABI等全面的配置讲解

https://developer.android.com/studio/projects/add-native-code.html#existing-project 转自 http://blog.csdn.net/wl9739/article/details/52607010

合约ABI探秘

EOA使用ABI调用 合约之间使用接口调用 自己写ABI,自己写接口 ABI探秘 EOA使用的ABI数据与合约间调用时调用者持有的接口时等价的,都是对合约函数签名的完整描述调用者使用ABI数据生成message中的calldata message上下文的变化 合约之间的调用也模拟transaction的结构,并且叫message,变量名msg直接被外部账号调用使用的message可以认为

iOS 报错:!!! _NSLayoutTreeLineFragmentRectForGlyphAtIndex invalid glyph index libc++abi.dylib: termi

出现的场景: UITextView限制输入的字数 - (void)textViewDidChange:(UITextView *)textView { if (textView.text.length == 0) {_placeHolderLab.hidden = NO;}else{_placeHolderLab.hidden = YES;}if (textView.text.leng

Android Studio No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-

No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android 产生原因:新版本NDK更新记录中声: This version of the NDK is incompatible with the Android Gradle pluginversion 3.0 o

安装交叉编译器:EABI-4.3.3_EmbedSky_20100610.tar.bz2

TQ提供的交叉编译器中包含了用于制作各种文件系统镜像的工具集, 不需要再安装mkxxxximage_tools。 1.将EABI-4.3.3_EmbedSky_20100610.tar.bz2在/ 目录下解压:    tar xvf  EABI-4.3.3_EmbedSky_20100610.tar.bz2 -C / 解压后在/opt/EmbedSky下 得到 4.3.3 和 crosstool

ARM 汇编 调用约定ABI与汇编语法

汇编语法 综述 一个架构出来之后,就有一个指令集.然后就有指令集助记符然后就有编译器和汇编器.编译器: .c -> 汇编汇编器: 汇编 -> 二进制汇编的编写规则 是受 汇编器 决定的一般来说,我们创建一个 架构和指令集助记符 .假设架构叫 xxx , 且我们有自己的汇编器, 那么 我们可以创建一个汇编语法 叫 xxx 语法(syntax)但是如果我们想 接入 gcc , 然后

riscv 常见的ABI

RISC-V 编译器支持多个 ABI,具体取决于 F 和 D 扩展是否存在。RV32 的 ABI 分别名为 ilp32,ilp32f 和 ilp32d。ilp32 表示 C 语言的整型(int),长整型(long)和指针(pointer)都是 32 位,可选后缀表示如何传递浮点参数。在 lip32 中,浮点参数在整数寄存器中传递;在 ilp32f 中,单精度浮点参数在浮点寄存器中传递;在

编译器 编译过程 compiling 动态链接库 Linking 接口ABI LTO PGO inline bazel增量编译

编译器 编译过程 compiling 动态链接库 Linking 接口ABI LTO PGO Theory Shared Library Symbol Conflicts (on Linux) 从左往右查找:Note that the linker only looks further down the line when looking for symbols used by but no

0107__C++ ABI

C++ ABI _cppabi库-CSDN博客