C言語で0から作るOSを開発について説明していきます。このシリーズではカーネルの開発について説明しています。 今回はカーネルを読み込みためのブートローダーについて0から作っていきます。BIOSを利用した文字の表示やフロッピーディスクからのファイル読み込み、FAT12ファイルシステムの解釈を説明していきます。 【注意】本書のブートローダーはnasmでプログラムを行っていますが、アセンブラーの構文などは詳細に説明できておりません。別途アセンブラーの文法などを学習する必要があります。しかし、本書を読むことでブートローダーの基本的な設計はできるようになると思います。 [目次] 前回までの内容 パソコンが起動してからの処理概要 OSから利用できるBIOSのインターフェース処理 割り込みベクターとは? 割り込み処理を使って どこからブートローダを読み込むのか? セクターとは? シリンダー(トラック)とは?ヘッドとは? ヘッドは シリンダー(トラック)は セクタは BIOSの処理 最初のセクターを読み込む フロッピーの読込処理 割り込みベクタの25番目(0x19番目) アセンブラー言語について 最初のブートローダを作ってみる ブートローダーをアセンブルしてみる フロッピーディスクの最初のセクターに書き込む ようやく起動してみる FAT12ファイルシステムのさわり FAT12のブートセクタ FA12のブートセクターを作ってみる リアルモードについて少し 16ビット? レジスタ? 汎用レジスター 汎用レジスタのその他の役割 セグメントレジスターとメモリーアクセス セグメントとは セグメントの指定 セグメントの開始位置 セグメントの大きさ セグメントレジスターの種類 セグメントレジスターとセグメントとアセンブラー言語 コードセグメント内のアドレスアクセス データセグメント内のアドレスアクセス セグメントとセグメント内のアドレス ES、FS、GSレジスターのセグメントへのアクセス 論理アドレスとリニアーアドレス スタックセグメント内のアドレスアクセス 起動直後のセグメントレジスターの初期化 スタック スタックにデータを積み上げる スタックからデータを下ろす その他のスタックの使い方(CALL命令) 画面に文字を表示する 文字を表示する INT 0x10(文字表示処理)の引数 文字を表示する 文字を表示するDisplayMessage関数の動作 EFLAGSレジスター フロッピーからデータを読み込む INT0x13命令のフロッピードライブ初期化モード INT0x13命令のセクタ読み込みモード LBA(Logical Block Addressing) LBAから物理ヘッド番号に変換する LBAから物理シリンダー(トラック)番号に変換する LBAから物理セクター番号に変換する アセンブラーでLBAを物理ヘッド番号、シリンダー(セクタ)番号、セクター番号に変換してみる 物理セクター番号の計算 物理ヘッド番号の計算 物理シリンダー(トラック)番号の計算 LBA論理セクター2000を読み込んでみる FAT12ファイルシステム FAT12の構造 FAT領域 クラスター クラスター番号の役割 特殊なクラスター FATで記録できるファイル FATの予備 FAT領域の開始セクターとサイズ FAT領域の開始セクター FAT領域のサイズ FAT12のクラスター番号の読み方 読み取ったクラスター番号からファイルのセクター番号を計算する FAT領域まとめ ルートディレクトリ領域 ルートディレクトリ領域の開始セクタとサイズを求める ルートディレクトリの開始セクター番号 ルートディレクトリのセクター数 ルートディレクトリから読み込みたいファイル名を探す 目的のファイル名を持つエントリーからファイルの開始クラスター番号を取り出す ファイル領域 ファイルの読み込み [2015/6/28] 誤字およびファイル読み込みに説明を少し追加しました。
Populaire auteurs
Cram101 Textbook Reviews (948) J.S. Bach (447) Wolfgang Amadeus Mozart (305) Collectif (268) Schrijf als eerste een recensie over dit item (259) Doug Gelbert (238) Princess of Patterns (211) Charles Dickens (209) R.B. Grimm (197) Carolyn Keene (187) Jules Verne (183) Philipp Winterberg (180) William Shakespeare (174) Youscribe (172) Lucas Nicolato (169) Edgar Allan Poe (166) Herman Melville (166) Anonymous (165) Gilad Soffer (164) Robert Louis Stevenson (159)Populaire gewichtsboeken
418 KB 425 KB 435 KB 459 KB 445 KB 439 KB 386 KB 413 KB 493 KB 432 KB 455 KB 471 KB 421 KB 451 KB 485 KB 472 KB 416 KB 369 KB 419 KB 427 KB