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