90 lines
1.3 KiB
ArmAsm
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
|