Add std/string/array/compare.lb
This commit is contained in:
parent
efa1d86be9
commit
ba274c0371
84
std/string/array/compare.lb
Normal file
84
std/string/array/compare.lb
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
@ 0 ; Getting all arguments
|
||||||
|
args 0
|
||||||
|
size
|
||||||
|
|
||||||
|
args 1
|
||||||
|
dup
|
||||||
|
|#insert push
|
||||||
|
push 1
|
||||||
|
|#insert jmp
|
||||||
|
|args
|
||||||
|
jmp 255
|
||||||
|
|
||||||
|
@ 1
|
||||||
|
dup
|
||||||
|
#expr +
|
||||||
|
pick ; Finish getting arguments
|
||||||
|
|
||||||
|
dup ; Duplicate top two elements
|
||||||
|
push 2
|
||||||
|
pick
|
||||||
|
|
||||||
|
sub ; Lengths unequal => strings unequal
|
||||||
|
jnz 2
|
||||||
|
|
||||||
|
pop
|
||||||
|
push 0
|
||||||
|
|
||||||
|
@ 4
|
||||||
|
|
||||||
|
dup ; Duplicate top two elements
|
||||||
|
push 2
|
||||||
|
pick
|
||||||
|
; |str_size index...>
|
||||||
|
|
||||||
|
sub
|
||||||
|
jz 5
|
||||||
|
|
||||||
|
; |index str_size...>
|
||||||
|
dup ; Get current symbol of s1
|
||||||
|
push 2
|
||||||
|
add
|
||||||
|
pick
|
||||||
|
; |char index str_size...>
|
||||||
|
|
||||||
|
push 2 ; Get string size
|
||||||
|
pick
|
||||||
|
|
||||||
|
push 2 ; Get current symbol of s2
|
||||||
|
pick
|
||||||
|
add
|
||||||
|
push 4
|
||||||
|
add
|
||||||
|
pick
|
||||||
|
|
||||||
|
sub ; Check symbol equality
|
||||||
|
jnz 2
|
||||||
|
|
||||||
|
; |index...>
|
||||||
|
#expr +
|
||||||
|
|
||||||
|
jmp 4
|
||||||
|
|
||||||
|
@ 2 ; Clear stack (diff)
|
||||||
|
size
|
||||||
|
jz 3
|
||||||
|
pop
|
||||||
|
jmp 2
|
||||||
|
|
||||||
|
@ 3 ; Exit, string are different
|
||||||
|
push 0
|
||||||
|
quit
|
||||||
|
|
||||||
|
@ 6 ; Clear stack (equ)
|
||||||
|
size
|
||||||
|
jz 5
|
||||||
|
pop
|
||||||
|
jmp 6
|
||||||
|
|
||||||
|
@ 5 ; Exit, string are the same
|
||||||
|
push 1
|
||||||
|
quit
|
||||||
|
|
||||||
|
|
||||||
|
@ 255
|
Loading…
Reference in New Issue
Block a user