From ec87a7003497098225fa8c4ab14caa2f2c503a72 Mon Sep 17 00:00:00 2001 From: kitty Date: Mon, 20 Apr 2026 19:44:00 +1000 Subject: vocab stuff, compare --- sanctuary.s | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) (limited to 'sanctuary.s') diff --git a/sanctuary.s b/sanctuary.s index 4108078..83b924e 100644 --- a/sanctuary.s +++ b/sanctuary.s @@ -1108,6 +1108,58 @@ defcode "u>=", ugreatereq, 0 ret ; }}} +; todo doc +; ( a¹ u¹ a² u² -- n ) +defcode "compare", compare, 0 + pspop r11 ; u2 + pspop rdi ; a2 + pspop r13 ; u1 + pspop rsi ; a1 + + ; check a* = 0? + +.loop: + cmpsb + + jl .below + jg .above + + dec r11 + dec r13 + + ; check both = 0 + ; either of these = 0 then jmp accordingly also + + cmp r11, 0 + jne .11n0 + + cmp r13, 0 ; r11 = r13 & strings identical + je .same + + ; u2 > u1 + jmp .above + +.11n0: + cmp r13, 0 ; u1 < u2 + je .below + +.cont: + jmp .loop + +.below: + mov r11, true + jmp .e + +.above: + mov r11, 1 + jmp .e + +.same: + mov r11, false +.e: + pspush r11 + ret + defcode "branch", branch, 0 mov r12, [dp] mov byte [r12], 0xe9 -- cgit v1.2.3