📄 crt0.s
字号:
.code16#ifndef REGPARM# error "This file assumes -mregparm=3 -DREGPARM=3"#endif .section ".init","ax" .globl _start .type _start,@function_start: # Align the stack and make sure the high half is zero andl $0xfff8,%esp # Clear the .bss cld xorl %eax,%eax movw $__bss_start,%di movw $_end+3,%cx subw %di,%cx shrw $2,%cx rep ; stosl # Compute argc and argv (assumes REGPARM) xorl %edx,%edx movzbw 0x80,%bx movb %dl,0x81(%bx) # Zero-terminate string movb $0x81,%dl pushl %eax # Make space for argv movl %esp,%eax calll __parse_argv pushl %eax # argc # Initialize malloc calll __init_memory_arena # Now call main... (NOTE: gcc forces main to be regparm 0) popl %eax # argc popl %edx # argv calll main # Here %eax is the exit code, fall through into exit .size _start,.-_start .globl exit .type exit,@functionexit: # Exit code already in %eax movb $0x4c,%ah # Terminate program int $0x211: hlt jmp 1b .size exit,.-exit
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -