title: Encodings specialized for AL register?
body: <p>Unlike the other registers, I've noticed doing something like <code>add $1, %al</code> encodes the instruction much differently than the other (8-bit) registers. For example:</p>
  <pre><code>add $3, %al
  add $3, %bl
  add $3, %cl
  add $3, %dl
  </code></pre>
  <p>Translates to:</p>
  <pre><code>0x0000000000401000  04 03     ? add    $0x3,%al
  0x0000000000401002  80 c3 03  ? add    $0x3,%bl
  0x0000000000401005  80 c1 03  ? add    $0x3,%cl
  0x0000000000401008  80 c2 03  ? add    $0x3,%dl
  </code></pre>
  <p>I went through the encoding of add-imm8 in my <a href="https://stackoverflow.com/questions/64255426/simple-instruction-encode">previous question</a>, but the <code>add $3, %al</code> seems to completely contradict that (no mod-reg-rm byte?). Is this a legacy instruction or something, or why does it look so much different than the other ones?</p>