> Consequently, there are actually two ways to encode xor eax, eax:
; r/m32, r
31 C0
; r, r/m32
33 C0
So, what I am saying is that write(memory,register) != write(register,memory) in the byte code, meaning that writing the XOR itself is a noncommutative operation. The machine running the code does however treat both option ultimately to get the same result.The XOR algorithm remains unchanged and remains commutative. The execution routine of the XOR is noncommutative.
So, there are two operations here: XOR and executeXOR and OPs article is about using the machine level noncommutativity in the form of different byte strings for executeXOR. The machine still thinks that is is commutative for the end result of the calculation/routine.
My comment about cypher XOR plaintext = cyphertext is just a general comment about XOR.