只是想知道是否可以在汇编程序中对多个字节进行异或。 你通常会这样做 异或,A 我只是不确定它会怎么做。 任何帮助将不胜感激,谢谢。
答案 0 :(得分:4)
高级架构可能会为此提供指导。事实上,我之前设计的许多卫星都有一个16位的位掩码,它可以指定你想要用于这种操作的任意数量的寄存器:
xor r3, bitmask
将依次检查每个位,如果设置为1,则r3
将与相关寄存器xor
一起使用。然而,这只是作为预实现模拟器存在而且它被认为是不必要的。我猜他们认为让硅片手动更便宜。
高级汇编程序也可以提供此功能,也许允许您编写:
xor r1, r2, r3, r4, r5, r6
并将其转换为机器语言相当于:
xor r1, r2
xor r1, r3
xor r1, r4
xor r1, r5
xor r1, r6
当然,这不是机器代码级别的多参数指令,只是汇编程序更加智能化。它也不要与使用两个以上参数的实际指令混淆,其中一个作为目标,例如:
add r7, r3, r2 ; r7 = r3 + r2
但是,这通常是您通常会按顺序执行的操作,尤其是如果您未提前知道您提前使用的值:
xor al, bl
xor al, 0x11
如果您希望xor
注册常量项,则可以事先xor
将它们组合起来,因为xor
是可交换:
(a xor b) xor c == a xor (b xor c)
例如,如果您希望xor
注册0x11
,然后0x12
,则可以使用:
xor al, 0x03 ; 0x03 is (0x12 xor 0x11)