3 ms·
But why not explicitly set the register to 1 rather than assume its 0 and increment it by 1?
by freefal 8y ago
But why not explicitly set the register to 1 rather than assume its 0 and increment it by 1?
- boomlinde 8y agoSaves one byte, I assume. Register targets are typically encoded in the opcode while direct values follow the opcode byte.
- amenghra 8y agoOn x86, some instructions are longer than others. Incrementing is a single byte. Setting the value 1 if you don’t assume anything is going to be 2 bytes (al, ah, bl, etc.) or 4 bytes for (ax, bx, etc.) This online x86/x64 assembler is great: https://defuse.ca/online-x86-assembler.htm https://defuse.ca/online-x86-assembler.htm
- kevinmhickey 8y agoProbably because (IIRC) mov is 2 bytes and inc is only 1 byte and they're optimizing for minimum size.