exec実装
execが実装できた(かなり適当なものだけど)
そのためにやったことは
- まずelf形式ファイルの扱い型の勉強
- リンカスクリプトを書いて、自作OSのメモリマップに合わせる
- elfヘッダの指示どおりのアドレスに実行ファイルの内容を読み込む
- エントリポイントへジャンプ
自作OSのメモリマップはLinuxとは違い1GB(0x40000000)からユーザ空間としている。
実装に関して工夫はないが、実行ファイルを読めるだけでもうれしい(笑
(リンカスクリプト)
SECTIONS{ . = 0x40000000; .rodata ALIGN (0x1000) : { *(.rodata) } .data ALIGN (0x1000) : { *(.data) } .bss : { sbss = .; *(COMMON) *(.bss) ebss = .; } .data ALIGN (0x1000) : { start_ctors = .; *(.ctor*) end_ctors = .; start_dtors = .; *(.dtor*) end_dtors = .; *(.data) } .text :{ *(.text) } }