Came in to mention that, but the crazy stuff I was thinking about is surprisingly not mentioned in the main readme. Behold:
https://github.com/xoreaxeaxeax/movfuscator/blob/master/vali...
Yes, Doom running with just MOV.
“Running” might not be the best word for it: “The mov-only DOOM renders approximately one frame every 7 hours” I.e. about 0.00004 FPS.
That's pretty amazing
x86's version of a single "instruction" is frequently a large class of opcodes. It's kind of crazy considering the assembler chooses one of the following numbers for "mov" based on the operand types, not the mnemonic:
88, 89, 8A, 8B, 8C, 8E, A0, A1, A2, A3, B0, B8, C6, C7
This also ignores all of the prefix bytes.Also, MOV is far from only a bit copy. It's (potentially, depending on the operands), left shift, add, load, store.
https://github.com/xoreaxeaxeax/movfuscator