mirror of
https://github.com/nunuhara/xsystem4.git
synced 2026-10-03 20:38:13 +03:00
Fix arithmetic assignment instructions
The assigned value is pushed to the stack.
This commit is contained in:
@@ -573,43 +573,43 @@ static void execute_instruction(int16_t opcode)
|
||||
// +=, -=, etc.
|
||||
case PLUSA:
|
||||
v = stack_pop().i;
|
||||
stack_pop_ref()[0].i += v;
|
||||
stack_push(stack_pop_ref()[0].i += v);
|
||||
break;
|
||||
case MINUSA:
|
||||
v = stack_pop().i;
|
||||
stack_pop_ref()[0].i -= v;
|
||||
stack_push(stack_pop_ref()[0].i -= v);
|
||||
break;
|
||||
case MULA:
|
||||
v = stack_pop().i;
|
||||
stack_pop_ref()[0].i *= v;
|
||||
stack_push(stack_pop_ref()[0].i *= v);
|
||||
break;
|
||||
case DIVA:
|
||||
v = stack_pop().i;
|
||||
stack_pop_ref()[0].i /= v;
|
||||
stack_push(stack_pop_ref()[0].i /= v);
|
||||
break;
|
||||
case MODA:
|
||||
v = stack_pop().i;
|
||||
stack_pop_ref()[0].i %= v;
|
||||
stack_push(stack_pop_ref()[0].i %= v);
|
||||
break;
|
||||
case ANDA:
|
||||
v = stack_pop().i;
|
||||
stack_pop_ref()[0].i &= v;
|
||||
stack_push(stack_pop_ref()[0].i &= v);
|
||||
break;
|
||||
case ORA:
|
||||
v = stack_pop().i;
|
||||
stack_pop_ref()[0].i |= v;
|
||||
stack_push(stack_pop_ref()[0].i |= v);
|
||||
break;
|
||||
case XORA:
|
||||
v = stack_pop().i;
|
||||
stack_pop_ref()[0].i ^= v;
|
||||
stack_push(stack_pop_ref()[0].i ^= v);
|
||||
break;
|
||||
case LSHIFTA:
|
||||
v = stack_pop().i;
|
||||
stack_pop_ref()[0].i <<= v;
|
||||
stack_push(stack_pop_ref()[0].i <<= v);
|
||||
break;
|
||||
case RSHIFTA:
|
||||
v = stack_pop().i;
|
||||
stack_pop_ref()[0].i >>= v;
|
||||
stack_push(stack_pop_ref()[0].i >>= v);
|
||||
break;
|
||||
case INC:
|
||||
stack_pop_ref()[0].i++;
|
||||
@@ -617,6 +617,9 @@ static void execute_instruction(int16_t opcode)
|
||||
case DEC:
|
||||
stack_pop_ref()[0].i--;
|
||||
break;
|
||||
case ITOB:
|
||||
stack_set(0, !!stack_peek(0).i);
|
||||
break;
|
||||
//
|
||||
// --- Floating Point Arithmetic ---
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user