📄 crt0.s
字号:
%macro EXPORT 1%ifdef UNDERBARS GLOBAL %1 %1:%else GLOBAL _%1 _%1:%endif%endmacro%macro IMPORT 1%ifdef UNDERBARS EXTERN _%1 ; use this for GCC with DOS (DJGPP; COFF) %define %1 _%1%else EXTERN %1 ; use this for GCC with Linux (ELF)%endif%endmacro SECTION .text EXPORT start jmp boot_entry ALIGN 4 EXTERN _edata EXTERN _endboot_hdr: dd 0x1BADB002 dd 0x00010000 dd 0-0x1BADB002-0x00010000 dd boot_hdr dd _start dd _bss_start dd _end dd boot_entryboot_entry: ; ebx holds a pointer to ; the multiboot info block mov esp,boot_stack push dword 0 popf; zero the kernel BSSIMPORT _bss_startIMPORT _end xor eax,eax mov edi,_bss_start mov ecx,_end sub ecx,edi shr ecx,2 rep stosd push ebx ; save parameter for main IMPORT main call main jmp short $ ; Hang SECTION .bss ALIGNB 16%IFDEF DEBUG RESB 4096%ELSE RESB 1024%ENDIFboot_stack:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -