40 lines
598 B
NASM
40 lines
598 B
NASM
PRESERVE8
|
|
AREA |.text|, CODE, ALIGN=3
|
|
CODE16
|
|
EXTERN main
|
|
EXTERN ||Image$$.bss$$ZI$$Base||
|
|
EXTERN ||Image$$.bss$$ZI$$Limit||
|
|
EXTERN ||Image$$.stack$$ZI$$Limit||
|
|
GLOBAL __main
|
|
ENTRY
|
|
|
|
__main
|
|
; initialize stack pointer
|
|
mov r0, #0
|
|
ldr r1, _SP
|
|
mov sp, r1
|
|
mov fp, r0
|
|
|
|
; clear .bss-section
|
|
ldr r4, BSS_S
|
|
ldr r5, BSS_E
|
|
subs r5, r5, r4
|
|
beq gomain
|
|
bss_clear
|
|
strb r0, [r4]
|
|
add r4, r4, #1
|
|
subs r5, r5, #1
|
|
bne bss_clear
|
|
|
|
gomain
|
|
bl main
|
|
nop
|
|
_end
|
|
b _end
|
|
|
|
BSS_S DCD ||Image$$.bss$$ZI$$Base||
|
|
BSS_E DCD ||Image$$.bss$$ZI$$Limit||
|
|
_SP DCD ||Image$$.stack$$ZI$$Limit||
|
|
|
|
|
|
END |