如何在ARMv8-a上启用Aarch32指令集?

2024-03-12

Raspberry Pi 3 使用具有 ARMv8 A53 内核的 Broadcom SoC https://www.raspberrypi.org/magpi/raspberry-pi-3-specs-benchmarks/。它还使用基于 Debian Jessie 的 32 位操作系统。根据 ARM 的ARM NEON 编程快速参考 https://community.arm.com/groups/android-community/blog/2015/03/27/arm-neon-programming-quick-reference#_ednref3,第 3.2 节,指令系统:

ARMv8-A AArch32指令集由A32(ARM指令集,32位定长指令集)和T32(Thumb指令集,16位定长指令集;Thumb2指令集,16位或32位长度指令系统)。它是 ARMv7-A 指令集的超集,因此保留了运行现有软件所需的向后兼容性。 A32 和 T32 进行了一些补充,以保持与 A64 指令集的一致性,包括 NEON 除法和加密扩展指令。还支持 NEON 双精度浮点(IEEE 合规性)。

我不久前在 GCC 邮件列表上问过类似的问题如何在Aarch64上测试Aarch32执行环境? https://gcc.gnu.org/ml/gcc-help/2016-06/msg00097.html但我不太明白答案:

使用arm工具链进行编译后,可以通过以下方式启用CRC扩展-march=armv8-a+crc或选择一个-mcpu启用它的选项。要启用加密扩展,您必须指定正确的-mfpu option.

我的问题很简单...如何为 Raspberry Pi 3 启用 CRC 和加密扩展?


以下是一些不起作用的尝试。

尝试 (4) 与我们在 Aarch64 下本地执行的方式类似:gcc -march=armv8-a+crc+crypto -mtune=cortex-a53。尝试(5)实际上启用了 CRC,但我似乎无法启用其他任何内容,例如PMULL, PMULL2, AES, SHA1 and SHA2.

  1. gcc -D__ARM_FEATURE_CRYPTO -D__ARM_FEATURE_CRC -march=armv8-a+crc+crypto -mcpu=cortex-a53 -mfpu=neon test.cc -o test.exe
  2. gcc -D__ARM_FEATURE_CRYPTO -D__ARM_FEATURE_CRC -march=armv8-a+crc -mcpu=cortex-a53 -mfpu=neon test.cc -o test.exe
  3. gcc -D__ARM_FEATURE_CRYPTO -D__ARM_FEATURE_CRC -march=armv8-a -mcpu=cortex-a53 -mfpu=neon test.cc -o test.exe
  4. gcc -march=armv8-a+crc+crypto -mcpu=cortex-a53 -mfpu=neon test.cc -o test.exe
  5. gcc -march=armv8-a+crc -mcpu=cortex-a53 -mfpu=neon test.cc -o test.exe
  6. gcc -march=armv8-a -mcpu=cortex-a53 -mfpu=neon test.cc -o test.exe

$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/4.9/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: ../src/configure -v --with-pkgversion='Raspbian 4.9.2-10' --with-bugurl=file:///usr/share/doc/gcc-4.9/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.9 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.9 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libitm --disable-libquadmath --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.9-armhf/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.9-armhf --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.9-armhf --with-arch-directory=arm --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-sjlj-exceptions --with-arch=armv6 --with-fpu=vfp --with-float=hard --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf
Thread model: posix
gcc version 4.9.2 (Raspbian 4.9.2-10) 

