Lines Matching refs:modrm
93 static void byte_decode(unsigned char b, struct modRM_byte *modrm) { in byte_decode() argument
96 modrm->mod = b >> 6; /* top 2 bits */ in byte_decode()
97 modrm->reg = (b & 56) >> 3; /* middle 3 bits */ in byte_decode()
98 modrm->rm = b & 7; /* bottom 3 bits */ in byte_decode()
144 x86_op_t *op, struct modRM_byte *modrm ) { in modrm_decode16() argument
149 switch( modrm->rm ) { in modrm_decode16()
174 if ( modrm->mod != MOD16_MOD_NODISP ) { in modrm_decode16()
189 if ( modrm->mod == MOD16_MOD_DISP8 ) { in modrm_decode16()
194 } else if ( modrm->mod == MOD16_MOD_DISP16 ) { in modrm_decode16()
214 struct modRM_byte modrm; in ia32_modrm_decode() local
219 byte_decode(*buf, &modrm); /* get bitfields */ in ia32_modrm_decode()
222 if ( modrm.mod == MODRM_MOD_NOEA ) { in ia32_modrm_decode()
224 ia32_handle_register(&op->data.reg, modrm.rm + gen_regs); in ia32_modrm_decode()
236 return modrm_decode16( buf, buf_len, op, &modrm); in ia32_modrm_decode()
243 if (modrm.mod == MODRM_MOD_NODISP) { /* if mod == 00 */ in ia32_modrm_decode()
246 if (modrm.rm == MODRM_RM_NOREG) { /* if r/m == 101 */ in ia32_modrm_decode()
255 } else if (modrm.rm == MODRM_RM_SIB) { /* if r/m == 100 */ in ia32_modrm_decode()
258 size += sib_decode( buf, buf_len, ea, modrm.mod); in ia32_modrm_decode()
264 ia32_handle_register( &ea->base, modrm.rm + 1 ); in ia32_modrm_decode()
267 if (modrm.rm == MODRM_RM_SIB) { /* rm == 100 */ in ia32_modrm_decode()
270 size += sib_decode( buf, buf_len, ea, modrm.mod); in ia32_modrm_decode()
276 ia32_handle_register( &ea->base, modrm.rm + 1 ); in ia32_modrm_decode()
280 if (modrm.mod == MODRM_MOD_DISP8) { /* mod == 01 */ in ia32_modrm_decode()
302 struct modRM_byte modrm; in ia32_reg_decode() local
303 byte_decode( byte, &modrm ); /* get bitfields */ in ia32_reg_decode()
307 ia32_handle_register(&op->data.reg, modrm.reg + gen_regs); in ia32_reg_decode()