て日々

2009年6月


2009年6月30日(火)あめ

松山市ホームページからのリンクをたどると、毎日零時時点での水源の状況が見られる。最近はこれをチェックするのが日課になってしまっている。昨日からのひさびさにまとまった雨で、地下水位は平年並みまで回復したそうだ。とはいえ、石手川ダムの貯水率がまだ平年の半分ほどだから厳しいには違いない。ひとまず教育面の配慮で小中学校のプールの授業は再開されるらしい。こういう場合の判断って、いろいろの要因があって難しいだろうと思う。

いままで黙っていたけれど、うちには Andrew S. TanenbaumModern Operating Systems, Second Edition (Prentice Hall, 2001) という本がある。半年ほど前に近所のBOOK・OFFで見つけたもので、売価はなんと105円だった。レジで店員さんに「これほんとにこの値段なんですか?」って聞いてしまったくらいで、驚くべき掘り出し物である。しかも、そのときはたしか他の何冊かの本と一緒にT-Point使って払ったから、もう実質タダで手に入れたようなものだ。すでに Third Edition が出ているから値段は下がっているとはいえ、Amazon.co.jp でのこの本の中古価格は2,000円より上だ。BOOK・OFFでは専門書の洋書はこういう二束三文の扱いになってしまうのだろう。で、なんでその話を今になってするかというと、そりゃもちろん、今になって「読んでみようかな」という気になってきたからである。そういやあ「ドラゴンブック」もあるんだった。死ぬまでには読まねえと。


2009年6月29日(月)あめ

週末に酒を飲みすぎた。朝起きるなり体が重い。数日アルコールは控えよう。

EeePC 701SD の話。SSDE-32G が届いたのでさっそく内蔵ドライブを交換し、サポートDVDを使ってシステムを再インストールした。いままで内蔵8GB プラス SDHCドライブ16GBだったのが、内蔵ドライブの要領容量が一挙に32GBに増えたので、SDHCカードを挿しっぱなしにしていないでよい。いろいろ楽になる。で、もとのシステムが収まっていたソリッドステートドライブはお役ご免となった。先週の水曜日 (24日) にやった要領で、ただし今度は内蔵ソリッドステートドライブに FreeDOS をインストールしてみた。この場合は USBフロッピードライブを接続せずに起動してもちゃんと シェル (COMMAND.COM) が起動して普通に使えた。これはこれで面白いが、しかし、先日も書いたように、EeePC で DOS を常用するつもりはない。使いたい時には 24日の実験で DOS をインストールした 4GBの SDHC カードを起動ドライブにすればよいのだ。それでは、古いほうの ソリッドステートドライブをどう使うか。すぐに Debian とか NetBSD という案が浮かぶ。なんならもっと趣味に走ってもよい。ふむ。どうしたものか。

朝から蒸し暑くどんよりとした天気だった。夕方からかなり強い雨。これで水不足が和らいでくれるといいが。


2009年6月28日(日)はれ

午前中、図書館に本を返しに行き、その足で【娘】を散髪に連れて行ったまではよかったが、午後は疲れが出て、またまた家族に八つ当たりをしてしまった。ごめんよ。


散髪の帰りにみた街路樹の花


2009年6月27日(土)はれ

子供を連れて空港へ飛行機を見に行った。到着ロビーには宇和島の和霊大祭の牛鬼がいた。【娘】は最初は牛鬼を気味悪がっていたが、【息子】は平気。乗り物好きの【息子】は電車に乗ってバスに乗って空港に来てホンモノの飛行機が飛び立つのを見てご機嫌。大学へ打ち合わせに行っていた妻と空港前で合流し、三津のラムーで食材を買って帰宅。

うしおに
牛鬼。こう見えても健康と子孫繁栄を
つかさどる神さまの使いだ

牛鬼の顔
よく見るとけっこう愛嬌がある

牛鬼のおしり
胴体が牛、頭が鬼
しかし尻尾が剣だとは初めて知った

【娘】が土曜夜市に行きたがるので、【娘】だけ早めの夕食をとらせて連れて行った。【娘】はクラスメートに会えるかもと期待していたようだけど、銀天街に着いた時点で午後7時前になったこともあり、小学校のお友達には会えなかった。幼稚園時代のクラスメートのコタくんや、教会学校でよく顔をあわせるココロちゃんとキコちゃんの姉妹がいた。【娘】には輪投げと風船つりをさせたが、どうも風船つり屋のねーちゃんにつり銭を百円ごまかされたように思う。しかしそうは言っても、土曜夜市には結婚して以来ずいぶんご無沙汰だったので、新鮮な気持ちで楽しめた。たまにはにぎやかな場所に出向くのも悪くない。

午後8時台は電車が2本しかないので、バスで帰宅。おるすばんの【息子】は先に寝ていたし、【娘】もバスの車内ですでに眠そうで、帰宅後すぐに就寝。俺は (銀天街のチャーリーで軽くラーメン食って来たとはいえ) ようやく夕食のカツどんにありついた。子供へのサービスできょうはけっこうがんばったぞ。


2009年6月26日(金)はれ

昼間は普通に仕事。夕方、会議が思いのほか長くなって、ピアノのレッスンに少し遅れた。


2009年6月25日(木)はれ

歩数計カウント、昨日分と合計で20,369歩。両日ともほぼ10,000歩というところだ。

先日から、アセンブリ言語で簡単なプログラムを書いているわけだけど、各種プログラムに共通の処理が、まあ当然いろいろある。たとえば数値を16進数なり10進数なりで表示するとか、グラフィックス画面に点を打つとか、そうしたものを、必要になるたびにいちいちゼロから書いていては手間ばかりかかってどうしようもない。そろそろライブラリ化を検討しないといけない。あるいは、ライブラリ化しないまでも、その前段階として、オブジェクトファイルの再利用ができるようにしたい。これまではずっと単一のソースからCOM実行ファイルばかり作っていたけど、リンカの使い方を覚えないといけないわけだ。NASM ではいきなりフラットなバイナリファイルを吐き出すことができるけど、そういえば MS-DOS 全盛期の MASM での開発では、ターゲットがCOM実行形式であっても LINK と EXE2BIN が不可欠だった。どちらのコマンドも、そういう名前では FreeDOS には含まれていない。少し調べてみないといけない。


2009年6月24日(水)くもり

EeePC (701SD/XP) のSDHCドライブからFreeDOSを起動して使う方法を見つけたぞ。といっても、たいしたことではない。

まず、事故を未然に防ぐため内蔵ソリッドステートドライブを外す。それから、SDHCカードをスロットに装着して、USBフロッピードライブからFreeDOSを起動する。このとき、SDHCカードはCドライブとなる。この状態で、fdisk コマンドを使ってSDHCカードを起動可能ドライブにする。もう一度USBフロッピードライブから再起動して、SDHCカードをフォーマットし、sys.com でシステムを転送する。このさいついでにフロッピーから必要なファイルを好きなだけコピーすればよい。そして、SDHCカードから FreeDOSを起動するときの最重要ポイントは、起動時にUSBフロッピードライブを接続しておくことだ。これをしないとカーネルが起動途中でエラーになって、コマンドプロンプトまで到達してくれない。

