任务是使用不超过4条指令在arm汇编程序中编写代码,这些指令交换给定32位字中的两个中间字节。
例如,如果单词为0xAABBCCDD
,则结果应为0xAACCBBDD
。
您最多可以使用AND
,ORR
,EOR
中的4条手臂指令进行移位和旋转。你在r0
注册中有这个词。作为提示,他们给出了以下身份A XOR(A XOR B)=B
。
答案 0 :(得分:3)
提示告诉您创建BB XOR CC
,然后将其应用于BB
和CC
。它是众所周知的XOR
交换的一个例子。像这样:
EOR R1, R0, R0, LSR #8 @ R1 = AA BB^AA CC^BB DD^CC
AND R1, R1, #0xff00 @ R1 = 00 00 CC^BB 00
EOR R0, R0, R1 @ R0 = AA BB BB DD
EOR R0, R0, R1, LSL #8 @ R0 = AA CC BB DD