📄 crt0.s
字号:
; ARC start up file; In the absence of a custom linker script, go with something simple.; We do not support passing arguments to "main", but this is an embedded; system anyway.;; We call init/fini here without cpu prefixes because there is always; only one .init/.fini section per image. .section .text .align 4 .global startstart: mov sp,end ; Round "sp" up to page after "end". add sp,sp,4095 and sp,sp,-4096 ld r8,[stack_size] ; Add stack size to "sp". add sp,sp,r8 st sp,[sbrk_start] ; Initialize malloc heap. st sp,[sbrk_loc] sub sp,sp,16 ; callee expects 16 bytes already "pushed". mov fp,0 ; Top of stack frame indicator. mov r0,edata ; Zero bss. mov r2,end sub r2,r2,r0 mov r1,0#ifdef __base__ bl.nd _memset bl.nd init ; .init section entry point. mov r0,%st(fini) ; .fini section entry point. bl.nd _atexit mov r0,0 ; argc mov r1,0 ; argv bl.nd _main bl.nd _exit#endif#ifdef __host__ bl.nd _host_memset bl.nd init ; .init section entry point. mov r0,%st(fini) ; .fini section entry point. bl.nd _host_atexit mov r0,0 ; argc mov r1,0 ; argv bl.nd _host_main bl.nd _host_exit#endif#ifdef __graphics__ bl.nd _graphics_memset bl.nd init ; .init section entry point. mov r0,%st(fini) ; .fini section entry point. bl.nd _graphics_atexit mov r0,0 ; argc mov r1,0 ; argv bl.nd _graphics_main bl.nd _graphics_exit#endif#ifdef __audio__ bl.nd _audio_memset bl.nd init ; .init section entry point. mov r0,%st(fini) ; .fini section entry point. bl.nd _audio_atexit mov r0,0 ; argc mov r1,0 ; argv bl.nd _audio_main bl.nd _audio_exit#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -