avoid using magic constants for disasm source metadata
This commit is contained in:
parent
8006ec9fa3
commit
46ef85ce0f
@ -512,8 +512,8 @@ char* disasm(char *disbufptr, const bxInstruction_c *i, bx_address cs_base, bx_a
|
||||
unsigned srcs_used = 0;
|
||||
for (n = 0; n <= 3; n++) {
|
||||
unsigned src = (unsigned) BxOpcodesTable[ia_opcode].src[n];
|
||||
unsigned src_type = src >> 3;
|
||||
unsigned src_index = src & 0x7;
|
||||
unsigned src_type = BX_DISASM_SRC_TYPE(src);
|
||||
unsigned src_index = BX_DISASM_SRC_ORIGIN(src);
|
||||
if (! src_type && src_index != BX_SRC_RM && src_index != BX_SRC_EVEX_RM) continue;
|
||||
if (srcs_used++ > 0)
|
||||
disbufptr = dis_sprintf(disbufptr, ", ");
|
||||
|
@ -255,6 +255,9 @@ enum {
|
||||
|
||||
#define BX_FORM_SRC(type, src) (((type) << 3) | (src))
|
||||
|
||||
#define BX_DISASM_SRC_ORIGIN(desc) (desc & 0x7)
|
||||
#define BX_DISASM_SRC_TYPE(desc) (desc >> 3)
|
||||
|
||||
const Bit8u OP_NONE = BX_SRC_NONE;
|
||||
|
||||
const Bit8u OP_Eb = BX_FORM_SRC(BX_GPR8, BX_SRC_RM);
|
||||
|
@ -1554,8 +1554,9 @@ bx_bool assign_srcs(bxInstruction_c *i, unsigned ia_opcode, unsigned nnn, unsign
|
||||
{
|
||||
for (unsigned n = 0; n <= 3; n++) {
|
||||
unsigned src = (unsigned) BxOpcodesTable[ia_opcode].src[n];
|
||||
unsigned type = src >> 3;
|
||||
switch(src & 0x7) {
|
||||
unsigned type = BX_DISASM_SRC_TYPE(src);
|
||||
unsigned index = BX_DISASM_SRC_ORIGIN(src);
|
||||
switch(index) {
|
||||
case BX_SRC_NONE:
|
||||
break;
|
||||
case BX_SRC_EAX:
|
||||
@ -1596,8 +1597,8 @@ bx_bool assign_srcs(bxInstruction_c *i, unsigned ia_opcode, bx_bool is_64, unsig
|
||||
// assign sources
|
||||
for (unsigned n = 0; n <= 3; n++) {
|
||||
unsigned src = (unsigned) BxOpcodesTable[ia_opcode].src[n];
|
||||
unsigned type = src >> 3;
|
||||
src &= 0x7;
|
||||
unsigned type = BX_DISASM_SRC_TYPE(src);
|
||||
src = BX_DISASM_SRC_ORIGIN(src);
|
||||
#if BX_SUPPORT_EVEX
|
||||
bx_bool mem_src = BX_FALSE;
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user