55713495de9aa75a0fceee38a3e93d66c4b41864
[vvhitespace] / stdlib / string.pvvs
#ifndef VVS_STDLIB_STRING
#define VVS_STDLIB_STRING
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ Name:
@ strlen (100000)
@ Description:
@ Counts number of words in a null-terminated string.
@ Returned number does not include the null-terminator.
@ Call Stack:
@ pointer to first character <-- TOS
@ Return Stack:
@ number of words in string <-- TOS
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
NSSVTSSSSSN | Mark: 100000 (strlen)
@ Create a length counter.
SSSSN | PUSH 0
SNT | SWAP
@ Increment the counter (and pointer) on each pass through the loop.
NSSVSSTSSSSSSSSSSSSSN | Mark: 00100000 00000000
SNS | DUP
TTT | LOAD
NTSSSTSSSSSSSSSSSSTN | BRZ > 00100000 00000001
SNT | SWAP
SSSTN | PUSH 1
TSSS | ADD
SNT | SWAP
SSSTN | PUSH 1
TSSS | ADD
NSNSSTSSSSSSSSSSSSSN | JMP > 00100000 00000000
@ Clean up and return.
NSSVSSTSSSSSSSSSSSSTN | Mark: 00100000 00000001
SNN | DROP
NTN | RTS
#endif