2006-04-01から1ヶ月間の記事一覧

ELF形式のファイル読み込みと実行に成功しますた

はい、タイトル通り成功しますたよ。 とは言っても、まだ完全な対応ではありません。 スタティックな変数のための領域に関しては未実装だからです。 とは言ってもプログラムヘッダーを見れば大体分かるわけで、すぐに実装できます。 とりあえず必要性が出て…

割り込みとエセマルチタスク

実は今までiretを使用していなく、普通にC言語の関数として、割り込みハンドラを定義していました。 割り込みハンドラと同じコードセグメント上でプログラムが動作しているときは、 全く問題がありませんでした。 しかし今後はユーザアプリをOSから独立させ…

国はふざけているんですか?

あのね、今確かにWinnyは問題視されているけど、貴方達は「セキュリティ」という言葉の元に、 税金のはけ口を探っているのですかと聞きたい。 「セキュリティ」というものには二種類ある。 まずソフトウェアによる情報流出に関するセキュリティ。 これは基本…

マルチタスク?な感じになった

やっとダイアリー市民になれたぁぁ。 と言う事は置いといて、久しぶりに画像を上げてみる。 白文字で数字が並んでいるのは、読み込んだファイルのデータなので、 無視してもらっていいとして、問題は「A」と「S」いう文字ですよ。 この2つの文字は交互に色が…

とりあえずの準備

とりあえずユーザタスク用に確保したメモリに FAT12からファイルを読み出し実行できる事を確認するために、 ELFではなく、そのままのバイナリで実行できるプログラムを作成し、 実際に実行して、その動作を確かめてみた。 やはりFAT12を解析できる事はとても…

ファイルの読み込みが出来るようになりました

さて、さきほどからFAT12の解析によるファイルの読み込み作業に取り掛かり、出来た。 これが出来ると、ELF形式のアプリを任意のアドレスに確保することが出来るようになるわけで、 つまりタスクの実現に大きな一歩を踏み出したことになるのである。 しかしプ…

申し訳ないです、訂正です。

>なぜdataセクションは0x1080なのか。0x0080は余計じゃねぇかと思うだろう。 という書き出しでdataセクションについて書いたが、間違っていました。なぜページの最初ではなく、あえて途中なのかと言う理由は、 例えば0x1000から始まるページにデータをおくと…

基本的なELFの構造が把握できた

一日でELFの解析が終わるとは思っていなかった。 前に書いたが半月と読んでいたが、こんなに早く終わるとは。 この前調べたときよりもかなりいい感じで理解が進んだ。 やはり体を動かして、実際にELFの構造をダンプするプログラムを作る事は ELFの理解に大い…

ELFの構造を掴む

開始アドレスが標準で0x80000000辺りにある謎はおいておいて、 ひとまずELFの構造を知る作業に取り掛かった。 まずはとりあえずELFヘッダ、プログラムヘッダ、セクションヘッダの構造体を 定義し、適当に作ったELFファイル(apptest.elf)を読み込んで、 その…

やっとこの時がきたのだよ

ELFのロードと言う変態度満点の作業に突入したどぉぉ。 でもまずはCygwin上でELFファイルの構造を 色々と調べるためのプログラムを作る。 これに半月を要すると予想してます。 とりあえず固定アドレスを0x00000000にすることで、 ページングを利用しないで、…

それなりにOS作りは進んでいます

特に報告はしていませんが、微々たるものではありますが進んでいます。 今現在プロテクトモード、つまり32bitモードに突入し、 FAT12というファイルシステムの解析プログラムを作成しています。 これによりファイルの読み込み、および書き出しが可能となりま…

ふぅ、今日も一日終わったなぁ

あぁ〜、疲れた。皆さん一日お疲れ様でした。

メモリ管理地獄

OSの機能の一つにメモリ管理機能というものがある。 とりあえずFATの解析をするためには、FDのセクタを読み込んでごにょごにょと 解析をする必要があるので、とりあえずメモリ管理でもやってみようと思った。 別に unsigned char data[512]; としても、たぶ…

