mirror of
https://github.com/brain-hackers/lab
synced 2024-11-14 22:28:00 +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
|