AMD64 (aka x86-64 or x64) registers can be accessed 8, 16, 32 or 64 bits at a time. When reading a disassembly listing, what register operations are not straightforward?
For example, when an instruction accesses part of a register, how does it affect other parts?
What typical instructions or sequences of instructions used by optimizers might encode something that isn't obvious (e.g. xoring a register with itself to set it to zero)?