很简单,“正确的-mfpu选项”应该是-mfpu=crypto-neon-fp-armv8 https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html#index-mfpu-1555.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在ARMv8-a上启用Aarch32指令集? 的相关文章

  • 为什么每次在 GDB 中构建和反汇编函数时都会得到相同的地址?

    每次反汇编函数时 为什么总是得到相同的指令地址和常量地址 例如 执行以下命令后 gcc o hello hello c ggdb gdb hello gdb disassemble main 转储代码将是 当我退出 gdb 并重新反汇编 m
  • 汇编:使用数据段寄存器(DS)

    目前我正在学习 x86 汇编 因为我喜欢微控制器编程 所以我熟悉汇编 目前我一直在到处寻找这个问题的答案 但似乎找不到它 DS寄存器 我知道它应该指向我程序中的全局数据 但我不知道知道它到底是如何工作的 我正在使用 NASM 在大多数简单的
  • 使用arm-linux-gnueabi-gcc为Android交叉编译静态C hello world

    我想使用 arm linux gnueabi gcc 从 C 构建静态 hello world 而不是使用 NDK 独立工具链或 Codesourcery 在Ubuntu中 我做了以下事情 sudo apt get install gcc
  • 隐式转换和编译器的不同行为

    Motivated by this question https stackoverflow com q 51972738 5800831 I created the following code struct X X int struct
  • 是否可以调用驻留在 exe 中的非导出函数?

    我想调用驻留在第 3 方 exe 中的函数并获取其结果 好像有should是一种方法 只要我知道函数地址 调用约定等 但我不知道如何 有谁知道我会怎么做 我意识到任何解决方案都是非标准的黑客 但有must成为一种方式 我的非恶意用例 我正在
  • 段错误...关于你好世界

    这段代码非常简单 但我在 x86 64 Linux 系统上遇到了段错误 这让我很烦恼 刚开始接触asm 请耐心等待 与 NASM 组装nasm f elf64 test asm 与连接ld o test test o SECTION tex
  • 在 Objective-C 中使用 GCC C 扩展(语句表达式)进行初始化 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 GNU C 提供了标准 C 中没有的多种语言功能 这些扩展在 C 和 Objective C 中都可用 有一个 GCC C 扩展 称为语句表达式
  • 与 SSE 比较 16 字节字符串

    我有 16 字节的 字符串 它们可能更短 但您可能会假设它们在末尾用零填充 但您可能不会假设它们是 16 字节对齐的 至少不总是 如何编写一个例程将它们与 SSE 内在函数进行比较 是否相等 我发现这个代码片段可能会有帮助 但我不确定它是否
  • Linux 内核使用的设备树文件 (dtb) 可视化工具? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可以图形化表示Linux内核中使用的硬件设备树的工具 我正在尝试了解特定 Arm 芯片组
  • GCC 从 C++ 程序生成的汇编代码中的 .cfi 和 .LFE 是什么?

    我有以下 C 代码 int factorial int n if n 0 return 1 return n factorial n 1 int main void factorial 5 return 0 当我使用 g S Factori
  • 如何在 GCC 插件中添加内置函数?

    GCC 插件可以添加新的内置函数吗 如果是的话 该如何正确做呢 GCC 版本是 5 3 或更高版本 代码由C语言编写的插件编译和处理 中提到了gcc melt org 上 GCC 插件的基本原理 http starynkevitch net
  • 尝试理解 printf() 的 gcc 汇编输出

    我正在尝试学习如何理解汇编代码 因此我一直在研究 GCC 的汇编输出以获取一些愚蠢的程序 其中之一只不过是int i 0 我现在或多或少完全理解了其中的代码 最大的困难是理解散布的 GAS 指令 无论如何 我向前迈了一步并添加了printf
  • 在 x86 汇编语言中获取文件大小的简单方法

    假设我已经在汇编中打开了一个文件 并且在寄存器 eax 中有该文件的文件句柄 我将如何获取文件的大小 以便为其分配足够的缓冲区空间 我在这里研究了另一个讨论 建议使用sys fstat 28 系统调用来获取文件统计信息但无法实现它 My a
  • 在 ARM Cortex-M3 中使用 newlib 的 malloc

    我正在为 ARM Cortex M3 NXP 的 LCP17xx 创建代码 到目前为止我一直在使用静态内存 一切都运行良好 我尝试添加动态内存支持 但是一旦调用 malloc 系统就会卡住 我正在使用 gcc 为 Arm Bare Meta
  • 是否有必要每个机器码只能映射到一个汇编代码?

    假设这两者本质上是相同的 push 1 and 0x1231 这表示每个汇编指令都映射到一个机器代码 但是否每个机器码只能映射到一个汇编代码呢 MIPS汇编语言有几个 伪指令 例如 move 在内部只是一个带有隐式 0 操作数的 add
  • 在汇编中使用 printf 会导致管道传输时输出为空,但可以在终端上使用

    无输出 https stackoverflow com questions 54507957 printf call from assembly do not print to stdout即使在终端上 当输出不包含换行符时也有相同的原因
  • 找不到包“gdk-pixbuf-2.0”

    我正在尝试在 Amazon Linux 发行版实例上构建 librsvg 我已经通过 yum 安装了大部分依赖项 其中一些在实例上启用的默认 yum 存储库中不可用 因此必须从头开始构建它们 我已经走了很远 但还停留在最后一点 跑步时sud
  • CMakeLists.txt:30(项目)处的 CMake 错误:找不到 CMAKE_C_COMPILER

    我正在尝试使用 CMake 制作 Visual Studio 解决方案来编译最新版本的 aseprite 并且 CMake 不断向我提供 No CMAKE C COMPILER could be found No CMAKE CXX COM
  • 如何创建可获取数字的小矮人计算机 (LMC) 代码。奇数时显示1,偶数时显示0

    我的研究需要帮助 如果数字是偶数 它可以显示 1 如果数字是奇数 它可以显示 0 例如 如果输入是 99 它将显示输出 1 这意味着奇数 如果我显示 10 它将显示输出 0 这意味着偶数 我没有任何代码 因为我不知道如何开始 请帮忙 我对这
  • GCC 如何运行其他程序?

    也许标题并没有那么准确地表达问题 我知道当我跑步时gcc foo cGCC 调用其他为其完成所有工作的子程序 使 gcc 主程序只是一个接口 但这到底是如何完成的呢 是否使用system or exec或者其他一些功能 我之所以想知道这个是

