在ARM程序集中将立即值放在括号中的目的是什么?

Gdo*_*ogg 3 assembly arm

subs    r2, r2, #(32)
Run Code Online (Sandbox Code Playgroud)

subs    r2, r2, #32
Run Code Online (Sandbox Code Playgroud)

如果你有一个来源我很乐意看到它,因为我找不到任何提及它.

谢谢!

Dan*_*Dan 13

实际上,这些是括号,而不是括号.

两者之间没有区别:

subs    r2, r2, #(32)
Run Code Online (Sandbox Code Playgroud)

subs    r2, r2, #32
Run Code Online (Sandbox Code Playgroud)

我怀疑过去(32)常常(32 - 8)是有趣/有意义/必要的东西,然后" - 8"被删除了,但括号只是保留,因为它们没有伤害.


为了完整起见,即使它不是你问的,你可能已经知道了:

代码

LDR r0, [r1]
Run Code Online (Sandbox Code Playgroud)

使用"括号"(寄存器间接)加载r0其地址存储的值r1- 换句话说,如果r1保持1000,r0将从MEM [1000]加载