2010-11-01から1ヶ月間の記事一覧

もう一つ

C

goto なんだけど、やっぱり、使うべきではない? でも、アセンブラを使っていると、普通に JMP とか書いている。 その感覚で考えちゃうと、goto も、うまく使えば、 ずっとシンプルに書ける場面も結構あるように思う。 実際、そういう主張も、いくらか見掛け…

simple is best だと思う

C

ネットで色々な人の見解を眺めるのは、なかなか勉強になるのだが、 あまりにも色々とあり過ぎて、時々、混乱する時がある。 例えば、配列とハッシュについて、 自分は直感的にハッシュの方が早いと思っていたのだけれど、 現在のような、大容量のキャッシュ…

そんなに簡単な話でもないか... (^^;;;

C

基本的に、C の世界というか、古い UNIX の文化というか、その辺界隈では、 多分、自分の尻は、自分で拭け的な... <表現が悪いですが... (^^;;; だから、きっと、Java とか、.NET とか、 比較的、開発者に対して手厚い?環境に慣れてしまうと、 なんだか、…

役割分担が大事なのかな?

C

malloc は、そもそも、ヒープ領域の割り当てが仕事なのだから、 要求した分の必要領域を、妥当な方法で割り当ててくれれば十分で、 なんだか、ここで、効率がどうの管理方法がどうのってのは、 考えてみれば、ちょっと、欲張りというか、ねだり過ぎかな?と…

みんな同じ事を考えるんだな

C

malloc について、Web を調べてみたら、結構、同じように考えている人がいた。 なんでもかんでも、システム任せってのも、考え物だ。 まぁ、なんでもかんでも、手作りってのも、大変だけど。 その辺の、切り分けは、大事だとは思うけれど、 少なくとも、自分…

CHSの復習

ディスクの CHS、すなわち、シリンダ・ヘッダ・セクタの各要素は、 言葉で説明するとなると、なかなか、うまく説明出来ないが、 図を見れば、言葉通り、一目瞭然であろう。 ただ、良くある例えであるが、バームクーヘンのような形であるため、 その形に惑わ…

あらま

やっぱり、一日も欠かさず、続けるのって難しいね。苦笑 継続は力なり、と言うけれど、継続する事自体が力だよね。 まぁ、マイペースで、ぼちぼち、行きましょう。

FAT対応

とりあえず、FATの読み込みから入ろうと思う。 ぼちぼち、ゆっくりと進めて行こうと思っています。

効率的な領域確保の方法とは?

C

最近、久々に、仕事でCを使う事になった。 趣味でも、ROSe 関連のツールは、ほとんどCで組んでいる。 で、最近、引っ掛かるのは、malloc の使い方。 まぁ、基本的には、必要な領域を、ちまちま確保しているんだけど、 良く考えると、このオーバーヘッドは…

実機でも動いた!!

実機で確認してみた。 うまく動いた。 BIOS のコード変換は、やっぱり、共通みたいだ。 よしよし。

その1で動いた!!

昨日の方法で、ROSe に ^C の機能を実装してみた。 実際は、試行錯誤の末、なんとか動いたって感じだけれど、 とりあえず、考えた通りに動いてくれたので、嬉しいぞっと!! まず、SPレジスタの内容の保存先は、とりあえず、0x0500番地とした。 0x0400番地から…

^Cの実装について(方法その1)

FreeDOS の ^C 処理を追うのは引き続き、こつこつやっていくとして、 とりあえず、ROSe については、まだまだ実験体なので、 色々と試してみるのも、ありなんじゃないかな?とか思った。 現状、ROSe は、シングルタスクも良いところで、 入力待ち→コマンド入…

こつこつと解析を続ける

kernel.obj の解析を、こつこつと続けている。 分かってしまえば、大した事はない。 本当に、そう思うんだけれど、この差が、何百光年にも感じる。 ヤマトは、一年かけて地球とイスカンダルの間を往復したけれど、 こつこつと続けていれば、何百光年の道程も…

仕事場で...

C

真っ当な仕事を始めて、少し忙しくなってきたので、 ライフワークの ROSe の方は、少し、進みが遅くなりそう。 まぁ、それは、仕方が無い事だけれど... 今日、仕事場で、今回、改修する事となったシステムのソースを眺めていた。 あまり詳しく書くのも、問題…

Object Module Format

*.obj の一形式である(古めの) Object Module Format(OMF) を調査中。 とりあえず、Watcom の出力形式が、どうやらこれらしいと。 他にも、多数のフォーマットが存在するようなのだが、 まとめてこいつらの相手をするのは、さすがに、厳しい。 とりあえず、…

*.objの中身は?

kernel.asm を追い始めて、直ぐに、あれ?っと思った。 マップファイルに含まれるシンボルは、基本的に、global な物だけのようだ。 まぁ、考えてみれば、local で閉じている物については、 その他のファイルとの関連性とか気にする必要は無いもんな。 当た…

マップファイルを眺める

さて、ようやくビルド出来たので、マップファイルを眺めてみる。 * = 参照されないシンボル + = シンボルはローカルでの参照のみです s = シンボルはスタティックです アドレス シンボル ======== ======== モジュール: kernel.obj(kernel.asm) 0000:0002 _L…

とりあえずビルド出来たぞ!!

ようやく、ビルドが通るようになった。 とは言っても、最も安易な解決方法による。 つまり、古いバージョンのコンパイラを探してきて、 ソースが前提とする処理系のバージョンに合わせただけ。 しかし、これが、ある意味、正攻法とも言えそうな?(笑) 参考ま…

オプション多過ぎ...

IDE に慣れ過ぎてしまった自分にとって、 最近?のコンパイラやリンカのオプション、 ちょっと、多過ぎです。 何故に、たかが、ローレベルの出力をしたいだけなのに、 これほど、悩まないといかんのかと。 Windows アプリだとか、COM DLL だとか、 そういう…

ビルド通らねぇ

半ば、消去法で、OpenWatcom を用意して、 とりあえず、何も考えずに、ビルド実行。 当然の事だが、ビルド通らず。 こりゃ、しんどい。

道具の選び方って難しいかも

コンパイラやリンカの動作を理解するには、 実際にやってみるのが早かろうと思ったのだが、 FreeDOS が前提とする環境が、これまた、色々と問題ありというか... 恐らくは、当時 FREE であった処理系で構成したかったのだろうが、 Turbo C や Borland C は、…

愕然!!

FreeDOS で、Ctrl+C が、どのように処理されるのか、 それを追う為に FreeDOS の中身を追い掛けようと、 ソースファイルを展開したまでは良かったが、 さて、こいつら、どこから始まっているんだろう? もしかして、僕は、基本的な事すら、理解していないの…

こ、これは!!

OpenDOSを、QEMU上で使用すると、瞬く間に、CPU使用率が上がります。 こ、これは!! INT 16h AX = 00h or 10h で CPU がブン回る件 - Slow Life & Slow Programming うちのマシンは、Core2 なので、2CPUに見えますが、 使用率が100%になるのは、片方だけ…

Ctrl^C の挙動が怪しい?

Ctrl^C の処理を色々と調べているうちに、 FreeDOS で、ちょっと、おかしな挙動を見付けた。 具体的には、以下のような手順。 C:\>more ^C C:\>とすると、直後、一文字分の入力が無効になる。 内部コマンドや他の外部コマンドでは、今のところ、 この現象は…

Ctrl^C を実装するには

ROSeは、今のところ、いくつかのコマンドしか実装されていないが、 それでもコマンドの途中でキャンセルしたい場面が多々ある。 例えば、間違って、w とか入力しちゃうと、 問答無用でセクタ書き込みを行ってしまうわけですね。 怖いですね〜。苦笑 それで、…

OSって、やっぱり、難しい

OSを作りたい!!って意気込んで、何度も壁に跳ね返され、 性懲りも無く同じような事を繰り返して来たわけだけれど、 何が難しいのか、そこが、なかなか見えてこない。 何が分からないかが分からない、という状況は、 迷路に嵌る可能性が非常に高いように思う…

あいや〜、やられた感じ?

MS-DOS の場合、IO.SYS → MSDOS.SYS → COMMAND.COM の順。 DR-DOS の場合、IBMBIO.SYS → IBMDOS.SYS → COMMAND.COM の順。 なので、FreeDOSの場合も、KERNEL.SYS → ???.SYS → COMMAND.COM かと思いきや、 KERNEL.SYS = IO.SYS + MSDOS.SYS みたいな存在だと!!…

PBR まとめ

結局、逆アセンブルしたリストを印刷して、紙の上で整理する事にした。 やっぱり、紙の方が便利な場面って、結構、あるよね。 ペーパレスが叫ばれるようになってから随分経つけど、紙媒体は無くならないと思う。 さて、PBR の方ですが、ざっとまとめてしまう…

難儀やなぁ...

アセンブラのみだと、分かり辛い、一番の要素は、変数領域の使い方かなぁ?と。 大体が、[BP+xx]って感じが多いと思うけれど、 ソースがあれば、きっと、それなりの変数名が使われていて、 そこから、どのような意図で使われているか推測出来るけれど、 [BP+…

めげずに、PBR

seg000:015B mov es, di seg000:015D seg000:015D loc_7D5D: ; CODE XREF: seg000:0159^Xj seg000:015D cmp word ptr [bp+44h], 0FFFh seg000:0162 jnz short loc_7D76 seg000:0164 add bx, ax seg000:0166 shr bx, 1 seg000:0168 mov bx, es:[bx] seg000:01…