まつたろうの歩み

PythonやCの勉強中に「指し示す」いう表現がありました。それを知りたくて今はコンピュータシステムを勉強しています。

コンピュータシステムの理論と実装。第6章アセンブラー 完成しました!

 高レベルなプロジェクトだったので、途中で投げ出すかもしれないと思って始めました。途中で投げ出しても、何年か後に取り組めるからと気楽な気持ちでいました。これまで報告しているように大変な取り組みでした。先日、Lタイプのアセンブラーが完成したことをお知らせしました。その後、どうしたら良いのか考えあぐねていました。

 毎日の日課である準備運動をすませ散歩に行く前に、フッと辞書を使えばいいじゃんと思いつきました。hack言語では( )の中と@の後にシンボルがあります。1回目のパースでその( )のシンボルのアドレスを専用の辞書に格納し、2回目のパースで@シンボルのアドレスを辞書から取得するという方法です。先生が言われていた2回のパースという意味はこれじゃないかと思います。

 思いついたら、Maxはほどなくできました。

Max.hack 成功しました。

 Rectになると、別の@シンボルがでてきました。RAMアドレス16から始めるようになっています。val_num = 16 変数を定義し、その後その部分のループだけインクリメントするようにして、なんとかできました。

Rect 成功したかな。

 実行してみると、2進数を出力しています。CPUエミュレーターで実行しました。

Rect.hack 成功しました。

 最後は、Pongです。これには2日かかりました。@シンボルのアドレスがうまく設定できません。あることができたら、うまく動作していた部分が変わってしまったりしました。試行錯誤しながら、あれこれやりました。ファイルも途中で何度も別名で保存して、行き詰まったら前のファイルを開いてやり直しました。ようやく今日、Pongが動作しました。ハンドアセンブラーを含めたら、5ヶ月ほどかかりました。

Pong.hack 成功しました。

 次は7章です。しかし、もう1回資料を見ずにプログラムを書けといわれても、かけません。終わったら、忘れてしまっています。せっかくPythonの勉強をしたので、忘れないうちに少し復習をしておこうと思います。7章の勉強はその後にします。

ーーーー 今日の日記 ーーーー

 最近、ウクライナが少しもりかえしているような報道が見られます。ロシアが手を引けばすぐに収まるのに・・・、早く平和になって欲しいです。

 中秋の名月きれいでした。最近空気が澄んできたのか、早朝の星空が素晴らしいです。このまま涼しくなるのかと思われましたが、残念ながら熱帯夜でエアコンつけながらの生活です。早く涼しくなーれ。