3 ms·
xchg %ax,%ax is the nop instruction. I would have expected to see <nop> written instead but the opcode (0x90) is shared by both. It's also possible that xchg
by Tiddles-the2nd 5y ago
xchg %ax,%ax is the nop instruction. I would have expected to see <nop> written instead but the opcode (0x90) is shared by both.
It's also possible that xchg %ax,%ax is has been decoded from a multi-byte nop (to align memory) before the function call.
- klodolph 5y agoWriting nop for xchg %ax,%ax loses information. The xchg %ax,%ax is two bytes. If you write "nop", I'd assume that it's the one-byte version. Typically, you use xchg %ax,%ax because you can replace it with a jump if you want.
- hyperman1 5y agoNote that it uses ax (16 bits) instead of rax (64 bits). I'd assume it has opcode 0x66 0x90, a 2 byte nop. Now if the author can provide some more details, we'll see if the call is aligned on some interesting boundary. I always wonder how much aligning code helps in real code. They seem waste a lot of bytes in the code segment. Aligning data, yes, that changes a lot, but the return position of a call in code?