if (M.x86.mode & SYSMODE_PREFIX_ADDR) { u32* rp = decode_rm_long_register(rm); return (*rp); }
unsigned decode_rm00_address(	int rm){	unsigned offset;	switch (rm) {      case 0:		DECODE_PRINTF("[BX+SI]");		return M.x86.R_BX + M.x86.R_SI;	  case 1:		DECODE_PRINTF("[BX+DI]");		return M.x86.R_BX + M.x86.R_DI;	  case 2:		DECODE_PRINTF("[BP+SI]");		M.x86.mode |= SYSMODE_SEG_DS_SS;		return M.x86.R_BP + M.x86.R_SI;	  case 3:		DECODE_PRINTF("[BP+DI]");		M.x86.mode |= SYSMODE_SEG_DS_SS;		return M.x86.R_BP + M.x86.R_DI;	  case 4:		DECODE_PRINTF("[SI]");		return M.x86.R_SI;	  case 5:		DECODE_PRINTF("[DI]");		return M.x86.R_DI;	  case 6:		offset = fetch_word_imm();		DECODE_PRINTF2("[%04x]", offset);		return offset;	  case 7:		DECODE_PRINTF("[BX]");		return M.x86.R_BX;	}	HALT_SYS();    return 0;}