sus-regex/meow.s

95 lines
1.1 KiB
ArmAsm
Raw Normal View History

2024-04-03 15:18:26 +03:00
.globl _start
.type _start, @function
.globl entry
.type entry, @function
_start:
#mov -4(%ebp),%eax
pop %rax
mov %rax,argc(%rip)
mov %rax,%rdi
pop %rax
mov %rax,argv(%rip)
cmp $1,%rdi
2024-04-04 20:18:10 +03:00
jg _start_endif
2024-04-03 15:18:26 +03:00
mov $1,%rdi
call usage
jmp _exit
2024-04-04 20:18:10 +03:00
_start_endif:
2024-04-03 15:18:26 +03:00
mov $0,%rdi
jmp _exit
usage:
lea help0(%rip),%rdi
mov $help0l,%rsi
call write
2024-04-04 09:23:46 +03:00
mov argv(%rip),%rdi
2024-04-03 15:18:26 +03:00
push %rdi
call strlen
pop %rdi
mov %rax,%rsi
call write
lea help1(%rip),%rdi
mov $help1l,%rsi
call write
ret
# rdi - buf
# -> rax - len
strlen:
2024-04-04 07:22:41 +03:00
mov %rdi,%rsi
xor %rax,%rax
repne scasb
sub %rsi,%rdi
2024-04-03 15:18:26 +03:00
mov %rdi,%rax
ret
# rdi - buf
# rsi - len
write:
push %rdi
push %rsi
pop %rdx
pop %rsi
mov $1,%rax
mov $1,%rdi
syscall
ret
2024-04-04 20:18:10 +03:00
2024-04-03 15:18:26 +03:00
help0:
.ascii "Usage: "
.set help0l, .-help0
help1:
.ascii " regex0 [regex1 ...]\nstdout: NUL-separated list of matching strings\n"
.set help1l, .-help1
2024-04-04 20:18:10 +03:00
# rdi - exit code
2024-04-03 15:18:26 +03:00
_exit:
mov $0x3c,%rax
syscall
ret
2024-04-04 20:18:10 +03:00
2024-04-03 15:18:26 +03:00
entry:
2024-04-04 20:18:10 +03:00
push %r12
sub $8,%r12
mov %rsp,%r12
entry_parse_begin:
test %rdi,%rdi
jnz entry_parse_end
mov %rdi,%rcx
inc %rdi
entry_parse_end:
mov %r12,%rsp
add $8,%r12
pop %r12
2024-04-03 15:18:26 +03:00
ret
.bss
argc:
.zero 8
argv:
.zero 8