我在阅读的ARM汇编语言入门书中遇到了一个汇编操作表,我想知道是否:
LDR R0, [R2, #(7:SHL:2)]
是以下有效的较短代码:
MOV R4, #7
LDR R0, [R2, R4, LSL #2]
感谢。
答案 0 :(得分:0)
从“ARM汇编语言”的角度来看,该指令只是LDR R0, [R2, #28]
。
大多数汇编程序都有某种形式的表达式语法,这些表达式在汇编时进行求值以生成立即值。由于its weird operators - (7:SHL:2)
,{(1}}中的特定汇编程序显然是armasm,它只是(7 << 2)
的可读性较低。
正如@SevaAlekseyev所指出的那样,它最有可能以这种方式编写,以便更明显地表示偏移代表7 字,而不仅仅是一些任意数量的字节,尽管为什么选择转换一个更明显的倍增,谁知道?