gpt4 book ai didi

gcc - ARM 汇编器的奇怪 GCC 行为。 AND SEQ 指令

转载 作者:行者123 更新时间:2023-12-02 01:05:07 33 4
gpt4 key购买 nike

如果我尝试汇编这个程序:

.text
main:
andseq r1,r3,r2,lsl #13

使用命令gcc -c test.s,我收到以下错误:

Error: bad instruction `andseq r1,r3,r2,lsl#13'

经过一番尝试,我用 andeqs 替换了 andseq,现在它编译得很好。

但是如果我使用 objdump -d test.o 转储生成的 obj 文件,我会得到以下结果:

Disassembly of section .text:

00000000 <main>:
0: 00131682 andseq r1, r3, r2, lsl #13

注意指令如何解码为 andseq ....

我错过了什么吗?这是一个错误吗?

我的系统是Raspbian GNU/Linux 8,我的gcc是:gcc (Raspbian 4.9.2-10) 4.9.2。我也用 gcc-8.1.0 进行了测试(编辑,没有真正看到编辑),结果相同。

编辑:

事实上,我似乎使用了与 gcc8 相同的 binutils,所以我实际上只测试了这个 GNU 汇编器 (GNU Binutils for Raspbian) 2.25。我将尝试更新的汇编程序。

最佳答案

为了与旧的汇编文件兼容,GNU 对于 ARM 汇编默认使用分割语法。在分割语法中,andeqs 是您所需指令的正确助记符。您可以发出 .syntax Unified 指令来选择统一语法,其中 andseq 是正确的助记符。

另一方面,GNU objdump 只知道统一语法,这解释了明显的不一致。

对于新的开发,我建议您尽可能一致使用统一语法。

关于gcc - ARM 汇编器的奇怪 GCC 行为。 AND SEQ 指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51184921/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com