diff --git a/flagvm b/flagvm deleted file mode 100755 index 364a20f..0000000 Binary files a/flagvm and /dev/null differ diff --git a/src/interp.c b/src/interp.c index 81d2d56..f9b340b 100644 --- a/src/interp.c +++ b/src/interp.c @@ -162,12 +162,18 @@ int main(int argc, char **argv) { negativeFlag = (val < 0); break; } - case 0x60: { + case 0x60: { // AddR64 unsigned char dst = inputs[0]; unsigned char src = inputs[1]; registers[dst] += registers[src]; break; } + case 0x72: { // DivR64 + unsigned char dst = inputs[0]; + unsigned char src = inputs[1]; + registers[dst] /= registers[src]; + break; + } case 0xC0: { // Jmp unsigned char addr = inputs[0]; xPc = registers[addr]; diff --git a/tests/div.asm b/tests/div.asm new file mode 100644 index 0000000..6f8bc35 --- /dev/null +++ b/tests/div.asm @@ -0,0 +1,10 @@ +include "fvm.inc" + +org 0x4000000000000000 + MovI64 r95, UART_TX + MovI64 r2, 64 + MovI64 r3, 16 + DivR64 r2, r3 + MovI64 r4, 48 ; ascii for 0 + AddR64 r2, r4 + St8 r2, r95 diff --git a/tests/fvm.inc b/tests/fvm.inc index 8aefca8..0b494bb 100644 --- a/tests/fvm.inc +++ b/tests/fvm.inc @@ -236,6 +236,12 @@ macro AddR64 dst, src db src end macro +macro DivR64 dst, src + db 0x72 + db dst + db src +end macro + macro RSetF reg db 0x42 db reg