-
Notifications
You must be signed in to change notification settings - Fork 5
uchan_haribote_elf
uchan-nos edited this page Oct 23, 2016
·
3 revisions
変更したところメモ
-
haribote/ipl09.nas
- 読み込むシリンダ数を 11 シリンダくらいに増やす
- harib27f 時点でのアプリ数が結構ぎりぎりなので、9 シリンダのままだと ELF バイナリをディスク末尾に追加すると途中までしか読み込まれなかったりする。
-
haribote/elf.h,c
- ELF バイナリを解析するのに必要な型定義など
-
haribote/console.c
- OS 本体の変更点で最も本質的な部分
-
.hrb
アプリの起動処理の横に、.elf
アプリの起動処理を付け足す。 - API は大部分はそのまま動くが、EDX == 8, 9, 10 の処理(malloc 関連の処理)は
.hrb
のヘッダに依存しているので、場合分けして.elf
にも対応させる必要もある。(hrb_api
関数)
-
apilib/Makefile
- apilib.lib を ELF に変換する
- もともと apilib.lib は COFF 形式のオブジェクトファイルの集まり。
objcopy -I coff-i386 apilib.lib -O elf32-i386 libapi.a
-
app_make_elf.txt
- app_make.txt を参考にして新規作成(詳しくは後述)
- i386-elf をターゲットにビルドした GCC と LD を使うのがポイント。
-
haribote_elf.lds
-
.elf
アプリの生成に使うリンカスクリプト -
.text
,.data
,.bss
セクションに加えて.stack
,.malloc
セクションを生成。
-
-
elines/elines.c
- もともとの lines アプリをディレクトリごとコピペし、ファイル名を変更したもの
-
elines/Makefile
- もともとの Makefile のコピー
- しかし、ELF バイナリでは Makefile 中の
STACK
とMALLOC
は使われないので、2 行を削除しても良い。
-
elines/ld_variables.lds
- Makefile にあった
STACK
とMALLOC
の定義はこちらへ。
- Makefile にあった