31 lines
838 B
ArmAsm
31 lines
838 B
ArmAsm
; Evaluate 2^10 - loop variant
|
|
|
|
push 2
|
|
push 10
|
|
call &pow
|
|
clr 2
|
|
halt
|
|
|
|
pow: lda 1 ; base
|
|
lda 0 ; exp
|
|
push 1 ; acc
|
|
|
|
; | Stack:
|
|
.loop: ldl 1 ; if exp == 0 | exp
|
|
je &.done ; then return | exp
|
|
pop ; |
|
|
; |
|
|
ldl 2 ; Evaluate | acc
|
|
ldl 0 ; next power | acc base
|
|
mul ; | acc*base
|
|
stl 2 ; |
|
|
; |
|
|
ldl 1 ; Decrement exp | exp
|
|
push 1 ; | exp 1
|
|
sub ; | exp-1
|
|
stl 1 ; |
|
|
jmp &.loop ; |
|
|
|
|
.done: ldl 2 ; | ... acc
|
|
ret ; | acc
|