i386dasm.c [Peter Ferrie]

* fix improper signed display in some opcode parameters
This commit is contained in:
Scott Stone 2013-05-22 13:51:19 +00:00
parent 238d365b0c
commit 24cd1b303d

View File

@ -161,7 +161,7 @@ static const I386_OPCODE i386_opcode_table1[256] =
{"sub", MODRM, PARAM_RM, PARAM_REG, 0 }, {"sub", MODRM, PARAM_RM, PARAM_REG, 0 },
{"sub", MODRM, PARAM_REG8, PARAM_RM8, 0 }, {"sub", MODRM, PARAM_REG8, PARAM_RM8, 0 },
{"sub", MODRM, PARAM_REG, PARAM_RM, 0 }, {"sub", MODRM, PARAM_REG, PARAM_RM, 0 },
{"sub", 0, PARAM_AL, PARAM_I8, 0 }, {"sub", 0, PARAM_AL, PARAM_UI8, 0 },
{"sub", 0, PARAM_EAX, PARAM_IMM, 0 }, {"sub", 0, PARAM_EAX, PARAM_IMM, 0 },
{"seg_cs", SEG_CS, 0, 0, 0 }, {"seg_cs", SEG_CS, 0, 0, 0 },
{"das", 0, 0, 0, 0 }, {"das", 0, 0, 0, 0 },
@ -321,15 +321,15 @@ static const I386_OPCODE i386_opcode_table1[256] =
// 0xc0 // 0xc0
{"groupC0", GROUP, 0, 0, 0 }, {"groupC0", GROUP, 0, 0, 0 },
{"groupC1", GROUP, 0, 0, 0 }, {"groupC1", GROUP, 0, 0, 0 },
{"ret", 0, PARAM_I16, 0, 0, DASMFLAG_STEP_OUT}, {"ret", 0, PARAM_UI16, 0, 0, DASMFLAG_STEP_OUT},
{"ret", 0, 0, 0, 0, DASMFLAG_STEP_OUT}, {"ret", 0, 0, 0, 0, DASMFLAG_STEP_OUT},
{"les", MODRM, PARAM_REG, PARAM_RM, 0 }, {"les", MODRM, PARAM_REG, PARAM_RM, 0 },
{"lds", MODRM, PARAM_REG, PARAM_RM, 0 }, {"lds", MODRM, PARAM_REG, PARAM_RM, 0 },
{"mov", MODRM, PARAM_RMPTR8, PARAM_UI8, 0 }, {"mov", MODRM, PARAM_RMPTR8, PARAM_UI8, 0 },
{"mov", MODRM, PARAM_RMPTR, PARAM_IMM, 0 }, {"mov", MODRM, PARAM_RMPTR, PARAM_IMM, 0 },
{"enter", 0, PARAM_I16, PARAM_UI8, 0 }, {"enter", 0, PARAM_UI16, PARAM_UI8, 0 },
{"leave", 0, 0, 0, 0 }, {"leave", 0, 0, 0, 0 },
{"retf", 0, PARAM_I16, 0, 0, DASMFLAG_STEP_OUT}, {"retf", 0, PARAM_UI16, 0, 0, DASMFLAG_STEP_OUT},
{"retf", 0, 0, 0, 0, DASMFLAG_STEP_OUT}, {"retf", 0, 0, 0, 0, DASMFLAG_STEP_OUT},
{"int 3", 0, 0, 0, 0, DASMFLAG_STEP_OVER}, {"int 3", 0, 0, 0, 0, DASMFLAG_STEP_OVER},
{"int", 0, PARAM_UI8, 0, 0, DASMFLAG_STEP_OVER}, {"int", 0, PARAM_UI8, 0, 0, DASMFLAG_STEP_OVER},
@ -340,8 +340,8 @@ static const I386_OPCODE i386_opcode_table1[256] =
{"groupD1", GROUP, 0, 0, 0 }, {"groupD1", GROUP, 0, 0, 0 },
{"groupD2", GROUP, 0, 0, 0 }, {"groupD2", GROUP, 0, 0, 0 },
{"groupD3", GROUP, 0, 0, 0 }, {"groupD3", GROUP, 0, 0, 0 },
{"aam", 0, PARAM_I8, 0, 0 }, {"aam", 0, PARAM_UI8, 0, 0 },
{"aad", 0, PARAM_I8, 0, 0 }, {"aad", 0, PARAM_UI8, 0, 0 },
{"salc", 0, 0, 0, 0 }, //AMD docs name it {"salc", 0, 0, 0, 0 }, //AMD docs name it
{"xlat", 0, 0, 0, 0 }, {"xlat", 0, 0, 0, 0 },
{"escape", FPU, 0, 0, 0 }, {"escape", FPU, 0, 0, 0 },
@ -623,7 +623,7 @@ static const I386_OPCODE i386_opcode_table2[256] =
{"pshufw\0" {"pshufw\0"
"pshufd\0" "pshufd\0"
"pshuflw\0" "pshuflw\0"
"pshufhw", MODRM|VAR_NAME4,PARAM_MMX, PARAM_MMXM, PARAM_I8 }, "pshufhw", MODRM|VAR_NAME4,PARAM_MMX, PARAM_MMXM, PARAM_UI8 },
{"group0F71", GROUP, 0, 0, 0 }, {"group0F71", GROUP, 0, 0, 0 },
{"group0F72", GROUP, 0, 0, 0 }, {"group0F72", GROUP, 0, 0, 0 },
{"group0F73", GROUP, 0, 0, 0 }, {"group0F73", GROUP, 0, 0, 0 },
@ -690,7 +690,7 @@ static const I386_OPCODE i386_opcode_table2[256] =
{"pop fs", 0, 0, 0, 0 }, {"pop fs", 0, 0, 0, 0 },
{"cpuid", 0, 0, 0, 0 }, {"cpuid", 0, 0, 0, 0 },
{"bt", MODRM, PARAM_RM, PARAM_REG, 0 }, {"bt", MODRM, PARAM_RM, PARAM_REG, 0 },
{"shld", MODRM, PARAM_RM, PARAM_REG, PARAM_I8 }, {"shld", MODRM, PARAM_RM, PARAM_REG, PARAM_UI8 },
{"shld", MODRM, PARAM_RM, PARAM_REG, PARAM_CL }, {"shld", MODRM, PARAM_RM, PARAM_REG, PARAM_CL },
{"???", 0, 0, 0, 0 }, {"???", 0, 0, 0, 0 },
{"???", 0, 0, 0, 0 }, {"???", 0, 0, 0, 0 },
@ -698,7 +698,7 @@ static const I386_OPCODE i386_opcode_table2[256] =
{"pop gs", 0, 0, 0, 0 }, {"pop gs", 0, 0, 0, 0 },
{"rsm", 0, 0, 0, 0 }, {"rsm", 0, 0, 0, 0 },
{"bts", MODRM, PARAM_RM, PARAM_REG, 0 }, {"bts", MODRM, PARAM_RM, PARAM_REG, 0 },
{"shrd", MODRM, PARAM_RM, PARAM_REG, PARAM_I8 }, {"shrd", MODRM, PARAM_RM, PARAM_REG, PARAM_UI8 },
{"shrd", MODRM, PARAM_RM, PARAM_REG, PARAM_CL }, {"shrd", MODRM, PARAM_RM, PARAM_REG, PARAM_CL },
{"group0FAE", GROUP, 0, 0, 0 }, {"group0FAE", GROUP, 0, 0, 0 },
{"imul", MODRM, PARAM_REG, PARAM_RM, 0 }, {"imul", MODRM, PARAM_REG, PARAM_RM, 0 },
@ -736,12 +736,12 @@ static const I386_OPCODE i386_opcode_table2[256] =
"cmpsd\0" "cmpsd\0"
"cmpss", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, "cmpss", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 },
{"movnti", MODRM, PARAM_RM, PARAM_REG, 0 }, {"movnti", MODRM, PARAM_RM, PARAM_REG, 0 },
{"pinsrw", MODRM, PARAM_MMX, PARAM_MMXM, PARAM_I8 }, {"pinsrw", MODRM, PARAM_MMX, PARAM_MMXM, PARAM_UI8 },
{"pextrw", MODRM, PARAM_MMX, PARAM_MMXM, PARAM_I8 }, {"pextrw", MODRM, PARAM_MMX, PARAM_MMXM, PARAM_UI8 },
{"shufps\0" {"shufps\0"
"shufpd\0" "shufpd\0"
"???\0" "???\0"
"???", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, PARAM_I8 }, "???", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, PARAM_UI8 },
{"group0FC7", GROUP, 0, 0, 0 }, {"group0FC7", GROUP, 0, 0, 0 },
{"bswap", 0, PARAM_EAX, 0, 0 }, {"bswap", 0, PARAM_EAX, 0, 0 },
{"bswap", 0, PARAM_ECX, 0, 0 }, {"bswap", 0, PARAM_ECX, 0, 0 },
@ -1616,14 +1616,14 @@ static const I386_OPCODE i386_opcode_table0F3A[256] =
static const I386_OPCODE group80_table[8] = static const I386_OPCODE group80_table[8] =
{ {
{"add", 0, PARAM_RMPTR8, PARAM_I8, 0 }, {"add", 0, PARAM_RMPTR8, PARAM_UI8, 0 },
{"or", 0, PARAM_RMPTR8, PARAM_I8, 0 }, {"or", 0, PARAM_RMPTR8, PARAM_UI8, 0 },
{"adc", 0, PARAM_RMPTR8, PARAM_I8, 0 }, {"adc", 0, PARAM_RMPTR8, PARAM_UI8, 0 },
{"sbb", 0, PARAM_RMPTR8, PARAM_I8, 0 }, {"sbb", 0, PARAM_RMPTR8, PARAM_UI8, 0 },
{"and", 0, PARAM_RMPTR8, PARAM_I8, 0 }, {"and", 0, PARAM_RMPTR8, PARAM_UI8, 0 },
{"sub", 0, PARAM_RMPTR8, PARAM_I8, 0 }, {"sub", 0, PARAM_RMPTR8, PARAM_UI8, 0 },
{"xor", 0, PARAM_RMPTR8, PARAM_I8, 0 }, {"xor", 0, PARAM_RMPTR8, PARAM_UI8, 0 },
{"cmp", 0, PARAM_RMPTR8, PARAM_I8, 0 } {"cmp", 0, PARAM_RMPTR8, PARAM_UI8, 0 }
}; };
static const I386_OPCODE group81_table[8] = static const I386_OPCODE group81_table[8] =
@ -1652,26 +1652,26 @@ static const I386_OPCODE group83_table[8] =
static const I386_OPCODE groupC0_table[8] = static const I386_OPCODE groupC0_table[8] =
{ {
{"rol", 0, PARAM_RMPTR8, PARAM_I8, 0 }, {"rol", 0, PARAM_RMPTR8, PARAM_UI8, 0 },
{"ror", 0, PARAM_RMPTR8, PARAM_I8, 0 }, {"ror", 0, PARAM_RMPTR8, PARAM_UI8, 0 },
{"rcl", 0, PARAM_RMPTR8, PARAM_I8, 0 }, {"rcl", 0, PARAM_RMPTR8, PARAM_UI8, 0 },
{"rcr", 0, PARAM_RMPTR8, PARAM_I8, 0 }, {"rcr", 0, PARAM_RMPTR8, PARAM_UI8, 0 },
{"shl", 0, PARAM_RMPTR8, PARAM_I8, 0 }, {"shl", 0, PARAM_RMPTR8, PARAM_UI8, 0 },
{"shr", 0, PARAM_RMPTR8, PARAM_I8, 0 }, {"shr", 0, PARAM_RMPTR8, PARAM_UI8, 0 },
{"sal", 0, PARAM_RMPTR8, PARAM_I8, 0 }, {"sal", 0, PARAM_RMPTR8, PARAM_UI8, 0 },
{"sar", 0, PARAM_RMPTR8, PARAM_I8, 0 } {"sar", 0, PARAM_RMPTR8, PARAM_UI8, 0 }
}; };
static const I386_OPCODE groupC1_table[8] = static const I386_OPCODE groupC1_table[8] =
{ {
{"rol", 0, PARAM_RMPTR, PARAM_I8, 0 }, {"rol", 0, PARAM_RMPTR, PARAM_UI8, 0 },
{"ror", 0, PARAM_RMPTR, PARAM_I8, 0 }, {"ror", 0, PARAM_RMPTR, PARAM_UI8, 0 },
{"rcl", 0, PARAM_RMPTR, PARAM_I8, 0 }, {"rcl", 0, PARAM_RMPTR, PARAM_UI8, 0 },
{"rcr", 0, PARAM_RMPTR, PARAM_I8, 0 }, {"rcr", 0, PARAM_RMPTR, PARAM_UI8, 0 },
{"shl", 0, PARAM_RMPTR, PARAM_I8, 0 }, {"shl", 0, PARAM_RMPTR, PARAM_UI8, 0 },
{"shr", 0, PARAM_RMPTR, PARAM_I8, 0 }, {"shr", 0, PARAM_RMPTR, PARAM_UI8, 0 },
{"sal", 0, PARAM_RMPTR, PARAM_I8, 0 }, {"sal", 0, PARAM_RMPTR, PARAM_UI8, 0 },
{"sar", 0, PARAM_RMPTR, PARAM_I8, 0 } {"sar", 0, PARAM_RMPTR, PARAM_UI8, 0 }
}; };
static const I386_OPCODE groupD0_table[8] = static const I386_OPCODE groupD0_table[8] =
@ -1724,8 +1724,8 @@ static const I386_OPCODE groupD3_table[8] =
static const I386_OPCODE groupF6_table[8] = static const I386_OPCODE groupF6_table[8] =
{ {
{"test", 0, PARAM_RMPTR8, PARAM_I8, 0 }, {"test", 0, PARAM_RMPTR8, PARAM_UI8, 0 },
{"test", 0, PARAM_RMPTR8, PARAM_I8, 0 }, {"test", 0, PARAM_RMPTR8, PARAM_UI8, 0 },
{"not", 0, PARAM_RMPTR8, 0, 0 }, {"not", 0, PARAM_RMPTR8, 0, 0 },
{"neg", 0, PARAM_RMPTR8, 0, 0 }, {"neg", 0, PARAM_RMPTR8, 0, 0 },
{"mul", 0, PARAM_RMPTR8, 0, 0 }, {"mul", 0, PARAM_RMPTR8, 0, 0 },
@ -1822,11 +1822,11 @@ static const I386_OPCODE group0F71_table[8] =
{ {
{"???", 0, 0, 0, 0 }, {"???", 0, 0, 0, 0 },
{"???", 0, 0, 0, 0 }, {"???", 0, 0, 0, 0 },
{"psrlw", 0, PARAM_MMX, PARAM_I8, 0 }, {"psrlw", 0, PARAM_MMX, PARAM_UI8, 0 },
{"???", 0, 0, 0, 0 }, {"???", 0, 0, 0, 0 },
{"psraw", 0, PARAM_MMX, PARAM_I8, 0 }, {"psraw", 0, PARAM_MMX, PARAM_UI8, 0 },
{"???", 0, 0, 0, 0 }, {"???", 0, 0, 0, 0 },
{"psllw", 0, PARAM_MMX, PARAM_I8, 0 }, {"psllw", 0, PARAM_MMX, PARAM_UI8, 0 },
{"???", 0, 0, 0, 0 } {"???", 0, 0, 0, 0 }
}; };
@ -1834,23 +1834,23 @@ static const I386_OPCODE group0F72_table[8] =
{ {
{"???", 0, 0, 0, 0 }, {"???", 0, 0, 0, 0 },
{"???", 0, 0, 0, 0 }, {"???", 0, 0, 0, 0 },
{"psrld", 0, PARAM_MMX, PARAM_I8, 0 }, {"psrld", 0, PARAM_MMX, PARAM_UI8, 0 },
{"psrldq", 0, PARAM_MMX, PARAM_I8, 0 }, {"psrldq", 0, PARAM_MMX, PARAM_UI8, 0 },
{"???", 0, 0, 0, 0 }, {"???", 0, 0, 0, 0 },
{"???", 0, 0, 0, 0 }, {"???", 0, 0, 0, 0 },
{"pslld", 0, PARAM_MMX, PARAM_I8, 0 }, {"pslld", 0, PARAM_MMX, PARAM_UI8, 0 },
{"pslldq", 0, PARAM_MMX, PARAM_I8, 0 }, {"pslldq", 0, PARAM_MMX, PARAM_UI8, 0 },
}; };
static const I386_OPCODE group0F73_table[8] = static const I386_OPCODE group0F73_table[8] =
{ {
{"???", 0, 0, 0, 0 }, {"???", 0, 0, 0, 0 },
{"???", 0, 0, 0, 0 }, {"???", 0, 0, 0, 0 },
{"psrlq", 0, PARAM_MMX, PARAM_I8, 0 }, {"psrlq", 0, PARAM_MMX, PARAM_UI8, 0 },
{"???", 0, 0, 0, 0 }, {"???", 0, 0, 0, 0 },
{"psraq", 0, PARAM_MMX, PARAM_I8, 0 }, {"psraq", 0, PARAM_MMX, PARAM_UI8, 0 },
{"???", 0, 0, 0, 0 }, {"???", 0, 0, 0, 0 },
{"psllq", 0, PARAM_MMX, PARAM_I8, 0 }, {"psllq", 0, PARAM_MMX, PARAM_UI8, 0 },
{"???", 0, 0, 0, 0 } {"???", 0, 0, 0, 0 }
}; };
@ -1873,10 +1873,10 @@ static const I386_OPCODE group0FBA_table[8] =
{"???", 0, 0, 0, 0 }, {"???", 0, 0, 0, 0 },
{"???", 0, 0, 0, 0 }, {"???", 0, 0, 0, 0 },
{"???", 0, 0, 0, 0 }, {"???", 0, 0, 0, 0 },
{"bt", 0, PARAM_RM, PARAM_I8, 0 }, {"bt", 0, PARAM_RM, PARAM_UI8, 0 },
{"bts", 0, PARAM_RM, PARAM_I8, 0 }, {"bts", 0, PARAM_RM, PARAM_UI8, 0 },
{"btr", 0, PARAM_RM, PARAM_I8, 0 }, {"btr", 0, PARAM_RM, PARAM_UI8, 0 },
{"btc", 0, PARAM_RM, PARAM_I8, 0 } {"btc", 0, PARAM_RM, PARAM_UI8, 0 }
}; };
static const I386_OPCODE group0FC7_table[8] = static const I386_OPCODE group0FC7_table[8] =