ひとたびSDHCカードから FreeDOS が起動するようになれば、内蔵ソリッドステートドライブをもとに戻しても通常の使用には差し支えない。おそらくNTFSをDOSが認識しないからだろうけど、内蔵ドライブはDOSではマウントされず、見えない/存在しない扱いになる。といっても、電気的には接続されているはずだから、たとえば fdisk などディスクユーティリティ関連のコマンド操作を間違えるとか、システムを暴走させるとかした場合には、何が起こるか予断を許さない。だから、DOS を使うときは念のため内蔵ディスクを取り外しておいたほうがいいかもしれない。何かの間違いで大切なデータが消滅したり Windows が起動しなくなったりしたら困るからな。

さて、普段は FreeDOSを専用のジャンク再生デスクトップパソコン (Packard-Bell FR520 board/Pentium-MMX 233MHz) で使っている。これと比較して、EeePCで FreeDOSを使うメリットを考えてみよう。EeePCはBIOSにUSBストレージクラスのドライバを含んでいるようだから、USBメモリディスクを装着して起動すれば、FreeDOSでも読み書きができる。これは大変便利だ。(ただし、なにしろDOSでUSBのホットプラグはありえないので、抜き挿しはコンピュータをシャットダウンしてからする必要がある。) また、起動ドライブがリムーバブルメディアだというのも便利な点で、ソフトをインストールしたけりゃ、Windows なり MacOS なりで動いているデスクトップパソコンにこのSDHCカードをマウントして、必要なファイルをコピーすりゃいいのである。FreePascalもNASMも、デスクトップDOSマシンにはCD-Rを使ってインストールしたけど、今回はSDHCへZIPファイルをコピーするだけだから簡単に済んだ。あとはもちろん、どこへでも持って歩けるという点もメリットだ。フロッピードライブがはずせないからカッコ悪いけど。

しかしまあ、それじゃあお前 DOSパソコンを持ち歩くか、と言われると、持ち歩く理由はない気もする。仕事に使うわけでなし。アセンブラを使って 《低レベル》のプログラミングを実験したいってのがDOSを使う目的であり、それは趣味だから、出先でホイホイやるようなことではない。ただ、お盆休みに実家に帰る時は、この方法で DOS環境も連れて行くことにしよう。

歩数計カウント10,000歩ちょっと…という歩数はないのだけど、次の日 (この部分を書いているのは翌25日の朝、始業前のオフィスである) に記録もリセットも忘れて出かけてしまったのだった。今回からこういう場合はあえてリセットせず、次の日の日記に2日分の歩数を記録することにしよう。


2009年6月23日(火)あめ

朝のうちは昨日の酷暑がウソのような涼しく爽やかな晴天。午後から曇りはじめ、夕方からは雨。これはいい感じの降り方だ。夜には何度も窓をあけて雨のようすを確認。いいぞいいぞ。

EeePC (701SD/XP) のソリッドステートディスク(Cドライブ)を大容量のものに交換するため、アイオーデータの SSDE-32G を買うことにした。メーカー価格は16,000円だが、アマゾンでは7,000円弱だ。これで、現在のCドライブと、SDHCスロットに挿した16GBのカードの内容(Dドライブ)を統合してひとつの内蔵ドライブにまとめることができる。ねじ回し一本あれば簡単に交換できるからな。それが済んだら、交換して任を解かれた現行のソリッドステートディスクとSDHCカードになにか楽しい使い道を考えよう。っと、この話の続きは現物が届いてから。

歩数計カウント6,613歩。もっと歩かねば。


2009年6月22日(月)くもり

昨日の日記に書き忘れたけど、週末には直線を描画するルーチンをアセンブリ言語で書いていた。アルゴリズムを (アセンブリ言語で書いてもアイディアが伝わりにくくなるだけだから) C言語風に書くと、こんな感じだ

