首页 > 其他分享 >ABI、EABI、OABI、GNU EABI

ABI、EABI、OABI、GNU EABI

时间:2023-11-02 11:55:09浏览次数:24  
标签:GNU 二进制 ABI 浮点 EABI OABI

ABI、EABI、OABI、GNU EABI

  应用二进制接口(Application Binary Interface,ABI)定义了一个系统中函数的参数如何传送、如何接受函数返回值、数据类型的大小、布局和对齐、应用程序应如何对操作系统进行系统调用、对象文件,程序库等的二进制格式等细节。ABI 允许编译好的目标代码在使用兼容 ABI 的系统中无需改动就能运行。

  嵌入式应用程序二进制接口 (Embedded Application Binary Interface,EABI) 指定嵌入式软件程序的文件格式、数据类型、寄存器用法、堆栈帧组织和函数参数传递的标准约定,以便与嵌入式操作系统一起使用。广泛使用的 EABI 有 PowerPC、Arm EABI、MIPS EABI。

  在很多地方有 GNU EABI 的这样的叫法,例如,在 ARM 提供的 GNU 工具链中有 arm-none-linux-gnueabi 的命名。这里的 GNU EABI 其实就是 EABI。之所以叫这个名字是因为 GNU 一贯作风是要求带有 GNU 字样。例如 GNU 要求把 Linux 称为 GNU/Linux,但是实际情况大家都直接叫 Linux。

  OABI (其中的 O,理解为 Old 或 Obsolete)是 ARM 系列的最开始使用的应用程序二进制接口。OABI 假设 CPU 拥有一个浮点单元处理器(实际很多没有),导致编译器生成的程序总是尝试与浮点单元通信以进行浮点运算,由于没有浮点运算单元,内核出现异常,异常机制会自动再使用软件模拟浮点进行计算,这导致了一些额外开销。

  EABI 被创造出来以解决 OABI 的这个问题。但是,EABI 没有简单的方法来让二进制发行版同时支持软浮点和硬浮点,因此,ARM 的交叉编译器分为 ARMEL 和 ARMHF 这两种。因此,有个 arm-none-linux-gnueabihf 表示支持硬浮点。

标签:GNU,二进制,ABI,浮点,EABI,OABI
From: https://www.cnblogs.com/zxdplay/p/17805078.html

相关文章

  • [macos]karabiner-elements设置
    通过一些映射来方便我的mac操作      20200423:  https://github.com/eret9616/my-karabiner-config ......
  • P4397聪明的燕姿 题解 & Miller~Rabin 质数判定
    涉及质数的时间复杂度都是玄学的。——题记传送门由整数唯一分解定理:\(\coprod\limits_{i=1}^{k}p_i^{c_i}\)有该正整数的正约数为:\(\coprod\limits_{i=1}^k(\sum\limits_{j=0}^{c_i}p_i^j)\)即我们要求有多少个数满足\(\coprod\limits_{i=1}^k(\sum\limits_{j=0}^{c_i}p_i^......
  • Arm GNU Toolchain Downloads
    ArmGNUToolchainDownloadsArmGNUToolchainDownloadshttps://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads......
  • 论文阅读笔记——LAVA: Large-scale Automated Vulnerability Addition
    LAVA:Large-scaleAutomatedVulnerabilityAdditionBrendanDolan-Gavitt∗,PatrickHulin†,EnginKirda‡,TimLeek†,AndreaMambretti‡,WilRobertson‡,FrederickUlrich†,RyanWhelan†(Authorslistedalphabetically)∗[email protected]......
  • Kotlin+DataBinding的使用以及和Vue的比较
    随着移动应用前端化越来越严重,原生应用开发的比重逐渐降低,慢慢被微信小程序/ReactNative/Weex/H5+/混合应用等替代,而这些前端化的技术栈中,mvvm模式最受推崇。google在2015年的I/O大会就推出了mvvm模式的DataBinding框架,而在实际项目中被使用的情况并不多,在前端技术快速发展的今天,m......
  • ELF文件结构分析(x86 gnu版本)
    为了学习使用objdump和size命令,以simple_section.c为例进行分析。编译环境是x86ubuntu,首先编译这个文件。gcc-csimple_section.c命令解释objdump作用:分析二进制文件的内容信息objdump--helpUsage:objdump<option(s)><file(s)>Displayinformationfromobject<fi......
  • ELF文件结构分析(arm gnu版本)
    为了学习使用objdump和size命令,以simple_section.c为例进行分析。编译环境是x86ubuntu下的交叉编译arm指令:首先编译这个文件。arm-none-eabi-gcc-csimple_section.c命令解释objdump作用:分析二进制文件的内容信息arm-none-eabi-objdump--helpUsage:arm-none-eabi-objd......
  • 在 Windows 11 中,你可以使用 PowerShell 命令 Get-WindowsCapability 来查询 Windows
    在Windows11中,你可以使用PowerShell命令Get-WindowsCapability来查询Windows组件功能。这个命令可以列出当前安装的所有Windows组件功能,以及它们的状态。以下是使用Get-WindowsCapability命令查询Windows组件功能的步骤:打开PowerShell终端:可以通过在任务栏中搜......
  • Replacing gcc and g++ with GNU version in macOS
    AfterweinstallXcodeCommandLineTools,wewillgetgccandg++in/Library/Developer/CommandLineTools/usr/binandthesamecontentsin/usr/bin.Buttheproblemisthatgccandg++aresameasclangandclang++.Proofcanbeobtainedfromthefollowin......
  • Conditional Probability Models for Deep Image Compression
    深度神经网络被训练来作为图像压缩的自动编码器是一个前沿方向,面临的挑战有两方面——量化(quantization)和权衡reconstructionerror(distortion)andentropy(rate),这篇文章关注后者。主要思想是使用上下文模型直接对潜在表示的熵建模;3D-CNN一个学习自动编码器潜在分布的条......