我在读一本介绍ARM汇编语言的书中偶然发现了一张汇编器操作表,我想知道是否:
LDR R0, [R2, #(7:SHL:2)]是以下内容的有效较短代码:
MOV R4, #7
LDR R0, [R2, R4, LSL #2]谢谢。
发布于 2015-11-28 02:02:48
从"ARM汇编语言“的角度来看,指令就是LDR R0, [R2, #28]。
大多数汇编器都有某种形式的表达式语法,这些表达式在汇编时进行计算以生成立即值。本例中的特定汇编程序显然是armasm,这要归功于its weird operators - (7:SHL:2),它只是(7 << 2)的一个可读性较差的等价物。
正如@SevaAlekseyev指出的那样,它很可能是这样写的,以使偏移量更明显地表示7个字,而不仅仅是一些任意数量的字节,尽管为什么选择移位而不是更明显的乘法,谁知道呢?
https://stackoverflow.com/questions/33962596
复制相似问题