/* x1 ≥ x0 かつ | y1 - y0 | ≤ x1 - x0 との仮定のもとで * 点 (x0,y0) から 点 (x1,y1) へ直線を描画するルーチン */ void DrawLine_A(int x0,y0,x1,y1){ int dx, dy, x, y ; int step, control ; // 変数 control は値 (x-x0)*(y0-y1)-(y-y0+0.5)*(x1-x0) を保持する // その意図するところは下の説明を参照 dx = x1 - x0; dy = y1 - y0; if ( dy < 0 ) { // y の増分が負の数の場合は dy = -dy; // 正の数に直し, そのかわり step = -1; // y に足す数の符号を逆転させる } else { step = +1; } control = (dx >> 1); y = y0; for ( x = x0 ; x ≤ x1 ; ++x ) { PSet(x,y) ; // 点を打つ control += dy; if ( control ≥ dx ) { y += step; control -= dx; } } } /* end of DrawLine_A */

[解説] XY-平面上の二点 \((x_0,y_0)\) と \((x_1,y_1)\) を通る直線の方程式は \((x-x_0)\Delta_y-(y-y_0)\Delta_x=0\) (ただし \(\Delta x=x_1-x0\), \(\Delta y=y_1-y0\), ) である。だからこれをラスタ画面で近似的に描くには、変数 x を 1ずつ増やしてピクセル (x,y) に点を打ちつつ、\(|(x-x_0)\Delta y - (y-y_0)\Delta x|\) が可能な最小値 (Δxの半分未満) をとるように 変数 y を変化させていけばいい。実際には (負の数を扱わずに済ますため) 変数 control の初期値を Δx の半分とし、点を打つたびに control|Δy| を加え、それが Δx に達するか越えたら y を 1 増減して controlから Δx を引く。もしも Y-座標の変化のほうが大きい (つまり \(|\Delta x|<|\Delta y|\) となる) 場合は xy の立場を交換して同様に操作する。もしも増分の大きいほうの変数が負の方向に変化するように指定された場合には、始点と終点を入れ替えてから以上の操作をする。そういう具合に何とおりも場合わけをしないといけないのが少々やっかいだが、それは仕方がない。

きょうはすごく蒸し暑い一日だった。なんだか膝が痛いなあと思っていたら、夜になって雨が降った。一晩中降りつづけてくれればよかったのだが、夜半には上がってしまったので、水不足解消には程遠い。歩数計カウント8,463歩。


2009年6月21日(日)くもり

午前中は妻が図書館に連れて行った。午後は俺が子供の面倒をみる。【娘】が図書館から『もののけ姫』のビデオを借りてきたので一緒に観た。いっぽうの【息子】は同じ本や同じビデオをくり返し借りたがるし、同じものを日に何度も見たがる。変化のない安心感を好むのかもしれない。忍者ブームが消防車ブームに切り替わったように、頭のスイッチが切り替わるタイミングも確かにあるのだが、それは予測不能なのだ。

夕方、メガネを受け取りに出かける。【娘】を連れて出て、銀行ATMに行くついでに、最近近所にできたヴィレッジヴァンガードをのぞく。自称「遊べる本屋」だが、実情は本屋半分雑貨屋半分。どちらかというと「本も置いている雑貨屋」である。グラフィックアート、建築、インテリアなど、ビジュアルデザイン関係の書籍が充実している。小説もあるが、ボリス・ヴィアンが何冊もあったりして、扱う作家を絞り込んでいる様子がうかがえる。もちろん若い人向けの店で、俺はストライクゾーン外もいいところのボール球なのだが、こういうセンスは俺には好ましい。BGMだってありきたりのヒップホップなんかじゃなかったし。オヤジがご愛顧してもかえってご迷惑だろうけど、控えめにでも応援したい店である。

これがチェーン店でなくてオーナーのテイストが出た個人商店だったらもっと嬉しいんだけどな。

【娘】が雑貨屋部分に魅了されて脱出不可能になりそうだったので、クマの顔をかたどった封筒つきのメッセージカードを買ってやり、強制的に引っ張り出す。また連れてきてやることにしよう。

ちかごろ書店も難しくなってきていて、なんでも、紀伊国屋書店も近々松山から撤退してしまうという噂だ。残念なことだが、考えてみれば、一般的なベストセラー本や実用書やゴリゴリの専門書などは、たしかに通販で買うのが便利で確実なのだ。紀伊国屋のようなオーセンティックな書店は、だからアマゾンやビーケーなんちゃらなどの通販会社とマトモに競合する。俺としては、紀伊国屋にも頑張ってほしいのだけど、アマゾンだって便利だからなくなってほしくない。そういうジレンマがあるいっぽう、小回りのきく書店が通販ではできない奇抜な売り方を実行に移すことにも期待したい。明るいポップな雑貨屋の店内にビジュアルデザインの本を陳列するというのはなかなかいいアイディアだ。たとえばおしゃれなカフェの書棚にインテリアや美術や映画の本が並んでいるのと同じ理由で、これは効果的だと思う。違うのは、ここでは本も商品だという点だ。もっともっと趣味に走る、というか、もっともっとポップなインテリジェンスという路線に突き進んで、他所にない味を出していってほしい。そのうえ雑貨屋部分がキッチュ/チープなものとブレイク寸前の新しいものを雑多にとりまぜた怪しい空間になれば 言うことなし。

俺が大学生だった四半世紀前の京都の繁華街にも、こういう怪しげだけどオシャレな本屋が何軒かあった。まあ、雑貨屋部分はもっとはるかにおとなしく気取りが多かったけどね。1980年代半ばといえば、角川書店が文庫本の売り方を改革した頃。コピーライターとエディターが憧れの職業になった頃。山口昌男や栗本慎一郎が著名人となった頃。記号論ブームが起こり、ポスト構造主義が云々されて、浅田彰や中沢新一や上野千鶴子がデビューした頃。あの頃から、知識がポップなものとして堂々とパッケージ商品化されはじめたのだと思う。知の商品化というと、先人から受け継いだ貴重な文化的伝統である知識や学問を軽佻浮薄な流行に乗せてしまうことを嫌う人もいるだろう。しかし、遠く木版刷りの昔から知識は商品化されてきたのだし、そうすることで一般庶民の知的レベルは確実に向上してきた。それに、売らんがために真実をねじ曲げてものを言う人はいつの世にもおり、そういう人たちの言葉が流布するに任せておく一方で、マトモな学者のちゃんとした学説がポップな衣装を着て街へ出てくることを拒絶するのは合理的ではない。知識は金庫にしまっておくようなものではないのだ。だから、知をオシャレかつオープンに語る時代がもう少し続いてくれればよかったと本当に思うのだけど、いろいろの流れでむしろオタクが市民権を得る時代が来てしまって、なんだか面白くない。


2009年6月20日(土)くもり

朝起きて気がついてみるとメガネのレンズが片方ない。フレームのネジが外れてレンズがどこかへ落ちてしまっているようだ。ネジが外れたのはこれで二度目である。これでは仕方がないので、近所のメガネ屋さんで新調することにしたが、レンズの在庫の関係で仕上がりが明日の昼ごろになるという。まあ仕方がない。それで今日一日はメガネなしで過ごした。老眼は少し入ってきたが、近視はそれほどひどくもないので、本を読むとかパソコンをいじるとかの手元作業には本当はメガネは必要ない。だからまあ、こういう日が一日くらいあってもよい。

妻は午後から夜まで大学院の授業だというので、子供を託児所に預けて出かけてしまった。俺は一人で電車に乗って いよ立花までいき、ひさびさにアプライドへ行った。街を歩いても周りの様子がぼやけてよくわからないが、目を細くしないように気をつけながら歩く。アプライドでも姉妹店のあぷあぷでも何も買わず、ジョープラへ移動して ざ丼でカツどんを食ってビールを飲んだ。ジョープラ3階のデオデオも見たが何も買わず、マッサージチェアで足腰をほぐした。そのあと歩いて移動。立花のタオル屋さんをひやかしたあと、千舟町のベスト電器へ行った。店舗改装前であり、書籍コーナーが引き払われていたり、いろいろさびしい状態になっている。ここでも何も買わず、ふたたびマッサージチェアを試用。その後千舟町を歩いて紀伊国屋へ。DOS/Vパラダイス松山店がなくなっていることにいまごろ気がついた。紀伊国屋でもやっぱり何も買わず、結局お日切さんのとなりのローソンでビールだけ買って電車で帰宅。けっこううろうろしたので、土曜日には珍しく、歩数計カウント11,278歩。といっても、たいした運動にはなっていまい。


2009年6月19日(金)はれ

妻が夕方ちょっと仕事に出なけりゃならんというので、【娘】は放課後も小学校で過ごした。仕事を早めに切り上げて迎えに行く。帰宅後しばらくして妻が帰ってきたので、あらためて電車に乗って3週間ぶりのピアノのレッスンへ。ショパンはメロディーに強弱とか緩急がつけられるようになってだいぶ面白くなってきた。レッスン終了後、ひさしぶりに銀天街の丸三書店にいった。速水豊『シュルレアリスム絵画と日本』(NHKブックス)を買った。以前から折にふれては気にしている福沢一郎の作品「科学美を盲目にする」が表紙にも使われている。

歩数計カウント15,233歩。


2009年6月18日(木)はれ

日中、暑くて大変だった。暑いと頭がボーっとしてしまうが、お前さんがボーっとしとるのはいつものことじゃろと言われそうだ。しかし妻を相手にトマス・クーンの「通約不可能性」についてレクチャーする日が来るとは思わなかった。

たとえば普通のA4コピー用紙を用意して(写真A)、正方形を折り取る要領で斜め45度の折り目をつけてみよう(写真B)。

写真A
写真A: どこのご家庭にもあるA4コピー用紙

写真B
写真B: 斜め45度の折り目をつける

こうやってつけた折り線(写真C)の長さは、用紙の長辺の長さと同じになる。斜めの折り線と長辺が重なるように折ってみるとそのことがわかる(写真D)。

写真C
写真C: 折り線がついている

写真D
写真D: 折り線の長さは長辺の長さと同じ

これはA4サイズに限らずA3でもA5でも、またB4とかB5でも同じである。用紙を二分割したときに、縦横の比率を保ったまま半分の面積の用紙ができるように、縦横の比率を \(\sqrt{2}\,:\,1\) にとってあるから、短辺がつくる正方形の対角線と長辺が一致するというわけだ。

こういう身近なところに無理数 \(\sqrt{2}\) が応用されているわけだ。このA4コピー用紙の縦横比である \(\sqrt{2}\,:\,1\) は、整数対整数の比率に換算できないので、同じ単位の整数倍として表示できない。このことは古代ギリシャ時代に発見され、いまでは中学校の数学の時間にも教えられているはずだ。古典数学ではこのことを「正方形の一辺と対角線は、通約不可能 (incommensurable)である」と言いあらわす。科学史家トマス・クーンは、異なる時代の科学(たとえばアリストテレスの運動学とニュートンの力学)が、同じ現象を別の観点から見ているために、お互いに正当に評価しあうための共通の土台を持たず、同じ用語で同じ現象を語ってもお互いに話が通じないという事態を、この「通約不可能性」という言葉で表現した。

もっとも、実際のA4コピー用紙のサイズは 297mm×210mm で、二つの辺がちゃんと 1mmという共通の単位の整数倍で表示されている。このサイズは \(\sqrt{2}\,:\,1\) という比率に近い値になるようにミリメートル単位で定めた近似値なのである。 \(\sqrt{2}=1.4142135\cdots\) に対して \({297\over 210}=1.4142857\cdots\) だからね。ためしに、297と210をそれぞれ二乗してみると、88,209と44,100で、両者の2乗の比率は2:1にかなり近い。これくらいのサイズの用紙なら4桁まで近似してあれば十分だ。

この「話が通じない」という意味から「通訳不可能性」と誤記している本や論文が散見されるけど、クーンはもともと物理学専攻の学者としてアカデミックなキャリアを出発させたひとだから、正方形の一辺と対角線の比の通約不可能性というトピックを正しく理解したうえで、あえて自分の科学論のキーワードとして持ち出している。だからクーンの科学論を云々するなら、通約不可能な比をめぐる基本的な数学の知識をマスターしてからにしてほしい。そのあたりを説明したのだけど、それにしても地域看護学とトマス・クーンに何のかかわりがあるのやら。歩数計カウント14,427歩。


2009年6月17日(水)はれ

自己紹介のページに連絡用フォームなるものを設置した。これは入力されたメッセージをCGIがメールとして俺のメールボックスに転送してくれるというものだ。メールシステムを利用してはいるが、こちらのメールアドレスを相手に知らせないし、相手のメールアドレスもこちらには知らされない。て日々を読んでなにか感想があれば、このフォームからぜひこっそり教えてほしい。

二ヶ月ぶりに散髪に行った。歩数計カウント10,371歩。

いよいよ近所の田に水が引かれた。夜にはさっそくカエルの大合唱だ。ぐぁっぐぁっぐぁっぐぁっぐぁっぐぁっぐぁっぐぁっぐぁっぐぁっぐぁっぐぁっぐぁっぐぁっぐぁっぐぁっぐぁっぐぁっぐぁっぐぁっぐぁっ。


2009年6月16日(火)はれ

ユニセフからなにやらお知らせが来た。その封筒に「女の子たちが学校に通えるようになれば次世代の乳幼児死亡率を抑えることができます」と書いてある。俺がその封筒を見て何か言いたそうにしているのを妻が見かけて、「これはフェミニズムとかそういうレベルじゃない、水は一度沸かしてから飲ませるとかその程度の基本的な育児のノウハウがなくて、子供たちが死んでいくという話なんよ」と説明してくれた。きっと、俺がいつものように反フェミニズム的な皮肉な意見を言うとでも、妻は思ったのだろう。だけど俺が考えていたのはそのことではない。

子供たちの命を救うというユニセフの活動に反対するわけではない。実際、俺たち夫婦は小額ながら毎月ユニセフに定額の寄付をしている。だからこそあのパンフレットが俺たちのところに届いたのだ。目の前に死にそうな子供がいたら、俺だって助けてやりたいと思う。それは自然な心の動きであると思うし、その心の動きのまま世界大の人道支援活動を展開しているのだと思えば、ユニセフの活動に文句をつける理由はない。

俺が言いたいのは、そうした活動はどうしても後手に回るしかないってことなのだ。

なにしろ、われわれが学校を必要とするのは、ネイティブな文明のもっていた文化の継承のチャネルが破壊されたあとなのだ。

命は、母から子へと伝えられていく。そして、どんな文明も、子供の世話をし、それからその世話の仕方じたいを子供に伝え、そうやって子孫を絶やさないそれなりの方法を持っていたはずだ。だってそうでなければとっくに滅亡している。それで満足しているうちは、学校なんてものは必要なかったし、もちろんユニセフなどというものが介入する余地もなかった。では、なぜユニセフが学校を立てる必要が生じているのか。これまでそれなりにバランスを保っていた小規模な文明が崩壊し、知恵を継承する方法が失われたからに違いない。ではなぜ知恵を継承する方法が失われたのか。それはわからないが、外から大きな力が加わったと考えるべきだろう。たとえば大きな自然災害とか、地球規模での環境の変化というやつかもしれない。戦争とか内乱、他民族の軍事的な侵略とか経済大国の搾取による生活環境の破壊かもしれない。

学校の建設が急務であるというのは本当なのだろう。だが、解決すべき真の問題はたぶん、ユニセフの活動の及ばない、他のところにある。

もちろん、文明が自発的に方向転換し文化の継承の新しい形態を獲得することがないわけではない。ユニセフがいう意味での学校、すなわち公教育の機関は、ヨーロッパ諸国、とりわけ革命期のフランスの発明品だ。この時代、ヨーロッパ諸国は近代化を志向した。こわーい王様のお触れに臣民がただ黙って従うのではなく、自由な国民たちがみずから国家の舵取りをする「国民国家」の理念においては、人々が誰に強制されたでもない自分たちの意思を表明する能力をもつことが、少なくともタテマエとしてだけでも、どうしても必要だ。そのためにこそ公教育が必要となる。国民国家には学校が必須なのだ。この場合、国家と国民が自分の意思で古い文明の桎梏を打ち破り、知恵の継承の新しい形をみずから選び取ろうと決意したのだから、それはそれでよい。明治維新期の日本もこの部類に入れてよいだろう。明治天皇は倒幕とそれに続く急速な改革の旗印として薩長に担ぎ出されただけだという説があるくらいだからな。たとえば福澤諭吉なんかにとって天皇はそういう存在だったのではないだろうか。ともあれ、近代国家への道をみずから望んで歩き始めた国は、みずからの意思で学校を建て国民を教育することになる。

国家が近代化し、また産業が発展することはよいことだったが、その背景にはつねに未開の国との経済格差があった。

日本の戦後復興は、戦争で疲弊し敗戦と共に破産状態になったこの国で、われわれの祖父母の世代が、安い労働力として工業製品の生産に従事し、多くの品物を世界中に安く売ったことによっている。そうやって復興し日本は豊かな国になった。いまでは、日本の企業も、より安価な製品を作るために、生産の拠点を中国や東南アジアに移している。かつての日本の経済発展のしくみを、中国や韓国やインドやマレーシアが経験しつつある。われわれの身の回りの生活必需品にどれほど多くの中国製品が入り込んできているか、ちょっとあたりを見回せば驚くほどだ。いま、中国は驚くべき勢いで経済成長を経験している。当然、国民の生活レベルはどんどん向上するだろう。そうすると、そのレベルを維持するために第三次産業が成長し、人件費もいずれ高騰せざるを得なくなる。日本がそうだったのだから、中国や韓国だって、そのうち必ずそうなる。そうなれば必ず、企業はより安価な労働力を求めて、あらたな新興工業国に目を向けるようになるだろう。こうしたフロンティア探しはいつまで続くのだろう。この調子で世界中が先進工業国になったら、その次の一手はどう打つのだろう。まあ、その前に環境問題で立ち往生しなければの話だけど。

ユニセフが学校を建てようと呼びかけている国々の場合は、学校はどんな意味をもつのだろうか。古い文明の桎梏をみずから打ち破り近代国家への道を歩み始めた人々が学校を欲しているのか。あるいは、外的な要因で文明を破壊された人々に生きる術を教えるために学校が必要なのか。ユニセフが学校を建てねばならぬくらいだから、後者であろう。いわば、近代化が暴力的な形で外からやってきたわけだ。

いっぽう、生活必需品の生産を外国に依存するようになった豊かな国に「自分さがし」をする人たちが増え始めた。なぜ自分をさがすのか。それは、いまの自分が「ほんとの自分じゃない」と思われるからだ。そしてそれは、いま現在「食うに困っていない」にもかかわらず「幸福ではない」からにほかならない。世界中を巻き込んで大きなうねりを作っている社会の工業化は、その最先端に位置する国々にすら不満顔の人々を生んでいるわけだ。

命を救うために学校を作る活動は尊いものかもしれない。だが、そうすることで、文明を破壊され生きる術を失った人々に、われわれ自身が不承不承に走らされているレースの最後尾について走りなさいと呼びかけているように、俺には思える。欧米諸国や日本が、砂煙をまき上げながらこのレースの先頭を走り、その少しあとを中国と韓国が必死で追い上げている。しかし困ったことに、いま走っているこの道のほかには進むべき道が見えないにもかかわらず、この道がどこに向かっているのか誰にもわからない。このレースに、すべての国の人々を巻き込むことは果たして正しいことなのか。

これら後進の国々で子供たちが学校に通えない事情を考えるともっと話が難しくなる。壺井栄の『二十四の瞳』にあるように、かつては日本にも経済的な理由で小学校すら中退せねばならぬ子供たちがいたわけで、学校を建てるということが、子供たちが安心して家を後にして学校へ向かえる状態を作る(『二十四の瞳』の、たしか松ちゃんだったか、そういう不運な子供が出てこないようにする)ということを意味するとしたら、それは経済構造を大きく改善すること、あるいは家族の仕組みにまで介入することを意味するかもしれない。明治時代の日本には「義務教育反対一揆」があったという。理由はあきらかだ。農村漁村では子供だって子供なりに働き手だったのだから。さらに、女の子が学校に通わない理由がもしも宗教的なものだったとしたら、話はもっとややこしくなる。子供が学校に行くというわれわれにとって単なる当たり前の事項は、すべての文化的コンテキストにおいて自明に正しいというようなものではないのだ。

いや、もういっぺん言うけど、こう書いたからといって、決して学校を建てるのに反対しているわけじゃないんだってば。


2009年6月15日(月)はれ

先週金曜日に書いたディスクイメージ吸い出しプログラム。読み出しに成功した場合にしかるべきファイル名をつけるように促す部分と、エラーまたはキャンセルで中断する場合にテンポラリファイルを消去するかどうかたずねる部分を追加し、エラーの際には該当するシステムコールのエラーコードを出力するように書き換えた。こうなると、テンポラリファイルのあるディレクトリ以外の場所へファイルを保存したいとか、2DDディスク (特にMacintoshフォーマット800Kディスク) の吸い出しに対応するとか、コマンドライン引数を用いてバッチ処理したいとか、いろいろやりたいことは出てくるが、2DDディスクについてはこれから少し調べないといけないし、コマンドラインの解釈をするコードをアセンブリ言語で書くのはちょっと大変だし、ということで、いったんこの状態で公開。(→090615a.asm) この状態でも、FreeDOSでそれなりに便利に使っているけれど、ためしてみたところ Windows XP や Vista のコマンドプロンプトではマトモに動かない。というのも、DOS のシステムコール 0x48 が失敗するのだ。12キロバイトぽっちのメモリブロックを割り当ててくれないなんて、他のDOSコマンドはどうやって動かしているんだろうなあ。EXEファイルにすればいいんだろうか。よくわからない。

カミキリムシ
そろそろ散髪に行きたいなあと思いながら歩いていたら
カミキリムシさんに遭遇。


2009年6月14日(日)はれ

【娘】さんの学校の「フリー参観日」だ。午前中だけ授業をし、その間、父兄でなくても誰でも、どの教室でも見ていってくださいという企画。なんだか最近の小学校はいろいろやることがあって大変なんだなあ。昨年一年間登校に付き合ったおかげで、【娘】のクラスメートたちのあいだでは俺は多少は顔が売れているが、お母さんたちと交流する理由が見つからないし、お母さんたちのほうにも見知らぬヒゲ面のおっさんと交流する理由は更にない。社交的な態度をまったく取れないわけではないが、そのためには俺はかなり意識的に努力せにゃならん場合が多いので、いついかなるときにも当たり障りのない話題で適当に交流しているお母さんたちをみると、偉いなと思うとともに、気が知れんとも思う。そして、公共の場でそんなことをグルグル考えていると、傍目にどんどん怪しい人になってしまうような気がして、ますます気が滅入る。悪循環である。幼稚園のイベントのときにも同じことを思ったが、こういうときにはどうしても孤立感に苛まれる。まあ、この数日またしても食事と睡眠が不規則で、体調が万全でなかったこともあるが。

午後は、今度は一人で、コミセンの図書館に俺と子供たちの借りていた15冊の本と2本のビデオを返しに行った。その後、PCデポで新しいキーボード (Buffaloブランドの黒いメンブレ式PS/2キーボード, 購入価格997円) を買った。というのも、FreeDOSパソコンでいままで使っていたキーボードは Enter キーの効きが非常に悪いのだ。これもお金があればダイヤテックの FILCO Majestouch キーボードにしたいところだけど、ガマンガマン。

そのあと南江戸セブンスターで食材を買って徒歩で帰宅。


2009年6月13日(土)はれ

妻子と一緒に愛媛県美術館『こどものとも 原画展』に来た。福音館書店の子供向け月刊絵本シリーズ「こどものとも」に収録された絵本の原画の数々を展示。絵の傍らにはちゃんと文章も添えてある。絵本をみるのとはまた違う味わい方で、なかなか興味深い。原画を間近で見て、一枚一枚が丁寧に描きこまれた「ちゃんとした絵」であることを改めて認識。

妻と【娘】は喜んでいたが、【息子】には面白くない。普段から「のりものずかん」的な本ばかり喜んで見ている【息子】には物語というものへの興味が薄いようだ。きっと、絵に描かれた物語世界は面白くないのだろう。まあ、無理もない。見るもの触れるものが真実そのままである幼児世界では、人も空も虫も草花も、美術館の外にあるのがホンモノであり、絵はその代理または記号にすぎないから、その中で走り回っているほうが楽しいといわれればそれまでだ。それに、美術館という空間に課されたお約束が4歳半のハナタレ小僧にわかるわけもない。【息子】は例によって走り回り陳列室から脱走。おかげで妻はろくに絵が見れなかった。7月5日までだそうだから、機会があればまた来ることにしよう。

絵が事物の記号であり代理であるというのは、お外遊びをしたい盛りの幼児たちの気持ちを俺が忖度して言っているまでであって、俺の見解ではないぞ。たとえば10日の日記に掲載した【娘】の絵にはカタツムリが描いてあるが、この絵を見て喜んだ俺はカタツムリを見て喜んだわけではないし、読者にカタツムリを見せたくてこの絵をここに載せたわけでもない。この絵はカタツムリを描いた絵ではあるが、まぎれもなく【娘】の作品。描く行為は表現あるいは創作なのだ。【娘】はいまの【息子】と同じ年齢の頃にはすでにお絵かき大好きだった。同じ親から出てきても、子供は一人一人違うんだなあ。


2009年6月12日(金)はれ

金曜日はピアノのレッスンがあるいというのに楽譜をもたずに仕事に行った。仕事を終えて急いでいったん帰宅し、楽譜をもって電車でピアノ教室に行ったけど部屋が真っ暗。なんじゃ。レッスンのない週だった。先週風邪でお休みしたからチェックしていなかったのだ。今夜は妻は急な用事で子供をつれて新居浜に行っている。空いた時間をどうしようか。しばらく行っていなかった宮西のブックオフに行ってみた。それからフジグラン松山の山小屋ラーメンで昭和ラーメンと瓶ビールのひとり夕食。自宅と職場の往復と、花園町から宮田町までのルート、それに職場でのちまちました動き、そのほか合計で、歩数計カウント19,762歩。

帰宅後は、妻子のいない静かな家でアセンブリ言語のプログラムを書いた。FreeDOS.orgkernel.org で配布している rawrite2.exe というディスクイメージ書き込みの DOS コマンドは自分も便利に使わせてもらっているけれども、同じ配布元が出している、フロッピーディスクからディスクイメージファイルを作る raread.exe というコマンドは、自宅の FreeDOS 環境ではなぜか division by zero エラーが出てどうもうまく動かない。ディスク読み込みに割り算がなんで関係あるのかわからんのだけど。使えないものは仕方がない。火曜日の日記に書いた RawWrite for Windows はディスクイメージ読み込みもこなすから、 Windows でなら raread に相当する機能は使えるのだけど、そもそもフロッピーディスクなんて時代物メディアを使っているのは FreeDOS やそれ以前の PC のブートプロセスの勉強のためであるから、できれば DOS でディスクイメージを扱いたい。だから自分でコマンドを作ってみた。ひとまず A: ドライブの2HDフロッピー(2880セクタ×512バイトに固定) からカレントドライブのカレントディレクトリの新規イメージファイルへのコピーに限定してしまっているが、DOSやMacintoshの2HDフォーマットのフロッピーの読み取りやバックアップにはそれなりに使える。ソース(090612a.asm)を置いておくから、興味のある人は見てちょうだい。当面の用はこれで足りるけど、そのうち気が向けば改良するかもです。

後日追記:少し改良したソースに差し替えます:090615a.asm (6月15日)


2009年6月11日(木)はれ

大学院生である妻が城北キャンパスで開かれているカンファレンスに出席するというので一緒に昼飯。学食の混雑を避け、となりの松山大学の『カルフール』の食堂まで行った。俺は昼休みには自分のオフィスでメシ食って昼寝してあまり外に出ないから気がつかなかったけど、昼休みの大学会館前って、サークルのチラシを配っている人たち、サックスとエレピでジャズを演奏する人たち、思い思いに語り合う人たち、いろいろいて、なかなか素敵な空間なんだな。それに、俺の学生時代 (1980年代なかばの立命館大学衣笠キャンパス) は、キャンパスの昼休みっていえば自治会の演説と相場がきまっていたし。それでも、若くてエネルギーのあったあの頃の気分をちょっと懐かしく思い出しちゃったよ。

1980年代半ばといえば、CDプレーヤーが低価格化しはじめた頃だ。理工学部3回生だった俺は、180円のスティック糊を買いに生協へ行ったのに、その日に入荷したという29,800円のデンオンのCDプレーヤーの購入契約をしてしまった。当時居候していた『理工学部自主ゼミ委員会室』に数日して行ってみると、そのとき買った糊のケースにマジックで“30,000円”と落書きしてあった。しかしその落書きをした奴も、たしか別の日に120円のパンを買いに生協に行って別のCDプレーヤーを買っていたから、人のことは言えない。いまGoogleでその悪友の名前を検索すると、特許出願情報が最上位に来る。会社名と出願内容からみて、本人に間違いあるまい。他の同級生の名前も同じ特許情報のサイトに登場する。こちらも本人である可能性が高い。フーテンじみた俺とちがって、彼らはこの世の中を人目につかないところで支える通信や半導体の技術開発でがんばっている。頭が下がる。そして、元気そうで何よりだ。

昼休み後は、あれもせんといかんこれもせんといかんとあたふたして一日が終わった。歩数計カウント11,913歩。


2009年6月10日(水)あめ

【娘】が昨日あのような絵を描いたら、きょうは一日しとしとと雨が降り続いた。【娘】さんの絵にこれほどの効力があるとは。水不足のため小学校のプールの授業はなにせ3回しかできない見通しなので、きょうの雨の中でも決行されたらしい。この雨で少しは水不足が和らいでくれるといいが。

きょうみたいないい雨の降り方の日がこれからもありますように。【娘】さんの絵を掲載。

でんでんむし と ずーぼるてるて
あめふって はよやりたいな がっこうのプール

傘の下楽しそう
あめふれば ともとたのしい かえりみち

あまがえる
かえるのうたが きこえてくるよ

歩数計カウント7,099歩。


2009年6月9日(火)くもり

愛媛県中予地方は今年も雨が少なくて、松山市立の小中学校では体育の時間にプールの授業ができないらしい。で、プールに入りたい【娘】が「あめあめふれふれ」の絵をいろいろ描いていた。いやほんと、水不足はいやだよぉ。

1.44MB 2HD フロッピーディスクの Macintoshフォーマットと DOSフォーマットは、ジオメトリ的には同じと見えて、DOSの debugコマンドの l サブコマンドや、RawWrite for Windows などのツールを使えば読むことができる。ファイルシステムが全然違うので、ファイルの読み書きができるというわけではないが、ディスクイメージとして保存することは可能で、いずれ劣化して読めなくなるであろうフロッピーディスクのバックアップをとれるだけでも、多少は心強い。それにしてもこのごろは、職場のWebサーバを別にすれば、本当にまるきりMacを使わなくなった。たまにはQuadora 650 や Blue&White G3 を起動してやらんとな。

おおっ、RawWrite for Windows の一次配布元 chrysocome.net (Chrysocome とは イワトビペンギンのことらしい) では dd for windows なんてものも公開しているじゃないか。これはけっこう便利かもしれん。となるとあとは hexdump に相当するコンソール版のツールがほしいところだな。


2009年6月8日(月)はれ

職場の定期健診だ。胸部X線から身長体重視力聴力とメニューどおり受けて、血圧のコーナーまで来た。測定は二回。一回目は120/95という非常にまっとうな値。二度目の測定にかかろうという時に、隣の採血のコーナーから、係の人の「輸血された経験とかありませんよね?」とかなんとかいう声が聞こえてきた。きっと肝炎ウィルス検査のオプションをつけているのだろう。その人は「ありません」と答えていたのだけど、血圧測定中で手持ち無沙汰な俺は、頭の中で「俺は輸血経験あるよ。あれは個人的にも社会全体をみても踏んだりけったりの1995年の春。忘れようにも忘れられない。」と勝手に答えてみた。そしたら、頭の中にバカボンのパパが登場して「おーあれは忘れようにも思い出せない、1995年のことなーのだ。」とかなんとか言い出したので、思わずウヒっと笑った。血圧の測定値が137/95になった。「すんません笑ってしまいました。もう一度計ってください。」と深呼吸して三度目の測定。ところが「笑っちゃいかん」と思うとかえってダメで、腹筋が小刻みに「くっくっく」と震える。測定値143/89。とうとう担当のお姉さんまで笑い出して四度目の測定。135/93となって、結局この値を二度目の測定値として採用。まあ、要するに普段からこれくらいの値なのだろう。怒っている時と同様、笑っているその瞬間には血圧だって上がっている。だけど、それ以外の体の反応は笑いと怒りでは大違いで、笑うことは大変健康によい。とはいえ、血圧測定中に一人で思い出し笑いしている姿は客観的には気色悪いものであったにちがいない。歩数計カウント8,433歩。


2009年6月7日(日)はれ

今日も家から出ず。少々ヤケ気味で、ちと荒っぽいくらいの勢いでキッチン周りの大掃除。夜は遅くまでかかって『獣の奏者』をしまいまで読んだ。パソコンいじりは進展なし。


2009年6月6日(土)はれ

あいかわらず体調がすぐれず。一日家にこもっておりましたとさ。


2009年6月5日(金)くもり

昨日は体調が悪いだなんだ言いながら行き帰りに長々と歩いたもので、とうとう喉がやられてろくに声が出なくなった。今日の授業は二つとも中間テストで、あまりしゃべらずに済むのがさいわいだ。朝の授業で70人ちょっと、午後の授業で60人弱がテストを受けた。この130人分を採点しないといけないのだけど、こちとら頭がぼんやりして難しいことは考えられない状態。ピアノのレッスンもお休みすることにして、電車で早めに帰宅。しかし、家が散らかっていて落ち着かない。がお〜(- - ")


2009年6月4日(木)くもり

やはり少々体調が悪い。歩数計をリセットするのを忘れて出かけてしまい、いつものように4,500歩ほども歩いて職場についてから気づいた。そこから改めてカウントして9,036歩だ。だからきょうの歩数は13,000歩前後である。

夕方、いつもの医者にいつもの薬を出してもらいに行く。抗生物質も処方してもらった。その帰り、書店で なかがわりえこ+やまわきゆりこ『くまさん・くまさん』(福音館書店)という絵本を購入。2歳前後の子供向けだから、うちの子供たちにはもう遅いのだけど、今回のターゲットはもちろん妻だ。【息子】を寝かすタイミングで読み聞かせると、妻は予想どおり《幸福度マックス飽和状態》となったが、【息子】くんは読み終わるのを待ちかねるように、「つぎこれよんで」とのりもの図鑑をもってきた。一時の忍者ブームが過ぎ去って、いま【息子】は のりものに夢中なのだ。男の子だなあ。そしてその頃、【娘】は明日の学校の用意もそこそこにグーグー寝てしまっていた。

あいかわらずのコンピュータ話。プロテクトモードに入る手順がわかったので自分でもアセンブリ言語のコードを書いてみた。おもちゃにもならない小さなプログラムでも、期待どおりに動くまでにはいろいろ失敗もする。たとえば今日は“ブートコード”のバグを修正しているのに“カーネル”の再アセンブルばっかりして、「なんで直らないんだろう」とまたブートコードのソースとにらめっこする、というアホをやっていた。こんなのはビルド用のバッチファイルひとつ用意すれば避けられる失敗である。人様のソフトウェアを開発する仕事でこんなことをしていたら即刻クビだろうけど、自分の勉強でやっている身としては、こういう失敗があればこそ Make ユーティリティの有難みもわかろうというものだし、ちょっとくらいの失敗はかえって勉強になる。できたコードは、(1)ブートローダはディスクからカーネルとデータをRAM上にロードし実行する。(2)カーネルはプロテクトモードに突入し、データセグメントにある文字列をテキストVRAMに書き込む。(3)オシマイ、という、それこそオモチャにもならないものだ。それでも、期待通りに動いたときは嬉しかった。あんまり嬉しいので人に自慢したくなるが、まだ人前に出せるコードではないので、いずれまた。


2009年6月3日(水)あめ

朝からなんだか曇り空で、午後から小雨。それに生活のリズムが崩れがちでもあり、気分もすっきりしない。が、もちろん気持ちが晴れないことを天気のせいにしていても仕方がない。プログラムリストの背景色なりと変更して、明るい気持ちでいこう。

やる気やる気やる気

昨日書いた NASM のバージョン間の違いについてもう少し調べてみる。まず、次のようなアセンブリ言語コードを用意した:

(リスト1) ORG 0 BITS 16 jmp $+2 jmp _come_here_baby _come_here_baby:

これを、NASMの 旧バージョン 0.99.06 や バージョン 2.02 でアセンブルした結果は次のようになる:

(リスト2) 1 ORG 0 2 BITS 16 3 00000000 EB00 jmp $+2 4 00000002 E90000 jmp _come_here_baby 5 _come_here_baby:

いっぽう、NASM 最新安定版バージョン 2.05 および 開発バージョン 2.06rc12 の出力はこうなった:

(リスト3) 1 ORG 0 2 BITS 16 3 00000000 E9FFFF jmp $+2 4 00000003 E90000 jmp _come_here_baby 5 _come_here_baby:

この jmp 命令の扱いの変化は、いつ、どういう理由で導入されたのだろうか。乗りかかった舟だから各バージョンをダウンロードして追跡してみた。バージョン2.04rc1と2.04rc2で挙動が違っている。両バージョンのソースアーカイブに含まれる更新履歴 (doc/changes.src ファイル) を比較すると、rc2版では The optimizer now always runs until it converges. It also runs even when disabled, but doesn't optimize. This allows most forward references to be resolved properly. という記述が追加されている。コード最適化機能の仕様変更があったというわけだ。では、ためしに最新バージョン 2.05 で最適化オプションを変えながらアセンブルしてみよう。

最新バージョンのマニュアルによると、最適化オプションは、-O0 (最適化なし) -O1 (最小限の最適化) -Ox (複数パスの最適化) の3通りある。はじめに掲げたソース(リスト1)を NASM 2.05 で -Ox オプションをつけてアセンブルした場合、出力はこうなる:

(リスト4) 1 ORG 0 2 BITS 16 3 00000000 EB00 jmp $+2 4 00000002 EB00 jmp _come_here_baby 5 _come_here_baby:

同じくバージョン 2.05 で -O1 あるいは -O0 をつけた場合の出力結果はデフォルトと同じ(リスト3)であった。リスト4はどのバージョンのデフォルト動作とも一致しない。もしも新しいバージョン (2.04rc2 以降) で旧版の出力結果と同じリスト2のバイナリ出力を得たいと思うなら、jmp 命令のオペランドサイズを明示して

(リスト5) ORG 0 BITS 16 jmp short $+2 jmp near _come_here_baby _come_here_baby:

と書けばよい。いや、それよりも、変数 $ をあてにするのをやめて、ジャンプの着地点にラベルを貼り

(リスト6) ORG 0 BITS 16 jmp short _label _label: jmp near _come_here_baby _come_here_baby:

とかなんとかするべきだ。あとでやっぱり NEAR ジャンプに書き換えようなんて考えたときには、jmp short $+2jmp near $+3 と書き換えることになるが、ラベルが貼ってあれば jmp short _labeljmp near _label と書き換えればよいわけだから、ミスの可能性が減り、「暴走街道まっしぐら」となる危険性も減る。ましてや、もう少し大きな書き換えのために着地点を変更しようなんて話になれば、なおさらのことだ。

この話の教訓は、アセンブリ言語のオペランドのサイズ指定がクリティカルな意味をもつような場面では、アセンブラのデフォルト動作をあてにしないで、できる限り明示的に書くように心がけるべきだ、ということである。


2009年6月2日(火)はれ

先月28日に書いたとおり、金凡峻『作りながら学ぶOSカーネル』のソース3-1 (p.42〜p.45) がうまく動かなかったのだけど、その原因は吐き出されたコードを debug コマンドで逆アセンブルしたらわかった。ソースの17行目にある jmp $+2 というインストラクションは、パイプラインに先読みされ実アドレスモードで解釈されたインストラクションを無効にするために、現在のインストラクションの番地 (それがアセンブリ言語の変数 $ の意味内容) の2バイトあとの番地にあるはずの次のインストラクション、すなわちソースの18行目の nop 命令に移動することを意図しているのだが、アセンブルされた機械語コードでは

2E15:0000 8CC8 MOV AX,CS 2E15:0002 8ED8 MOV DS,AX 2E15:0004 31C0 XOR AX,AX 2E15:0006 8ED0 MOV SS,AX 2E15:0008 FA CLI 2E15:0009 0F01168500 LGDT [0085] 2E15:000E 0F20C0 MOV EAX,CR0 2E15:0011 660D01000000 OR EAX,00000001 2E15:0017 0F22C0 MOV CR0,EAX 2E15:001A E9FFFF JMP 001C 2E15:001D 90 NOP 2E15:001E 90 NOP

てな具合で3バイトのコードが出力されている。キムさんのソースではここでは2バイトの SHORT ジャンプのコードが出力されることを想定している。ところが実際には NEAR ジャンプのコードが出力された。このアセンブラの動作の違いは、本に NASM のバージョン 0.99.06 を使えと書いてあるのに、俺が以前にインストールしたバージョン 2.05 を使ったのが、原因だろう。

とにかく、プログラマの意図に反してアセンブラが3バイトのコードを吐き出したおかげで、ジャンプ先は 001D番地にある次のインストラクションではなく現在のインストラクションの途中の 001C番地である。その位置からコードを逆アセンブルしなおすと、

2E15:001C FF909066 CALL WORD PTR [BX+SI+6690] 2E15:0020 67 DB 67 2E15:0021 EA28000000 JMP 0000:0028

となってしまう。この call 命令は、実行時にたまたま BX レジスタと SI レジスタに入っている数値次第のまったく予測不可能な BX+SI+6690 番地のメモリに、その時点でたまたま書き込まれているアドレスという、二重に予測不可能な場所へのサブルーチンコールだ。そうなりゃあもう、暴走街道まっしぐらとなるのは必定である。CPU は、自分が実行しているコードが意味不明のものだろうがなんだろうがお構いなしで《言われたとおりに》どんどん実行する。とにかく、仕事が速くて疲れを知らないのはいいが、ものすごくおっちょこちょいで単細胞で、要するにどうしようもないくらいおバカさんなのだよ、CPU というやつは。

しかし、アセンブラの動作の違いが原因だったとは。ソースをどんなに眺めても間違いが見つからない道理だ。少し修正して、jmp short $+2 と書くか、ラベルを使ってジャンプ先を明示すれば、新しいバージョンのアセンブラを使ってもちゃんと動くコードになる。新旧二種類のバージョンの NASM をわざわざインストールしたくないという理由があったとはいえ、俺がテキストの指示にちゃんと従わなかったために引き起こしたトラブルだったわけだ。やれやれ。ようやく先に進めるよ。

夕方から市民コンサートの機関誌作業。このごろはなにせ手際が良くなって、6時半に始めて8時には完了。歩数計カウント11,017歩。


2009年6月1日(月)はれ

このごろ一週間が過ぎるのがあっという間に感じるけど、日記を読み返すとけっこういろいろなことをやっている。時間が飛ぶように過ぎたと感じるのは日々の暮らしから気持ちが浮き上がっているからか、あるいは逆に気持ちが現在に集中しているからか。今週はいろいろとやることがあって忙しい。そういうときこそ一つ一つちゃんとこなして、ちゃんと記録しておくといい。先の計画も大切だけど、俺のような思いつき人間には記録も大切だ。

このごろ一週間が過ぎるのがあっという間に感じるけど、日記を読み返すとけっこういろいろアホなマチガイをやっている。先日は mov bp,sp と書くべきところを mov bp,ss とやらかしたアセンブリ言語のコードを公開してしまった。そして、先ほど気づいたことに、4月28日以降一か月ちょっと、日記エントリの日付欄につける id 属性 (たとえば今日の日記は id="diary20090601" となる) を diary2008xxxx と去年の日付にしていた。まあ、ちょっとした思い違いなのだけど、コピー&ペーストでマチガイが遺伝して、全然気づかずにひと月過ぎたのが恥ずかしい。いまのところ何も利用していないが、このさき、スクリプトを作って日記を日付単位で切りわけるなんてことをしようとすれば、頼りになるのがこの id 属性だ。マチガイは修正するに越したことはない。

歩数計カウント12,394歩。