明けまして
12月31日からOS自作本の3日目のソースファイルをGAS(Gnu Assembler)を用いて書いてやろうと試みていたけれど、ようやく32bit プロテクトモードに突入 && 32bitバイナリを動作確認したよ!
なぜこんなに時間がかかっていたかというと、
- GASで絶対ジャンプする方法がわからなかった(12月30日:コメント頂きましたとおりすがりさん、ありがとうございました!)
- HDDとしてマウントしていたのにも関わらず、シリンダやヘッダの指定方法をFloppyのものと同様に指定していた (1日〜2日)
- 風邪をひいてしまった(2日〜)
- memcpy がバグだらけだった (5日〜6日)
- qemuモニタの存在を知って色々遊んでいた(5日〜6日)
- GASでのセグメントジャンプの方法を勘違いしていた(5日〜6日)
と、色々な理由があったりする(^ー^;
まぁ、行き詰まった分、勉強にはなった。それと、qemuモニタのレジスタダンプ機能と、メモリダンプ機能がすごいのに気がついて、途中から使いまくっていた。せっかくなので、後でまとめようかと思う。
お買い物
つくばに戻る(略して帰筑!)途中、ヨドバシアキバでお買い物してきた。
まずは Binary Hack。
Binary Hacks ―ハッカー秘伝のテクニック100選
- 作者: 高林哲,鵜飼文敏,佐藤祐介,浜地慎一郎,首藤一幸
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2006/11/14
- メディア: 単行本(ソフトカバー)
- 購入: 23人 クリック: 383回
- この商品を含むブログ (223件) を見る
次は Write Great Code vol.2。
Write Great Code〈Vol.2〉低いレベルで考え高いレベルで書く
- 作者: Randall Hyde,鵜飼文敏,まつもとゆきひろ,後藤正徳,八重樫剛史,トップスタジオ
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2006/12
- メディア: 単行本
- 購入: 3人 クリック: 49回
- この商品を含むブログ (40件) を見る
忘れてはならん
先月終了したインターンシップでやりのこした仕事があるので、そいつを今週中に終わらせる。
30日でできる!OS自作入門を Linux & GAS で行う (2日目)
というわけで、どうみても前の更新から5日以上たっているけれども2日目の説明を(笑
2日目で行うことは、
という3点である。1は、OS自作本を見ればなんとなくできてしまうだろう。また、3についても、 Linux 上でプログラム経験がある方であれば、あまり難しくないだろう。問題は2である。ユーザランドプログラムを書く用途でgccを使っていると、自分でリンカスクリプトを書く機会はなかなかない。せっかくなので、これを機にリンカスクリプトを書いてみよう(ToDo:説明増やす。今は寝る)。
1 OUTPUT_FORMAT(binary) 2 3 OUTPUT_ARCH(i386) 4 5 SECTIONS { 6 . = 0x7c00; 7 .text : { *(.text) } 8 } 9
このリンカスクリプトを使ってバイナリを生成するには、 -T オプションを使う。
ld (入力オブジェクトファイル名) -T (リンカスクリプト) -o (出力するバイナリ)
うまくいくと、1日目と変わらない起動画面が出てくる。
というわけで、詳細についてはソースコードとOS自作本を見て頑張ってほしい。君ならできるはず!
ソースコードはこちら