首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在ARMv8-a上启用Aarch32指令集?

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

Stack Overflow用户
提问于 2016-07-28 08:48:36
回答 1查看 4.5K关注 0票数 3

Raspberry Pi 3使用了SoC和ARMv8 A53核。它还使用了基于的32位操作系统。根据ARM的ARM霓虹灯编程快速参考,3.2节指令集

ARM 8- AArch32指令集由A32 (ARM指令集,32位固定长度指令集)和T32 (拇指指令集,16位固定长度指令集;Thumb2指令集,16位或32位长度指令集)组成。它是ARMv7-A指令集的一个超集,因此它保留了运行现有软件所必需的向后兼容性。在A32和T32中增加了一些以保持与A64指令集的一致性,包括NEON划分和加密扩展指令。还支持霓虹灯双精度浮点(IEEE遵从性)。

不久前,我在如何在Aarch32上测试Aarch64执行环境?的GCC邮件列表上问了一个类似的问题,但我不太明白答案:

使用arm工具链编译之后,可以通过-march=armv8-a+crc或选择启用它的-mcpu选项启用CRC扩展。要启用Crypto扩展,您必须指定正确的-mfpu选项。

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

以下是一些失败的尝试。

尝试(4)类似于我们在Aarch64:gcc -march=armv8-a+crc+crypto -mtune=cortex-a53下进行本机操作的方式。尝试(5)实际上启用了CRC,但我似乎无法获得任何其他启用,如PMULLPMULL2AESSHA1SHA2

  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
代码语言:javascript
运行
复制
$ 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) 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-28 09:04:05

很简单,“正确的-mfpu选项”应该是-mfpu=crypto-neon-fp-armv8

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38631380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档