【问题标题】:Gnu arm giving error on UBFX, Bad instructionGnu arm 在 UBFX 上给出错误,错误指令
【发布时间】:2012-09-24 06:15:54
【问题描述】:

我的手臂汇编代码是:

mov r1, #5
UBFX    r0, r1, #1, #1

当我尝试使用 arm-elf-gcc file.s 编译它时,它会出现以下错误:

ass2_sample.s: Assembler messages:
ass2_sample.s:42: Error: bad instruction `ubfx r0,r1,#1,#1'

我正在使用 GCC-3.4 工具链。我不明白错误在哪里。

【问题讨论】:

  • 你为什么目标(哪个cpu)编译?你有什么理由必须使用这么旧的工具链吗?
  • 我将它用于我的课程作业。我没有为任何特定目标编译它。
  • 您可以尝试一种更现代的 Linaro 工具链(例如:launchpad.net/linaro-toolchain-binaries/trunk/2012.04)GCC 3.4.0 相当旧(2004 年!!)

标签: arm gnu-arm


【解决方案1】:

你编译的目标是什么? The documentation 状态:

这些 ARM 指令在 ARMv6T2 及更高版本中可用。

这些 32 位 Thumb 指令在 ARMv6T2 及更高版本中可用。

这些指令没有 16 位 Thumb 版本。

【讨论】:

  • 我在 32 位 windows 机器上使用 GNU Arm 工具链。
  • 这是什么意思,我可以在我的代码中使用这个指令(在windows上编译)吗?
  • 这意味着如果您的目标是具有 v4T 架构的 ARM7-TDMI,您不能使用该指令,您的 arm-elf-gcc 编译器也不会识别它。在这种情况下,目标是运行您的代码的嵌入式设备。
  • 从这里读取stackoverflow.com/questions/8366625/arm-bit-field-extract,它应该只是将 r0 设置为 0。这对我来说不是很合乎逻辑。
  • 这与尝试在手臂上运行 mips 或 x86 指令没有什么不同,如果处理器不支持它,它就不支持它。就像有许多 x86 处理器一样,有许多 arm 处理器。与 x86 一样,它们已经发展为添加更多功能和指令。当您查看指令集时,请参考 arm 手册说明哪种架构支持该指令。如果您使用的处理器不支持指令,您将收到未定义指令异常。
猜你喜欢
  • 2023-03-11
  • 2013-06-12
  • 2013-05-13
  • 2015-12-20
  • 1970-01-01
  • 1970-01-01
  • 2016-03-02
  • 2021-02-11
  • 2022-11-01
相关资源
最近更新 更多