初めて読むMASMはとっても良い本。

私の所属する研究室内では、Linuxカーネル読書会なるものをやっている。教材は詳解Linuxカーネルの第3版。この本は-読んでみると分かるが-x86依存の話が非常に多い。スケジューラの話のあたりになると、Gnu Assemblerなどという暗号(!)でガシガシ書いてあるので、もう訳がわからない。この辺のソースコードの様子は、id:naoya さんのLinux カーネルのコンテキストスイッチ処理を読み解くを見ていただければ分かると思う。そうなってくると、必然的にx86の副読本を買わねばならぬ、となるわけだが、x86を知らない人がいきなりはじめて読む486―32ビットコンピュータをやさしく語るを読むと、多分多くの人が挫折してしまうだろう。というか、私がした。確かに良い本(だと思われる)んだけれど、前提知識が足りないと、所々でつまってしまって、読むスピードが落ちて、あああ、、、僕はダメな子だ、、、などとなってしまうわけである。

しかし、ちょっと待ってほしい。

先ほど例に上げさせて頂いた id:naoya さんのあるエントリ内の参考文献の欄にも、

初めて読む486は方々で聞いていたとおりとても良い書籍です。
が、実は最初に読んだときはちょっと難しくて挫折しました。

とあるので。これを見て、私は安心した。「そう、はてなのスーパーエンジニアでも挫折するのだから、私など挫折して当然だ!ハッハー!!」という気概である(笑

話がそれた。それで、id:naoyaさんが上記の挫折をいかにして脱したかというと、

-はじめて読む8086—16ビット・コンピュータをやさしく語る (アスキーブックス)
-はじめて読むMASM—ソフトウェア環境のからくりを学ぶ

と二冊を読んでから改めて 486 本を読んでみたら、最後まで挫折せずに読むことができました。

とのこと。なるほど、難しかったら前の本を読めばよいのかー!当たり前といえば当たり前なんだけど、「はじめて読む」シリーズは、「はじめて読む8086」、「はじめて読むMASM」、「はじめて読む486」、「はじめて読むアセンブリ」、「はじめて読むマシン語」、「はじめて読むPentium」と多くの書籍が出ており、どれがどれと対応しているのか分かりづらい。ちょっと調べて見たところ、

  • 「はじめて読むPentium
  • 「はじめて読む8086」
  • 「はじめて読むMASM
  • 「はじめて読む486」

がひとくくりで、x86系のお話、

がひとくくりで、Z-80のお話っぽい。ちなみに、「はじめて読むPentium」は、初めて読む8086の現代版(演習にVC++を使っているのでWindowsユーザにとっては演習を行いやすい)である。ただし、1つだけ大きな違いがある。それは、「はじめて読むPentium」には割り込みの説明がないのだ。なので、その辺の話をカバーするには上から順番に読んでいくのが良いと思われる。

しかし、はじめて読むMASMの話の中心はどうみてもMS-DOSにおけるアセンブリプログラミングである。今更DOS、、、?などと思いたくなるところだが、上記の日記を見たので、とりあえず騙されたと思って買ってみた。そしたら、これが良書過ぎて泣いた。

タイトルにMASMとは書いてはあるが、説明の多くはx86のセグメント機能をいかにして使用するか?という話なのである。セグメントといえば、初めて読む486でさっとしか説明されていなかった。それが、これでもかというくらい豊富な図とサンプルコードで説明されているのだ。これは素晴らしい。なんとタイトルがもったいないことか、、、と思ってしまった。

何が言いたいかというと

これからマシン語やCPUの構造を勉強する人は、

  1. 「はじめて読むPentium
  2. 「はじめて読む8086」
  3. 「はじめて読むMASM
  4. 「はじめて読む486」

の順で読むのが良いだろう、ということと、難しい本を買ってピンとこなかったら、自分のレベルにあった本を買いましょう、ということである。

だそく

ちなみに、先週日曜日に開催された「天下一カウボーイ大会」ではじめて読むシリーズの著者である蒲地さんが講演したらしいですね!説明によると、題目はx86のプロテクトモードの素晴らしさについてらしい、、、。イベントの2日前にこの事実に気づいて、チケットないかなーと思ったけどもうなかった(笑
ニコニコとかで講演アップロードされないかなー。されないかなー(@w@