使用4个ARM指令交换一个字的两个中间字节

时间:2015-06-02 12:20:04

标签: algorithm assembly arm

任务是使用不超过4条指令在arm汇编程序中编写代码,这些指令交换给定32位字中的两个中间字节。 例如,如果单词为0xAABBCCDD,则结果应为0xAACCBBDD。 您最多可以使用ANDORREOR中的4条手臂指令进行移位和旋转。你在r0注册中有这个词。作为提示,他们给出了以下身份A XOR(A XOR B)=B

1 个答案:

答案 0 :(得分:3)

提示告诉您创建BB XOR CC,然后将其应用于BBCC。它是众所周知的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