アセンブリ地獄とは違うんだよ、アセンブリ地獄とは

ホントアセンブリでFDC制御プログラムを書いたときよりも すっきりしすぎていて、怖いくらいだ。 まぁ前回も書いたが、毎回毎回つまづく人間です。 また今回も例によって、つまづいたのであります。 out8(0x81, (char)(addr & 0x00ff0000) >> 16 ); こんなコ…

よう悩みます

新しい事を一つ始めると、必ず足踏みをしてしまう。 よう時間がかかるもんだ。キーボード割り込みにしてもそう。 まぁ俺が雑誌を鵜呑みにしたから、悪いんだけど。 何とか割り込みも受け取れるようになって、 これからはとりあえずFDの内容を読み取れるよう…

OSを作ろう的お話 エミュレータと実機における動作の違いによるバグ死

「エミュレータと実機における動作の違いによるバグ死」 まるで何かの研究名みたいな見出しにしてみましたが、 要はエミュレータのいい加減な振る舞いのお蔭で、実機との動作の違いがあって、 今までずうっと悩み続けてきたわけさ。 具体的に言えばFDCの制御…

貴方は凄いよ

えぇ某はりぼてOS本を出しているKさん、凄いなぁ。 俺が数日悩んだ事を二秒で解決しちゃった。 知識こそ全てって感じっすなぁ。 エミュレータ上では何とかFDCの制御も出来るようになり、かなりいい感じである。 ところがぁぁぁぁ、実機ではなぜか動かないの…

う〜ん俺だけかなぁ

とりあえず全アセンブリで書いているからかなぁ、挙動がおかしい。 これが出来れば、ELFなども色々と扱えて面白くなるのにぃ。 「ELF形式」で検索してくる人がいるなぁ。 申し訳ない。もう少しお待ちください。

今日もまたオーエス!な日々

FDからブートしてsecond.binというファイルを探し出し、読み込んで実行する。 ここまで出来ています。 さてsecond.binでは32bitへの移行など重要な作業を行います。 これくらいは問題が無いわけですが、今回IDTというまぁ32bitにおける 割り込みを初めて扱っ…

OSを作ろう的お話 お久しぶり

久しぶりに真面目にプログラミングをした。 アセンブリプログラミング。 アセンブリでブートセクタを書いていた。 具体的にはFATを解析して、 ルートディレクトリに存在するSECOND.BINを探し出し、 メモリに読み込むというもの。 これだけで512バイト行って…

時間掛け過ぎやて

本当は春休み中にシングルタスクは最低でも達成したかったのだが、 FAT12操作ツールの完成で春休みは終わった。とりあえずFAT12の解析が完璧に終了したので、 暇を見つけて、FAT12の構造をネットに公開したい。まぁ大したものではない。金を掛けて学ぶほどで…

明日から学校です

春休みも終わり、新たな気分で勉学に望めそうです。しかし、私の恩師が亡くなっている事が分かり、 凄くショックです。まさか亡くなるなんて夢にも思っておりませんでした。本当に昨日から泣きっぱなしです。人はいつか死ぬのは分かっておりますが、 こんな…

あぁぁぁやる気がでねぇぇぇぇ

せっかくの春休み。意味は無いが、やる気が出ない。 CSを買って、寝不足だからだろうか、とにかくイライラする。 う〜ん、困っちんぐ。 どうしたものか。休み疲れか。バイト落ちてから、何だかやる気が出ない。 あぁアンパンマソ様、僕に新しい顔を下さい。 …

書くことが無いなぁ

バイトの面接に落ちて、凹んで何もする気にならんちゅうねん。 何で落ちたんだか不明やね。 でも新しいバイトを探して、偵察してきたんだが、 全然悪くない雰囲気だったので、やろうかと考え中。 後、生活がめちゃめちゃになっているんで、 書く気が起きなか…