diff options
| author | kitty <nepeta@canaglie.net> | 2026-04-20 19:44:00 +1000 |
|---|---|---|
| committer | kitty <nepeta@canaglie.net> | 2026-04-20 19:44:00 +1000 |
| commit | ec87a7003497098225fa8c4ab14caa2f2c503a72 (patch) | |
| tree | ad230eb084284fc2dd68d0a483ad54b9c46a9d07 /sanctuary.s | |
| parent | 642df8d7a83493f7486c9b94b6f94ca4ce97ec32 (diff) | |
vocab stuff, compare
Diffstat (limited to 'sanctuary.s')
| -rw-r--r-- | sanctuary.s | 52 |
1 files changed, 52 insertions, 0 deletions
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 |
