forked from NUDT-compiler/nudt-compiler-cpp
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.
2180 lines
38 KiB
2180 lines
38 KiB
.data
|
|
.globl TOKEN_NUM
|
|
.p2align 2
|
|
TOKEN_NUM:
|
|
.word 0
|
|
.globl TOKEN_OTHER
|
|
.p2align 2
|
|
TOKEN_OTHER:
|
|
.word 1
|
|
.globl last_char
|
|
.p2align 2
|
|
last_char:
|
|
.word 32
|
|
.globl num
|
|
.p2align 2
|
|
num:
|
|
.word 0
|
|
.globl other
|
|
.p2align 2
|
|
other:
|
|
.word 0
|
|
.globl cur_token
|
|
.p2align 2
|
|
cur_token:
|
|
.word 0
|
|
|
|
.text
|
|
.globl next_char
|
|
.p2align 2
|
|
next_char:
|
|
.L.next_char.0:
|
|
stp x29, x30, [sp, #-16]!
|
|
mov x29, sp
|
|
bl getch
|
|
mov w8, w0
|
|
adrp x13, last_char
|
|
str w8, [x13, #:lo12:last_char]
|
|
adrp x13, last_char
|
|
ldr w8, [x13, #:lo12:last_char]
|
|
mov w0, w8
|
|
ldp x29, x30, [sp], #16
|
|
ret
|
|
|
|
.text
|
|
.globl is_space
|
|
.p2align 2
|
|
is_space:
|
|
.L.is_space.0:
|
|
stp x29, x30, [sp, #-16]!
|
|
mov x29, sp
|
|
mov w8, w0
|
|
mov w9, #32
|
|
cmp w8, w9
|
|
b.eq .L.is_space.1
|
|
b .L.is_space.3
|
|
.L.is_space.1:
|
|
mov w8, #1
|
|
mov w0, w8
|
|
ldp x29, x30, [sp], #16
|
|
ret
|
|
.L.is_space.2:
|
|
mov w8, #0
|
|
mov w0, w8
|
|
ldp x29, x30, [sp], #16
|
|
ret
|
|
.L.is_space.3:
|
|
mov w9, #10
|
|
cmp w8, w9
|
|
b.eq .L.is_space.1
|
|
b .L.is_space.2
|
|
|
|
.text
|
|
.globl is_num
|
|
.p2align 2
|
|
is_num:
|
|
.L.is_num.0:
|
|
stp x29, x30, [sp, #-16]!
|
|
mov x29, sp
|
|
mov w8, w0
|
|
mov w9, #48
|
|
cmp w8, w9
|
|
b.ge .L.is_num.3
|
|
b .L.is_num.2
|
|
.L.is_num.1:
|
|
mov w8, #1
|
|
mov w0, w8
|
|
ldp x29, x30, [sp], #16
|
|
ret
|
|
.L.is_num.2:
|
|
mov w8, #0
|
|
mov w0, w8
|
|
ldp x29, x30, [sp], #16
|
|
ret
|
|
.L.is_num.3:
|
|
mov w9, #57
|
|
cmp w8, w9
|
|
b.le .L.is_num.1
|
|
b .L.is_num.2
|
|
|
|
.text
|
|
.globl next_token
|
|
.p2align 2
|
|
next_token:
|
|
.L.next_token.0:
|
|
stp x29, x30, [sp, #-16]!
|
|
mov x29, sp
|
|
b .L.next_token.1
|
|
.L.next_token.1:
|
|
adrp x13, last_char
|
|
ldr w8, [x13, #:lo12:last_char]
|
|
mov w0, w8
|
|
bl is_space
|
|
mov w9, w0
|
|
mov w8, #0
|
|
cmp w9, w8
|
|
b.ne .L.next_token.2
|
|
b .L.next_token.3
|
|
.L.next_token.2:
|
|
bl next_char
|
|
mov w8, w0
|
|
b .L.next_token.1
|
|
.L.next_token.3:
|
|
adrp x13, last_char
|
|
ldr w8, [x13, #:lo12:last_char]
|
|
mov w0, w8
|
|
bl is_num
|
|
mov w9, w0
|
|
mov w8, #0
|
|
cmp w9, w8
|
|
b.ne .L.next_token.4
|
|
b .L.next_token.5
|
|
.L.next_token.4:
|
|
adrp x13, last_char
|
|
ldr w9, [x13, #:lo12:last_char]
|
|
mov w8, #48
|
|
sub w8, w9, w8
|
|
adrp x13, num
|
|
str w8, [x13, #:lo12:num]
|
|
b .L.next_token.7
|
|
.L.next_token.5:
|
|
adrp x13, last_char
|
|
ldr w8, [x13, #:lo12:last_char]
|
|
adrp x13, other
|
|
str w8, [x13, #:lo12:other]
|
|
bl next_char
|
|
mov w8, w0
|
|
mov w8, #1
|
|
adrp x13, cur_token
|
|
str w8, [x13, #:lo12:cur_token]
|
|
b .L.next_token.6
|
|
.L.next_token.6:
|
|
adrp x13, cur_token
|
|
ldr w8, [x13, #:lo12:cur_token]
|
|
mov w0, w8
|
|
ldp x29, x30, [sp], #16
|
|
ret
|
|
.L.next_token.7:
|
|
bl next_char
|
|
mov w8, w0
|
|
mov w0, w8
|
|
bl is_num
|
|
mov w9, w0
|
|
mov w8, #0
|
|
cmp w9, w8
|
|
b.ne .L.next_token.8
|
|
b .L.next_token.9
|
|
.L.next_token.8:
|
|
adrp x13, num
|
|
ldr w9, [x13, #:lo12:num]
|
|
mov w8, #10
|
|
mul w9, w9, w8
|
|
adrp x13, last_char
|
|
ldr w8, [x13, #:lo12:last_char]
|
|
add w9, w9, w8
|
|
mov w8, #48
|
|
sub w8, w9, w8
|
|
adrp x13, num
|
|
str w8, [x13, #:lo12:num]
|
|
b .L.next_token.7
|
|
.L.next_token.9:
|
|
mov w8, #0
|
|
adrp x13, cur_token
|
|
str w8, [x13, #:lo12:cur_token]
|
|
b .L.next_token.6
|
|
|
|
.text
|
|
.globl panic
|
|
.p2align 2
|
|
panic:
|
|
.L.panic.0:
|
|
stp x29, x30, [sp, #-16]!
|
|
mov x29, sp
|
|
mov w8, #112
|
|
mov w0, w8
|
|
bl putch
|
|
mov w8, #97
|
|
mov w0, w8
|
|
bl putch
|
|
mov w8, #110
|
|
mov w0, w8
|
|
bl putch
|
|
mov w8, #105
|
|
mov w0, w8
|
|
bl putch
|
|
mov w8, #99
|
|
mov w0, w8
|
|
bl putch
|
|
mov w8, #33
|
|
mov w0, w8
|
|
bl putch
|
|
mov w8, #10
|
|
mov w0, w8
|
|
bl putch
|
|
mov w8, #-1
|
|
mov w0, w8
|
|
ldp x29, x30, [sp], #16
|
|
ret
|
|
|
|
.text
|
|
.globl get_op_prec
|
|
.p2align 2
|
|
get_op_prec:
|
|
.L.get_op_prec.0:
|
|
stp x29, x30, [sp, #-16]!
|
|
mov x29, sp
|
|
mov w8, w0
|
|
mov w9, #43
|
|
cmp w8, w9
|
|
b.eq .L.get_op_prec.1
|
|
b .L.get_op_prec.3
|
|
.L.get_op_prec.1:
|
|
mov w8, #10
|
|
mov w0, w8
|
|
ldp x29, x30, [sp], #16
|
|
ret
|
|
.L.get_op_prec.2:
|
|
mov w9, #42
|
|
cmp w8, w9
|
|
b.eq .L.get_op_prec.4
|
|
b .L.get_op_prec.7
|
|
.L.get_op_prec.3:
|
|
mov w9, #45
|
|
cmp w8, w9
|
|
b.eq .L.get_op_prec.1
|
|
b .L.get_op_prec.2
|
|
.L.get_op_prec.4:
|
|
mov w8, #20
|
|
mov w0, w8
|
|
ldp x29, x30, [sp], #16
|
|
ret
|
|
.L.get_op_prec.5:
|
|
mov w8, #0
|
|
mov w0, w8
|
|
ldp x29, x30, [sp], #16
|
|
ret
|
|
.L.get_op_prec.6:
|
|
mov w9, #37
|
|
cmp w8, w9
|
|
b.eq .L.get_op_prec.4
|
|
b .L.get_op_prec.5
|
|
.L.get_op_prec.7:
|
|
mov w9, #47
|
|
cmp w8, w9
|
|
b.eq .L.get_op_prec.4
|
|
b .L.get_op_prec.6
|
|
|
|
.text
|
|
.globl stack_push
|
|
.p2align 2
|
|
stack_push:
|
|
.L.stack_push.0:
|
|
stp x29, x30, [sp, #-16]!
|
|
mov x29, sp
|
|
mov x8, x0
|
|
mov w9, w1
|
|
ldr w10, [x8]
|
|
mov w11, #1
|
|
add w10, w10, w11
|
|
str w10, [x8]
|
|
ldr w10, [x8]
|
|
sxtw x10, w10
|
|
lsl x10, x10, #2
|
|
add x8, x8, x10
|
|
str w9, [x8]
|
|
ldp x29, x30, [sp], #16
|
|
ret
|
|
|
|
.text
|
|
.globl stack_pop
|
|
.p2align 2
|
|
stack_pop:
|
|
.L.stack_pop.0:
|
|
stp x29, x30, [sp, #-16]!
|
|
mov x29, sp
|
|
mov x8, x0
|
|
ldr w9, [x8]
|
|
sxtw x9, w9
|
|
lsl x9, x9, #2
|
|
add x9, x8, x9
|
|
ldr w9, [x9]
|
|
ldr w10, [x8]
|
|
mov w11, #1
|
|
sub w10, w10, w11
|
|
str w10, [x8]
|
|
mov w0, w9
|
|
ldp x29, x30, [sp], #16
|
|
ret
|
|
|
|
.text
|
|
.globl stack_peek
|
|
.p2align 2
|
|
stack_peek:
|
|
.L.stack_peek.0:
|
|
stp x29, x30, [sp, #-16]!
|
|
mov x29, sp
|
|
mov x8, x0
|
|
ldr w9, [x8]
|
|
sxtw x9, w9
|
|
lsl x9, x9, #2
|
|
add x8, x8, x9
|
|
ldr w8, [x8]
|
|
mov w0, w8
|
|
ldp x29, x30, [sp], #16
|
|
ret
|
|
|
|
.text
|
|
.globl stack_size
|
|
.p2align 2
|
|
stack_size:
|
|
.L.stack_size.0:
|
|
stp x29, x30, [sp, #-16]!
|
|
mov x29, sp
|
|
mov x8, x0
|
|
ldr w8, [x8]
|
|
mov w0, w8
|
|
ldp x29, x30, [sp], #16
|
|
ret
|
|
|
|
.text
|
|
.globl eval_op
|
|
.p2align 2
|
|
eval_op:
|
|
.L.eval_op.0:
|
|
stp x29, x30, [sp, #-16]!
|
|
mov x29, sp
|
|
mov w8, w0
|
|
mov w9, w1
|
|
mov w10, w2
|
|
mov w11, #43
|
|
cmp w8, w11
|
|
b.eq .L.eval_op.1
|
|
b .L.eval_op.2
|
|
.L.eval_op.1:
|
|
add w8, w9, w10
|
|
mov w0, w8
|
|
ldp x29, x30, [sp], #16
|
|
ret
|
|
.L.eval_op.2:
|
|
mov w11, #45
|
|
cmp w8, w11
|
|
b.eq .L.eval_op.3
|
|
b .L.eval_op.4
|
|
.L.eval_op.3:
|
|
sub w8, w9, w10
|
|
mov w0, w8
|
|
ldp x29, x30, [sp], #16
|
|
ret
|
|
.L.eval_op.4:
|
|
mov w11, #42
|
|
cmp w8, w11
|
|
b.eq .L.eval_op.5
|
|
b .L.eval_op.6
|
|
.L.eval_op.5:
|
|
mul w8, w9, w10
|
|
mov w0, w8
|
|
ldp x29, x30, [sp], #16
|
|
ret
|
|
.L.eval_op.6:
|
|
mov w11, #47
|
|
cmp w8, w11
|
|
b.eq .L.eval_op.7
|
|
b .L.eval_op.8
|
|
.L.eval_op.7:
|
|
sdiv w8, w9, w10
|
|
mov w0, w8
|
|
ldp x29, x30, [sp], #16
|
|
ret
|
|
.L.eval_op.8:
|
|
mov w11, #37
|
|
cmp w8, w11
|
|
b.eq .L.eval_op.9
|
|
b .L.eval_op.10
|
|
.L.eval_op.9:
|
|
sdiv w14, w9, w10
|
|
msub w8, w14, w10, w9
|
|
mov w0, w8
|
|
ldp x29, x30, [sp], #16
|
|
ret
|
|
.L.eval_op.10:
|
|
mov w8, #0
|
|
mov w0, w8
|
|
ldp x29, x30, [sp], #16
|
|
ret
|
|
|
|
.text
|
|
.globl eval
|
|
.p2align 2
|
|
eval:
|
|
.L.eval.0:
|
|
stp x29, x30, [sp, #-16]!
|
|
mov x29, sp
|
|
sub sp, sp, #2096
|
|
str x22, [sp, #0]
|
|
str x21, [sp, #8]
|
|
str x19, [sp, #16]
|
|
str x20, [sp, #24]
|
|
mov x10, x29
|
|
sub x10, x10, #1024
|
|
mov w9, #0
|
|
str w9, [x10]
|
|
mov x8, #4
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #8
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #12
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #16
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #20
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #24
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #28
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #32
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #36
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #40
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #44
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #48
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #52
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #56
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #60
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #64
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #68
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #72
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #76
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #80
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #84
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #88
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #92
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #96
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #100
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #104
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #108
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #112
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #116
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #120
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #124
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #128
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #132
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #136
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #140
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #144
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #148
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #152
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #156
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #160
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #164
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #168
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #172
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #176
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #180
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #184
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #188
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #192
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #196
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #200
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #204
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #208
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #212
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #216
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #220
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #224
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #228
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #232
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #236
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #240
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #244
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #248
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #252
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #256
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #260
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #264
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #268
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #272
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #276
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #280
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #284
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #288
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #292
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #296
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #300
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #304
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #308
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #312
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #316
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #320
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #324
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #328
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #332
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #336
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #340
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #344
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #348
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #352
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #356
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #360
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #364
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #368
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #372
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #376
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #380
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #384
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #388
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #392
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #396
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #400
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #404
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #408
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #412
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #416
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #420
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #424
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #428
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #432
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #436
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #440
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #444
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #448
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #452
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #456
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #460
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #464
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #468
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #472
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #476
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #480
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #484
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #488
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #492
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #496
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #500
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #504
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #508
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #512
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #516
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #520
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #524
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #528
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #532
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #536
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #540
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #544
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #548
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #552
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #556
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #560
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #564
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #568
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #572
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #576
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #580
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #584
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #588
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #592
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #596
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #600
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #604
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #608
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #612
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #616
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #620
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #624
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #628
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #632
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #636
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #640
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #644
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #648
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #652
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #656
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #660
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #664
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #668
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #672
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #676
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #680
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #684
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #688
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #692
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #696
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #700
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #704
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #708
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #712
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #716
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #720
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #724
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #728
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #732
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #736
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #740
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #744
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #748
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #752
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #756
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #760
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #764
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #768
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #772
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #776
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #780
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #784
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #788
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #792
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #796
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #800
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #804
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #808
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #812
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #816
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #820
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #824
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #828
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #832
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #836
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #840
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #844
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #848
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #852
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #856
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #860
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #864
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #868
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #872
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #876
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #880
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #884
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #888
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #892
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #896
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #900
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #904
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #908
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #912
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #916
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #920
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #924
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #928
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #932
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #936
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #940
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #944
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #948
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #952
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #956
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #960
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #964
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #968
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #972
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #976
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #980
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #984
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #988
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #992
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #996
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #1000
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #1004
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #1008
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #1012
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #1016
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #1020
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x10, x29
|
|
sub x10, x10, #2048
|
|
str w9, [x10]
|
|
mov x8, #4
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #8
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #12
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #16
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #20
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #24
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #28
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #32
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #36
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #40
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #44
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #48
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #52
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #56
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #60
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #64
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #68
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #72
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #76
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #80
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #84
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #88
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #92
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #96
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #100
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #104
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #108
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #112
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #116
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #120
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #124
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #128
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #132
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #136
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #140
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #144
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #148
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #152
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #156
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #160
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #164
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #168
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #172
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #176
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #180
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #184
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #188
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #192
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #196
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #200
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #204
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #208
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #212
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #216
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #220
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #224
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #228
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #232
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #236
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #240
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #244
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #248
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #252
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #256
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #260
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #264
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #268
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #272
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #276
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #280
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #284
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #288
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #292
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #296
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #300
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #304
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #308
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #312
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #316
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #320
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #324
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #328
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #332
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #336
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #340
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #344
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #348
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #352
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #356
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #360
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #364
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #368
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #372
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #376
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #380
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #384
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #388
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #392
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #396
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #400
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #404
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #408
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #412
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #416
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #420
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #424
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #428
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #432
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #436
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #440
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #444
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #448
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #452
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #456
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #460
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #464
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #468
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #472
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #476
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #480
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #484
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #488
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #492
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #496
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #500
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #504
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #508
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #512
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #516
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #520
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #524
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #528
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #532
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #536
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #540
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #544
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #548
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #552
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #556
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #560
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #564
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #568
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #572
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #576
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #580
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #584
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #588
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #592
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #596
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #600
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #604
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #608
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #612
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #616
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #620
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #624
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #628
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #632
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #636
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #640
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #644
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #648
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #652
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #656
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #660
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #664
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #668
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #672
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #676
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #680
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #684
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #688
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #692
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #696
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #700
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #704
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #708
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #712
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #716
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #720
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #724
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #728
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #732
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #736
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #740
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #744
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #748
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #752
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #756
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #760
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #764
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #768
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #772
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #776
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #780
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #784
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #788
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #792
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #796
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #800
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #804
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #808
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #812
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #816
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #820
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #824
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #828
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #832
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #836
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #840
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #844
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #848
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #852
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #856
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #860
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #864
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #868
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #872
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #876
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #880
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #884
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #888
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #892
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #896
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #900
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #904
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #908
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #912
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #916
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #920
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #924
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #928
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #932
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #936
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #940
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #944
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #948
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #952
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #956
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #960
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #964
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #968
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #972
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #976
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #980
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #984
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #988
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #992
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #996
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #1000
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #1004
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #1008
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #1012
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #1016
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
mov x8, #1020
|
|
add x8, x10, x8
|
|
str w9, [x8]
|
|
adrp x13, cur_token
|
|
ldr w8, [x13, #:lo12:cur_token]
|
|
mov w9, #0
|
|
cmp w8, w9
|
|
b.ne .L.eval.1
|
|
b .L.eval.2
|
|
.L.eval.1:
|
|
bl panic
|
|
mov w8, w0
|
|
mov w0, w8
|
|
ldr x22, [sp, #0]
|
|
ldr x21, [sp, #8]
|
|
ldr x19, [sp, #16]
|
|
ldr x20, [sp, #24]
|
|
add sp, sp, #2096
|
|
ldp x29, x30, [sp], #16
|
|
ret
|
|
.L.eval.2:
|
|
adrp x13, num
|
|
ldr w8, [x13, #:lo12:num]
|
|
mov x9, x29
|
|
sub x9, x9, #1024
|
|
mov x0, x9
|
|
mov w1, w8
|
|
bl stack_push
|
|
bl next_token
|
|
mov w8, w0
|
|
b .L.eval.3
|
|
.L.eval.3:
|
|
adrp x13, cur_token
|
|
ldr w8, [x13, #:lo12:cur_token]
|
|
mov w9, #1
|
|
cmp w8, w9
|
|
b.eq .L.eval.4
|
|
b .L.eval.5
|
|
.L.eval.4:
|
|
adrp x13, other
|
|
ldr w19, [x13, #:lo12:other]
|
|
mov w0, w19
|
|
bl get_op_prec
|
|
mov w8, w0
|
|
mov w9, #0
|
|
cmp w8, w9
|
|
b.eq .L.eval.6
|
|
b .L.eval.7
|
|
.L.eval.5:
|
|
bl next_token
|
|
mov w8, w0
|
|
b .L.eval.14
|
|
.L.eval.6:
|
|
b .L.eval.5
|
|
.L.eval.7:
|
|
bl next_token
|
|
mov w8, w0
|
|
mov w20, w19
|
|
b .L.eval.8
|
|
.L.eval.8:
|
|
mov x8, x29
|
|
sub x8, x8, #2048
|
|
mov x0, x8
|
|
bl stack_size
|
|
mov w8, w0
|
|
mov w9, #0
|
|
cmp w8, w9
|
|
b.ne .L.eval.11
|
|
b .L.eval.10
|
|
.L.eval.9:
|
|
mov x8, x29
|
|
sub x8, x8, #2048
|
|
mov x0, x8
|
|
bl stack_pop
|
|
mov w22, w0
|
|
mov x21, x29
|
|
sub x21, x21, #1024
|
|
mov x0, x21
|
|
bl stack_pop
|
|
mov w19, w0
|
|
mov x0, x21
|
|
bl stack_pop
|
|
mov w8, w0
|
|
mov w0, w22
|
|
mov w1, w8
|
|
mov w2, w19
|
|
bl eval_op
|
|
mov w8, w0
|
|
mov x0, x21
|
|
mov w1, w8
|
|
bl stack_push
|
|
b .L.eval.8
|
|
.L.eval.10:
|
|
mov x8, x29
|
|
sub x8, x8, #2048
|
|
mov x0, x8
|
|
mov w1, w20
|
|
bl stack_push
|
|
adrp x13, cur_token
|
|
ldr w9, [x13, #:lo12:cur_token]
|
|
mov w8, #0
|
|
cmp w9, w8
|
|
b.ne .L.eval.12
|
|
b .L.eval.13
|
|
.L.eval.11:
|
|
mov x8, x29
|
|
sub x8, x8, #2048
|
|
mov x0, x8
|
|
bl stack_peek
|
|
mov w8, w0
|
|
mov w0, w8
|
|
bl get_op_prec
|
|
mov w19, w0
|
|
mov w0, w20
|
|
bl get_op_prec
|
|
mov w8, w0
|
|
cmp w19, w8
|
|
b.ge .L.eval.9
|
|
b .L.eval.10
|
|
.L.eval.12:
|
|
bl panic
|
|
mov w8, w0
|
|
mov w0, w8
|
|
ldr x22, [sp, #0]
|
|
ldr x21, [sp, #8]
|
|
ldr x19, [sp, #16]
|
|
ldr x20, [sp, #24]
|
|
add sp, sp, #2096
|
|
ldp x29, x30, [sp], #16
|
|
ret
|
|
.L.eval.13:
|
|
adrp x13, num
|
|
ldr w9, [x13, #:lo12:num]
|
|
mov x8, x29
|
|
sub x8, x8, #1024
|
|
mov x0, x8
|
|
mov w1, w9
|
|
bl stack_push
|
|
bl next_token
|
|
mov w8, w0
|
|
b .L.eval.3
|
|
.L.eval.14:
|
|
mov x8, x29
|
|
sub x8, x8, #2048
|
|
mov x0, x8
|
|
bl stack_size
|
|
mov w8, w0
|
|
mov w9, #0
|
|
cmp w8, w9
|
|
b.ne .L.eval.15
|
|
b .L.eval.16
|
|
.L.eval.15:
|
|
mov x8, x29
|
|
sub x8, x8, #2048
|
|
mov x0, x8
|
|
bl stack_pop
|
|
mov w19, w0
|
|
mov x20, x29
|
|
sub x20, x20, #1024
|
|
mov x0, x20
|
|
bl stack_pop
|
|
mov w21, w0
|
|
mov x0, x20
|
|
bl stack_pop
|
|
mov w8, w0
|
|
mov w0, w19
|
|
mov w1, w8
|
|
mov w2, w21
|
|
bl eval_op
|
|
mov w8, w0
|
|
mov x0, x20
|
|
mov w1, w8
|
|
bl stack_push
|
|
b .L.eval.14
|
|
.L.eval.16:
|
|
mov x8, x29
|
|
sub x8, x8, #1024
|
|
mov x0, x8
|
|
bl stack_peek
|
|
mov w8, w0
|
|
mov w0, w8
|
|
ldr x22, [sp, #0]
|
|
ldr x21, [sp, #8]
|
|
ldr x19, [sp, #16]
|
|
ldr x20, [sp, #24]
|
|
add sp, sp, #2096
|
|
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 x19, [sp, #0]
|
|
bl getint
|
|
mov w19, w0
|
|
bl getch
|
|
mov w8, w0
|
|
bl next_token
|
|
mov w8, w0
|
|
b .L.main.1
|
|
.L.main.1:
|
|
mov w8, #0
|
|
cmp w19, w8
|
|
b.ne .L.main.2
|
|
b .L.main.3
|
|
.L.main.2:
|
|
bl eval
|
|
mov w8, w0
|
|
mov w0, w8
|
|
bl putint
|
|
mov w8, #10
|
|
mov w0, w8
|
|
bl putch
|
|
mov w8, #1
|
|
sub w8, w19, w8
|
|
mov w19, w8
|
|
b .L.main.1
|
|
.L.main.3:
|
|
mov w8, #0
|
|
mov w0, w8
|
|
ldr x19, [sp, #0]
|
|
add sp, sp, #32
|
|
ldp x29, x30, [sp], #16
|
|
ret
|