ARM汇编指令,add x14, x14, #1 和 add x14, x14, 1 的区别

问题描述 投票:0回答:1

我正在尝试编写一些arm程序集,我的代码中有一个恼人的错误,我使用

add x14, x14, #1
来迭代一个,使用gdb单步执行代码的结果是,这改变了寄存器从 11000111 到 11010110,当我使用
add x14, x14, 1
时,我得到了将寄存器的尾随位从 11000111 更改为 11001000 的预期结果

有人知道这里发生了什么吗?我看到大量使用 add rn, rn, #x 的示例。 Godbolt 的做法是正确的,并且在没有 # 的情况下加 1 https://godbolt.org/z/7j3sTbdE7

我在 Qualcomm Kryo-4xx 上使用 binutils as 和 ld

assembly arm arm64 binutils
1个回答
0
投票

自己尝试一下。我的结果与 Jester 匹配。

add x14,x14,#1
add x14,x14,1

aarch64-none-elf-as x.s -o x.o
aarch64-none-elf-objdump -d x.o

x.o:     file format elf64-littleaarch64


Disassembly of section .text:

0000000000000000 <.text>:
   0:   910005ce    add x14, x14, #0x1
   4:   910005ce    add x14, x14, #0x1
© www.soinside.com 2019 - 2024. All rights reserved.