case i_cmp://80 /7 ib CMP r/m8,imm8 81 /7 id CMP r/m32,imm32
writeBytes(opcode,1);
exchar=0xf8;
exchar+=(unsigned char)(modrm.reg);
writeBytes(exchar,1);
break;
写入的是操作码+modR/M
操作码是一个组属性操作码,需要modR/M中的reg/opcode字段指明具体指令。
modR/M的mod为3
需要操作的寄存器名称这时候由r/m字段保存
所以对于cmp 80 /7
80 :1 0 0 0 0 0 0 0 组属性操作码,操作8位操作数
0xf8+reg: modR/M
1 1: mod==3
1 1 1:opcode==7
x x x:reg的编号