65816-llvm-mos/bench_simple.s
Scott Duensing f338d93bae Checkpoint
2026-05-02 18:30:15 -05:00

51 lines
1.3 KiB
ArmAsm

; Generated by Calypsi ISO C compiler for 65816
.rtmodel version,"1"
.rtmodel codeModel,"large"
.rtmodel dataModel,"small"
.rtmodel core,"65816"
.rtmodel huge,"0"
.rtmodel target,"none-specified"
.extern _Dp
.extern _Mul16
.extern _Vfp
; unsigned long sumOfSquares(unsigned short n) {
.section farcode,text
.public sumOfSquares
sumOfSquares:
phy
phy
sta 1,s
; unsigned long total = 0;
stz dp:.tiny _Dp
stz dp:.tiny (_Dp+2)
; for (unsigned short i = 1; i <= n; i++) total += (unsigned long)i * i;
lda ##1
sta 3,s
`?L5`: lda 1,s
cmp 3,s
bcs `?L4`
; return total;
ldx dp:.tiny (_Dp+2)
lda dp:.tiny _Dp
; }
ply
ply
rtl
`?L4`: lda 3,s
tax
jsl long:_Mul16
clc
adc dp:.tiny _Dp
pha
txa
adc dp:.tiny (_Dp+2)
tax
pla
stx dp:.tiny (_Dp+2)
sta dp:.tiny _Dp
lda 3,s
inc a
sta 3,s
bra `?L5`