You can shrink it further by doing xorl reg, reg. On x86, the upper 32 bits are cleared for you when using 32 bit opcodes. No need to do a 64-bit reg, reg xor.<p>Instead of doing cmp $0, %eax, you can use test eax, eax - that's another low hanging fruit.<p>It seems that you could also preset a dedicated reg to 0 and another to 1, further shaving a few bytes.