46 lines
727 B
NASM
46 lines
727 B
NASM
|
|
data $0x1000 .. $0x1100 {
|
||
|
|
zstr: .zstring "This is a zero-terminated string"
|
||
|
|
|
||
|
|
.export zstr
|
||
|
|
}
|
||
|
|
|
||
|
|
code $0x0 {
|
||
|
|
zstr_len:
|
||
|
|
storeimm32 %r15, $0xFF
|
||
|
|
storeimm32 %r16, $1
|
||
|
|
storeimm64 %r20, zstr_next
|
||
|
|
storeimm64 %r21, exit_zstr
|
||
|
|
|
||
|
|
regcopy %r10, %r00
|
||
|
|
|
||
|
|
zstr_next:
|
||
|
|
load %r11, %r10
|
||
|
|
and %r11, %r15
|
||
|
|
cmpeq %r11, %null
|
||
|
|
jnz %r21
|
||
|
|
add %r10, %r16
|
||
|
|
jmp %r20
|
||
|
|
|
||
|
|
main:
|
||
|
|
storeimm64 %r05, zstr_len
|
||
|
|
storeimm64 %r00, zstr
|
||
|
|
jmp %r05
|
||
|
|
|
||
|
|
exit_zstr:
|
||
|
|
regcopy %status, %r10
|
||
|
|
halt
|
||
|
|
|
||
|
|
ineg %r00
|
||
|
|
add %r10, %r00
|
||
|
|
regcopy %status, %r10
|
||
|
|
|
||
|
|
end:
|
||
|
|
halt
|
||
|
|
|
||
|
|
.export main
|
||
|
|
}
|
||
|
|
|
||
|
|
meta {
|
||
|
|
entry: main
|
||
|
|
}
|