lc/test.s

90 lines
1.3 KiB
ArmAsm

.section .text
.global main
main:
push %rbp
mov %rsp, %rbp
sub $256, %rsp
movb $72, -32(%rbp)
movb $101, -31(%rbp)
movb $108, -30(%rbp)
movb $108, -29(%rbp)
movb $111, -28(%rbp)
movb $32, -27(%rbp)
movb $119, -26(%rbp)
movb $111, -25(%rbp)
movb $114, -24(%rbp)
movb $108, -23(%rbp)
movb $100, -22(%rbp)
movb $33, -21(%rbp)
movb $10, -20(%rbp)
lea -32(%rbp), %rax
mov %rax, -48(%rbp)
mov $14, %rax
mov %rax, -40(%rbp)
mov -40(%rbp), %rax
push %rax
pop %rdi
call malloc
mov %rax, -56(%rbp)
mov -56(%rbp), %rcx
mov $0, %rax
push %rax
mov $13, %rax
mov %rax, %rdx
pop %rax
mov %rdx, %r8
sub %rax, %r8
inc %r8
add %rcx, %rax
mov %rax, -88(%rbp)
mov %r8, -80(%rbp)
lea -88(%rbp), %rax
mov (%rax), %rcx
mov 8(%rax), %rdx
mov %rcx, -72(%rbp)
mov %rdx, -64(%rbp)
mov $0, %rax
mov %rax, -96(%rbp)
.L0:
mov -96(%rbp), %rax
mov %rax, %rcx
mov -40(%rbp), %rax
cmp %rax, %rcx
setl %al
movzx %al, %rax
test %rax, %rax
jz .L1
mov -72(%rbp), %rcx
mov -96(%rbp), %rax
add %rcx, %rax
push %rax
mov -48(%rbp), %rcx
mov -96(%rbp), %rax
add %rcx, %rax
movzbl (%rax), %eax
pop %rcx
mov %al, (%rcx)
mov -96(%rbp), %rax
mov %rax, %rcx
mov $1, %rax
add %rcx, %rax
mov %rax, -96(%rbp)
jmp .L0
.L1:
mov $1, %rax
push %rax
mov -72(%rbp), %rax
push %rax
mov -64(%rbp), %rax
push %rax
pop %rdx
pop %rsi
pop %rdi
call write
mov $0, %rax
mov %rbp, %rsp
pop %rbp
ret
mov %rbp, %rsp
pop %rbp
ret