LDR R0,[R2,#(7:SHL:2)]是否有效的ARM汇编语言代码?

时间:2015-11-27 17:51:04

标签: assembly arm

我在阅读的ARM汇编语言入门书中遇到了一个汇编操作表,我想知道是否:

LDR R0, [R2, #(7:SHL:2)]

是以下有效的较短代码:

MOV R4, #7
LDR R0, [R2, R4, LSL #2]

感谢。

1 个答案:

答案 0 :(得分:0)

从“ARM汇编语言”的角度来看,该指令只是LDR R0, [R2, #28]

大多数汇编程序都有某种形式的表达式语法,这些表达式在汇编时进行求值以生成立即值。由于its weird operators - (7:SHL:2),{(1}}中的特定汇编程序显然是armasm,它只是(7 << 2)的可读性较低。

正如@SevaAlekseyev所指出的那样,它最有可能以这种方式编写,以便更明显地表示偏移代表7 ,而不仅仅是一些任意数量的字节,尽管为什么选择转换一个更明显的倍增,谁知道?