"disassembly" is a procedure by which you can turn an unambiguous sequence of bytes that have one interpretation into a mushy structure that takes extra work to figure out how to execute. i do not like the wrinkle of being able to disassemble 3300 into (xor, eax, [rax]) because that representation also suggests your disassembler could one day say (xor, [rax], [rax]). but that will never happen! so you develop checks and edge cases for things that were literally impossible without this mushy intermediate representation.
i don't know what to do with this and i'm not sure if it's actually better for anyone if the computer could inline the exact logic to handle some decoded instruction and not a word more. maybe the explosion in generated code is worse overall. buh.