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)
}
}