crt0.s
来自「俄罗斯高人Mamaich的Pocket gcc编译器(运行在PocketPC上)」· S 代码 · 共 52 行
S
52 行
.text .balign 4 .global _start_start: ld24 sp, _stack ldi fp, #0# Clear the BSS. Do it in two parts for efficiency: longwords first# for most of it, then the remaining 0 to 3 bytes. seth r2, #shigh(__bss_start) add3 r2, r2, #low(__bss_start); R2 = start of BSS seth r3, #shigh(_end) add3 r3, r3, #low(_end) ; R3 = end of BSS + 1 sub r3, r2 ; R3 = BSS size in bytes mv r4, r3 srli r4, #2 ; R4 = BSS size in longwords (rounded down) ldi r1, #0 ; clear R1 for longword store addi r2, #-4 ; account for pre-inc store beqz r4, .Lendloop1 ; any more to go?.Lloop1: st r1, @+r2 ; yep, zero out another longword addi r4, #-1 ; decrement count bnez r4, .Lloop1 ; go do some more.Lendloop1: and3 r4, r3, #3 ; get no. of remaining BSS bytes to clear addi r2, #4 ; account for pre-inc store beqz r4, .Lendloop2 ; any more to go?.Lloop2: stb r1, @r2 ; yep, zero out another byte addi r2, #1 ; bump address addi r4, #-1 ; decrement count bnez r4, .Lloop2 ; go do some more.Lendloop2:# Run code in the .init section.# This will queue the .fini section to be run with atexit. bl __init# Call main, then exit. bl main bl exit# If that fails just loop..Lexit: bra .Lexit
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?