おっとイカン、ちょっとひと休憩のつもりが、普通に寝てしまった。。 実は前回のエントリーは、アセンブラの命令を例として記述しまくっていたのだが、それがアメブロ上では「禁止タグ」扱いされてしまっていて、何度も修正を余儀なくされているうちにクタビレてしまったのだ。しかし、未だにどの部分が悪かったのかは不明。「取り合えず命令行っぽいものを全て抽象化したら上手く行った」というのが正直なところだ。うーん、勉強メモとしてここを選んだのは正解だったのだろうか。。
さて、本題に戻ろう。そうそう、実はキリの良い終わり方をしなかったんだっけ。NASKの新出命令はまだ続くのだ。
INT: 「interrupt」つまり割り込みを意味する命令。BIOS中に用意されている関数を呼び出すためのもの。
で、そうなるとBIOSって何なのさ?という説明が始まる。流石、予備知識ゼロからのテキストだ。ROM側に記憶されている、PC側で予め用意している基本的な入出力を扱うための関数群。と、ここでは捉えておけば良いのかな。どうやって調べたのか知らないが、ココ にBIOS研究の成果が公開されている。なるほど、文字列の表示はこういうメカニズムだったのかー、などとひとしきり感心。先人達の努力には感謝するばかりである。これが「学習の高速道路」というヤツなのだなー、と実感。
そして最後に、作者こだわりの一品(?)が登場。
HLT: 「halt」つまり停止を意味する命令。CPUを待機状態にする事で、省電力を心がけるべし、という事で常に意識しておきたい命令として紹介された。キーボードやマウス側で何らかのアクションがあるまで待機しているだけ、という事なので、「どうやって起こそうか?」については意識する必要はなさそうだ。(ここら辺もBIOSのおかげ?それともNASKが優秀なんかな?)
ふむふむ、命令群を説明してもらったおかげで、プログラムの中身が大体分かってきたぞ。
そして次に来るのがメモリマップの説明。簡単に解釈すると、「メモリはプログラムを作っている我々だけでなく、BIOSも使っていたりするので、何も考えないと競合が起きて大変な事になるよ。競合を意識的に避けるために、メモリのどこがどのように使われているか?、あるいは使うべきか?について地図のような形で整理したよ」という話かな。苦労の後が伺われる作者のメモリマップ研究成果発表場所はコチラ 。うーん、深い…
で、次でいきなり「ディスクイメージ全体をNASKで作るのは止めて、ブートセクタだけ作るよ。そっちの方が応用利くから」と宣言されるも、「応用って何だば?」という気持ちで一杯である。想像するに、ブートセクタはOS自身を読み込む為のプチプログラムに過ぎないので、いずれOS自身をブートセクタ以降に記述するようになる時が来るという事を踏まえると、ブートセクタだけで完結するように作っておくのが何かと都合が良い、とかそういう事なのだろう。深く考えるとハマりそうなので、いつもの通り「ふーん、そういうもんなのね」で、流しておくことにしよう。
しかし、いつもの通りサンプルを使って実際にディスクを作って試してみたところ、今までよりも格段に起動が早かったような、、、これは、1.44MB全ての領域にくまなくデータを書くのを止めたから、って事か?? マシン語への翻訳結果を出力してくれるツールの存在も嬉しい。何だかアセンブラがとても人間に優しい高級言語に見えてしまうから不思議だ 笑
そして「Makefile」あらわる。
「Makeがいかに賢いか!」について熱く語られた。ものぐさな私的にも、キーボード入力の手間は出来る限り避けたいし、ディレクトリ内もキレイにしておきたいところなので気持ちは良く分かる。ただ、熱さは伝わったし、共感もしたのだが、特にここにメモするような発見があったわけでも疑問があったワケでもないので、「あらわる!」なんて言ったワリには特にコメント無し。
作者が立てたwikiなんかをのぞくと、結構上手く動作していない場合があるようなので、実際に試してみたが、これまた特に問題なく動いたので、そこについてもコメント無し 笑
うん。今日も乗り切ったぞ。
さて、本題に戻ろう。そうそう、実はキリの良い終わり方をしなかったんだっけ。NASKの新出命令はまだ続くのだ。
INT: 「interrupt」つまり割り込みを意味する命令。BIOS中に用意されている関数を呼び出すためのもの。
で、そうなるとBIOSって何なのさ?という説明が始まる。流石、予備知識ゼロからのテキストだ。ROM側に記憶されている、PC側で予め用意している基本的な入出力を扱うための関数群。と、ここでは捉えておけば良いのかな。どうやって調べたのか知らないが、ココ にBIOS研究の成果が公開されている。なるほど、文字列の表示はこういうメカニズムだったのかー、などとひとしきり感心。先人達の努力には感謝するばかりである。これが「学習の高速道路」というヤツなのだなー、と実感。
そして最後に、作者こだわりの一品(?)が登場。
HLT: 「halt」つまり停止を意味する命令。CPUを待機状態にする事で、省電力を心がけるべし、という事で常に意識しておきたい命令として紹介された。キーボードやマウス側で何らかのアクションがあるまで待機しているだけ、という事なので、「どうやって起こそうか?」については意識する必要はなさそうだ。(ここら辺もBIOSのおかげ?それともNASKが優秀なんかな?)
ふむふむ、命令群を説明してもらったおかげで、プログラムの中身が大体分かってきたぞ。
そして次に来るのがメモリマップの説明。簡単に解釈すると、「メモリはプログラムを作っている我々だけでなく、BIOSも使っていたりするので、何も考えないと競合が起きて大変な事になるよ。競合を意識的に避けるために、メモリのどこがどのように使われているか?、あるいは使うべきか?について地図のような形で整理したよ」という話かな。苦労の後が伺われる作者のメモリマップ研究成果発表場所はコチラ 。うーん、深い…
で、次でいきなり「ディスクイメージ全体をNASKで作るのは止めて、ブートセクタだけ作るよ。そっちの方が応用利くから」と宣言されるも、「応用って何だば?」という気持ちで一杯である。想像するに、ブートセクタはOS自身を読み込む為のプチプログラムに過ぎないので、いずれOS自身をブートセクタ以降に記述するようになる時が来るという事を踏まえると、ブートセクタだけで完結するように作っておくのが何かと都合が良い、とかそういう事なのだろう。深く考えるとハマりそうなので、いつもの通り「ふーん、そういうもんなのね」で、流しておくことにしよう。
しかし、いつもの通りサンプルを使って実際にディスクを作って試してみたところ、今までよりも格段に起動が早かったような、、、これは、1.44MB全ての領域にくまなくデータを書くのを止めたから、って事か?? マシン語への翻訳結果を出力してくれるツールの存在も嬉しい。何だかアセンブラがとても人間に優しい高級言語に見えてしまうから不思議だ 笑
そして「Makefile」あらわる。
「Makeがいかに賢いか!」について熱く語られた。ものぐさな私的にも、キーボード入力の手間は出来る限り避けたいし、ディレクトリ内もキレイにしておきたいところなので気持ちは良く分かる。ただ、熱さは伝わったし、共感もしたのだが、特にここにメモするような発見があったわけでも疑問があったワケでもないので、「あらわる!」なんて言ったワリには特にコメント無し。
作者が立てたwikiなんかをのぞくと、結構上手く動作していない場合があるようなので、実際に試してみたが、これまた特に問題なく動いたので、そこについてもコメント無し 笑
うん。今日も乗り切ったぞ。