title: Intel x86 XOR opcode 0x31
body: <p>The following Intel x86 instruction is opcode 0x31: <code>xor &lt;r/m32&gt;,&lt;r32&gt;</code>.  In the actual machine code for the instruction, the 0x31 is followed by another hexadecimal value representing the registers or memory addresses used.  My questions are as follows:</p>
  
  <ol>
  <li>What are the hexadecimal codes that refer to the possible registers that can be XOR'd?</li>
  <li>What are the constraints on the possible machine code this instruction could create given the number of combinations of registers and memory arguments that can be used?</li>
  </ol>