Linux 0.11では、main.cとmain()があることがわかります。
私が理解したのは、ターゲットコードを実行するためにオペレーティングシステムが必要です。
つまり、Linux 0.11はオペレーティングシステムなので、以前は誰が実行していましたか? DOS?
ベストアンサー1
名前は単におなじみと審美的な理由で選ばれました。ユーザー空間プログラムから呼び出すことができるmain()
Cランタイムはありません。main()
これを説明するコメントもありますinit/main.c
。
void main(void) /* This really IS void, no error here. */
関数main()
は次から呼び出されますboot/head.s
。
after_page_tables:
pushl $0 # These are the parameters to main :-)
pushl $0
pushl $0
pushl $L6 # return address for main, if it decides to.
pushl $_main
jmp setup_paging
L6:
jmp L6 # main should never return here, but
# just in case, we know what happens
のアドレスがスタックmain
にプッシュされる方法と using の代わりにsetup_paging
call を使用する方法に注意してください。つまり、最後にあるアドレスがの先頭から続くことを意味します。jmp
call
ret
main()