mirror of
https://github.com/brain-hackers/lab
synced 2024-12-22 20:20:04 +09:00
42 lines
646 B
ArmAsm
42 lines
646 B
ArmAsm
.text
|
|
.arm
|
|
.align 4
|
|
|
|
.global _start
|
|
_start:
|
|
stmdb sp!, {r4, lr}
|
|
/* store context */
|
|
movs r4, r0
|
|
|
|
/* Clear the .bss section */
|
|
bl .L_clean_bss
|
|
|
|
/* restore context */
|
|
adr r0, [.L_context]
|
|
str r4, [r0]
|
|
ldr r0, [r0]
|
|
|
|
/* call user's main */
|
|
bl main
|
|
|
|
ldmia sp!, {r4, pc}
|
|
|
|
.L_context:
|
|
.long 0
|
|
|
|
/*
|
|
r0 = start address
|
|
r1 = end address
|
|
tmp: r2
|
|
*/
|
|
.L_clean_bss:
|
|
ldr r0, =__bss_start
|
|
ldr r1, =__bss_end
|
|
sub r1, r1, #4
|
|
mov r2, #0
|
|
.L_clean_bss_loop:
|
|
cmp r0, r1
|
|
strlt r2, [r0], #4
|
|
blt .L_clean_bss_loop
|
|
bx lr
|