85 lines
839 B
Plaintext
85 lines
839 B
Plaintext
@ 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
|