使用ARM程序集,我想用预定义的字节A,B,C,D加载R0。在.data
部分,我将它们定义为:
A: .byte 0xFF
B: .byte 0xAA
C: .byte 0x88
D: .byte 0x77
当完成所有操作时,我希望R0为FFAA8877
。我不确定我是否应该使用.byte
或.word
甚至是A,B,C,D的其他内容。
编辑: 以下是我正在尝试使用R0:
@on entry: R0 holds the word to be swapped
@on exit: R0 holds the swapped word, R1 is destroyed
@R0 = A, B, C, D
byteswap:
EOR R1, R0, R0, ROR #16
BIC R1, R1, #0xFF0000
MOV R0, R0, ROR #8
EOR R0, R0, R1, LSR #8
答案 0 :(得分:1)
这是一个捷径。
ldr r0,=0xFFAA8877
或者你可以手动做同样的事情......
ldr r0,my_number
...
my_number: .word 0xFFAA8877
答案 1 :(得分:0)
假设您正在运行little-endian ARM,请按以下步骤操作:
ldr r0, =A
ldr r1, [r0]
rev r0, r1
请注意,rev instruction执行从little-endian到big-endian的转换。请注意,rev指令仅可用于armv6 +。
如果您正在运行big-endan ARM,只需跳过rev指令就可以了。)
编辑:rev指令不正确。