You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

158 lines
2.4 KiB

.data
.globl a
.p2align 2
a:
.word -1
.globl b
.p2align 2
b:
.word 1
.text
.globl inc_a
.p2align 2
inc_a:
.L.inc_a.0:
stp x29, x30, [sp, #-16]!
mov x29, sp
adrp x13, a
ldr w8, [x13, #:lo12:a]
mov w9, #1
add w8, w8, w9
adrp x13, a
str w8, [x13, #:lo12:a]
adrp x13, a
ldr w8, [x13, #:lo12:a]
mov w0, w8
ldp x29, x30, [sp], #16
ret
.text
.globl main
.p2align 2
main:
.L.main.0:
stp x29, x30, [sp, #-16]!
mov x29, sp
sub sp, sp, #32
str x20, [sp, #0]
str x19, [sp, #8]
mov w8, #5
mov w19, w8
b .L.main.1
.L.main.1:
mov w8, #0
cmp w19, w8
b.ge .L.main.2
b .L.main.3
.L.main.2:
bl inc_a
mov w8, w0
mov w9, #0
cmp w8, w9
b.ne .L.main.7
b .L.main.5
.L.main.3:
adrp x13, a
ldr w8, [x13, #:lo12:a]
mov w0, w8
bl putint
mov w8, #32
mov w0, w8
bl putch
adrp x13, b
ldr w8, [x13, #:lo12:b]
mov w0, w8
bl putint
mov w8, #10
mov w0, w8
bl putch
adrp x13, a
ldr w8, [x13, #:lo12:a]
mov w0, w8
ldr x20, [sp, #0]
ldr x19, [sp, #8]
add sp, sp, #32
ldp x29, x30, [sp], #16
ret
.L.main.4:
adrp x13, a
ldr w8, [x13, #:lo12:a]
mov w0, w8
bl putint
mov w8, #32
mov w0, w8
bl putch
adrp x13, b
ldr w8, [x13, #:lo12:b]
mov w0, w8
bl putint
mov w8, #10
mov w0, w8
bl putch
b .L.main.5
.L.main.5:
bl inc_a
mov w8, w0
mov w9, #14
cmp w8, w9
b.lt .L.main.8
b .L.main.11
.L.main.6:
bl inc_a
mov w8, w0
mov w9, #0
cmp w8, w9
b.ne .L.main.4
b .L.main.5
.L.main.7:
bl inc_a
mov w8, w0
mov w9, #0
cmp w8, w9
b.ne .L.main.6
b .L.main.5
.L.main.8:
adrp x13, a
ldr w8, [x13, #:lo12:a]
mov w0, w8
bl putint
mov w8, #10
mov w0, w8
bl putch
adrp x13, b
ldr w9, [x13, #:lo12:b]
mov w8, #2
lsl w8, w9, #1
adrp x13, b
str w8, [x13, #:lo12:b]
b .L.main.10
.L.main.9:
bl inc_a
mov w8, w0
b .L.main.10
.L.main.10:
mov w8, #1
sub w8, w19, w8
mov w19, w8
b .L.main.1
.L.main.11:
bl inc_a
mov w8, w0
mov w9, #0
cmp w8, w9
b.ne .L.main.12
b .L.main.9
.L.main.12:
bl inc_a
mov w20, w0
bl inc_a
mov w8, w0
sub w8, w20, w8
mov w9, #1
add w8, w8, w9
mov w9, #0
cmp w8, w9
b.ne .L.main.8
b .L.main.9