Hi,
> s->acc =
> GET_HEAP(s->execution_stack[s->execution_stack_pos].pc);
> vm.c 374 Info 734: Loss of precision (assignment) (31 bits to 15 bits)
This is a selector read operation; SCI is a 16 bit VM (and we're doing a signed
read here, so I guess that's what it means by 15 bits), so we don't need the
extra sign bits anyway.
> xstack->variables[VAR_LOCAL] = localvarp;
> vm.c 426 Info 734: Loss of precision (assignment) (31 bits to 16 bits)
The local variable pointer only needs 16 bits.
> vm.c 547 Info 788: enum constant 'Script_Invalid' not used within
> defaulted
> switch
> vm.c 547 Info 788: enum constant 'Script_None' not used within defaulted
> switch
> vm.c 547 Info 788: enum constant 'Script_End' not used within defaulted
> switch
Added those, with an appropriate error message. Thanks!
> s->acc = ((guint16) POP()) >> s->acc;
> vm.c 576 Info 734: Loss of precision (assignment) (16 bits to 15 bits)
That one definitely works...
[...]
> utemp = xs->variables[var_number] + (opparams[0] << 1);
> vm.c 1100 Info 701: Shift left of signed quantity (int)
opparams[] here and in the following cases are read as unsigned variables.
(lint can't know this without linking, of course...)
[...]
llap,
Christoph