all repos — xyw @ 13b10115f9d4a50b31324d88ca46d76d6f797222

A minimal virtual machine and assembler for terminals.

Refactoring macros.
h3rald h3rald@h3rald.com
Fri, 05 Dec 2025 14:07:45 +0100
commit

13b10115f9d4a50b31324d88ca46d76d6f797222

parent

1cb27c3473d37b755ef2d2e48fbfb27f4d10a65a

1 files changed, 8 insertions(+), 8 deletions(-)

jump to
M xywrun.cxywrun.c

@@ -209,14 +209,14 @@ // clang-format off

//// Operations that support stack and all registers #define OPC_SR2(opc, body) { \ - case opc: { const xyw_byte w = 0, rx=0, ry=0, a = us_pop(), b = us_pop(); body; } break; \ - case XYW_MODE_X|opc: { const xyw_byte w = 0, a = *x, b = us_pop(), rx=1, ry=0; body; } break; \ - case XYW_MODE_Y|opc: { const xyw_byte w = 0, a = *y, b = us_pop(), rx=0, ry=1; body; } break; \ - case XYW_MODE_X|XYW_MODE_Y|opc: { const xyw_byte w = 0, a = *x, b = *y, rx=1, ry=1; body; } break; \ - case XYW_MODE_W|opc: { const xyw_byte w = 1, rx=0, ry=0; xyw_word a = us_popw(); xyw_word b = us_popw(); body; } break; \ - case XYW_MODE_X|XYW_MODE_W|opc: { const xyw_byte w = 1, rx=1, ry=0; xyw_word a = *xw; xyw_word b = us_popw(); body; } break; \ - case XYW_MODE_Y|XYW_MODE_W|opc: { const xyw_byte w = 1, rx=0, ry=1; xyw_word a = *yw; xyw_word b = us_popw(); body; } break; \ - case XYW_MODE_X|XYW_MODE_Y|XYW_MODE_W|opc: { const xyw_byte w = 1, rx=1, ry=1; xyw_word a = *xw; xyw_word b = *yw; body; } break; \ + case opc: { const int w = 0, rx=0, ry=0; xyw_byte a = us_pop(), b = us_pop(); body; } break; \ + case XYW_MODE_X|opc: { const int w = 0, rx=1, ry=0; xyw_byte a = *x, b = us_pop(); body; } break; \ + case XYW_MODE_Y|opc: { const int w = 0, rx=0, ry=1; xyw_byte a = *y, b = us_pop(); body; } break; \ + case XYW_MODE_X|XYW_MODE_Y|opc: { const int w = 0, rx=1, ry=1; xyw_byte a = *x, b = *y; body; } break; \ + case XYW_MODE_W|opc: { const int w = 1, rx=0, ry=0; xyw_word a = us_popw(); xyw_word b = us_popw(); body; } break; \ + case XYW_MODE_X|XYW_MODE_W|opc: { const int w = 1, rx=1, ry=0; xyw_word a = *xw; xyw_word b = us_popw(); body; } break; \ + case XYW_MODE_Y|XYW_MODE_W|opc: { const int w = 1, rx=0, ry=1; xyw_word a = *yw; xyw_word b = us_popw(); body; } break; \ + case XYW_MODE_X|XYW_MODE_Y|XYW_MODE_W|opc: { const int w = 1, rx=1, ry=1; xyw_word a = *xw; xyw_word b = *yw; body; } break; \ } //// Operations that support stack and one register