随机推荐

  • DisplayAttribute.GroupName 属性的用途是什么?

    我正在尝试找出的有效用法显示属性 组名 http msdn microsoft com en us library system componentmodel dataannotations displayattribute groupna
  • 开发 iPhone 应用程序时,配置文件有何用途?

    配置配置文件的用途是什么 为什么在开发 iPhone 应用程序时需要它 如果我没有配置文件 会发生什么 引用自 iPhone 开发者计划 https developer apple com programs information Appl
  • C# 本身是否使用 GPU 进行图形处理?

    我想以最快的方式绘制频繁使用的图形 如果我使用标准 C 图形回调 es graphics drawline 我这样做对吗 或者我应该使用不同的库 图形 DrawLine https msdn microsoft com en us libr
  • 使用android下载文件

    我正在尝试将文件从网络保存到我的 Android 设备 但我不知道该怎么做 URL 地址会打开一个空白页面和一个弹出下载框 其中包含我要下载的文件 以便我可以选择保存位置 我的问题是我不知道如何管理该框以下载文件 我不想下载该页面上显示的内
  • php 像 UTC 一样编译欧洲/柏林时区

    今天我一直在努力解决一个奇怪的问题 由于某种原因 我的服务器假装时区 欧洲 柏林 是 UTC 应该是 UTC 1 例如 如果我将时区设置为 欧洲 布鲁塞尔 它会正确转换时间 我创建了一些虚拟代码来测试我的服务器和在线编译器 当编译器工作时
  • 如何使用 glDrawTex*

    我想拍摄一张 png 图像并将其用作 GLView 的背景 我听说 glDrawTex 是最好的方法 但我在互联网上搜索过 但没有找到一个如何使用它的示例 至少没有一个对我有用 有什么帮助吗 虽然OES draw texture 扩展 ht
  • 在 botframework 网络聊天中发送消息(来自建议)后,如何清除聊天输入框?

    我正在使用 React js 和 botframework 网络聊天开发一个机器人应用程序 问题是我想在发送消息后清除文本输入框 从发送消息的位置 这是从建议中选择的 建议列表 或自动完成组件 是自定义编码的列表 我的意思是 如果我输入 h
  • 以一种形式以编程方式发送多个文件输入字段

    我正在尝试使用blueimp jQuery 文件上传 https github com blueimp jQuery File Upload插件以编程方式通过同一表单发送多个文件输入字段 当用户选择表单文件时 它只是将它们附加到 JS 变量
  • 熊猫爆炸 - 无法从重复轴重新索引

    假设我有一个数据框df C1 C2 C3 C4 C5 0 A 1 s1 123 t1 1 A 1 s2 321 t2 2 A B 1 2 s3 777 111 t3 3 B 2 s4 145 t4 4 B 2 s5 990 t5 5 A B
  • C# 中的 switch 语句和“需要一个常量值”

    为什么编译器对第一种情况说 需要一个常量值 第二种情况工作正常 switch definingGroup case Properties Settings Default OU HomeOffice do something break c
  • Matplotlib:如何加载和显示 PDF 图像

    我的问题很简单 我有一个 PDF 图形 我想与一些数据分析的结果一起显示 然而 即使是广泛的 Google 搜索也没有找到一种在图中加载和显示 PDF 的方法 我只找到了 JPG 或 PNG 等光栅图像的标准结果 提前致谢 我不认为 Mat
  • WordPress 插件:如何添加自定义 URL 处理程序

    我正在尝试编写一个 Wordpress 插件 但似乎无法弄清楚如何修改 URL 的处理方式 例如 任何请求
  • 无法中断 for 循环:非语法中断

    我想要break a for loop当满足某个条件时 Object keys s map uk gt Object keys s uk map ik gt for let i 1 i lt data length i if s uk ik
  • 尝试获取文件夹的子级时出现 MS Graph API 未知错误

    当尝试使用 Microsoft Graph API 相对路径访问共享点站点驱动器中的特定文件夹时 出现未知错误 这个完全相同的请求在一周前工作正常 但本周再次使用时停止工作 测试结果是我网站驱动器上的一个文件夹 根据OneDrive 开发文
  • Active Admin - 用户和管理员的模型相同

    我希望让 Active Admin 为网站做后端 不过 我真的不想为用户和管理员用户建立单独的模型 如果用户模型中有 is admin 标志 我可以只让管理员用户登录到 Active Admin 吗 如果用户不是管理员 他们应该只能登录网站
  • 当包含某些列时,MySQL ORDER BY AVG() DESC 不起作用

    我正在执行一个查询以返回 table1 中的所有行以及 table2 中的平均评分 SELECT table1 description AVG table2 rating AS avg rating FROM table1 LEFT JOI
  • 在 Jenkins 的节点/标签限制中放置通配符/正则表达式

    在作业配置中 有一个复选框 限制该项目可以运行的位置 如果选择它 则会有一个关于标签表达式的输入字段 有没有办法在那里插入正则表达式 而不是确切的名称 如果是 您能提供一个例子吗 这背后的整个概念是 我想将限制作业分配给自动创建的具有相似名
  • 每天在设定时间用 Swift 发出通知? [复制]

    这个问题在这里已经有答案了 如果有人感到困惑并认为这是我昨天的问题的重复 那么事实并非如此 那里我问的是如何每天调用一个函数 这里我问的是如何在每天的特定时间调用通知 我正在寻找一种每天早上 7 点重复本地通知的方法 我目前有这个代码设置来
  • REST Datasnap 覆盖 URI 映射

    我用 delphi XE2 中的 REST datasnap 编写了一个小型 REST 服务器 HTTP 方法 POST PUT 等 和 delphi 中定义的函数之间有一个默认映射 这是由 delphi 组件完成的 这个维基条目 http
  • 如何在ARMv8-a上启用Aarch32指令集?

    Raspberry Pi 3 使用具有 ARMv8 A53 内核的 Broadcom SoC https www raspberrypi org magpi raspberry pi 3 specs benchmarks 它还使用基于 De