diff --git a/src/interfaces/irdb/STARS_IRDB_Op.cpp b/src/interfaces/irdb/STARS_IRDB_Op.cpp index b9ff2fe8661daccb953edd2e350e89baf0a73725..5f7848986835437c814222743b3390e26f78246b 100644 --- a/src/interfaces/irdb/STARS_IRDB_Op.cpp +++ b/src/interfaces/irdb/STARS_IRDB_Op.cpp @@ -212,7 +212,20 @@ no operands for eflags or mxcsr? break; case CONSTANT_TYPE + ABSOLUTE_ : OpType=op_Imm; - operand.imm.imm=d.Instruction.Immediat; + switch(the_arg.ArgSize) + { + case 8: + operand.imm.imm=(signed int)(signed char)d.Instruction.Immediat; + break; + case 16: + operand.imm.imm=(signed int)(signed short)d.Instruction.Immediat; + break; + case 32: + default: + operand.imm.imm=d.Instruction.Immediat; + break; + + } operand.imm.pc_rel=false; byteWidth=the_arg.ArgSize/8; break;