int is_long,
int show_ext)
{
- int val, opnum, need_comma = 0;
+ unsigned int val, opnum;
const struct d30v_operand *oper;
- int i, match, need_paren = 0, found_control = 0;
+ int i, match, need_comma = 0, need_paren = 0, found_control = 0;
unsigned int opind = 0;
(*info->fprintf_func) (info->stream, "%s", insn->op->name);
/* IMM6S3 is unsigned. */
if (oper->flags & OPERAND_SIGNED || bits == 32)
{
- long max;
- max = (1 << (bits - 1));
- if (val & max)
+ unsigned int sign = 1u << (bits - 1);
+ if (val & sign)
{
- if (bits == 32)
- val = -val;
- else
- val = -val & ((1 << bits) - 1);
+ val = -val & (sign + sign - 1);
neg = 1;
}
}
{
if (oper->flags & OPERAND_SIGNED)
{
- int max = (1 << (bits - 1));
+ unsigned int sign = 1u << (bits - 1);
- if (val & max)
+ if (val & sign)
{
- val = -val;
- if (bits < 32)
- val &= ((1 << bits) - 1);
+ val = -val & (sign + sign - 1);
(*info->fprintf_func) (info->stream, "-");
}
}