AssemblerとC

1990年頃だったと思うが、MS-DOSをバージョンアップしたら、Masmが付属しなくなってしまった。
それで別途アセンブラーを買った。当時これから言語は「C」の時代だなどと、どの雑誌にも書いてあったので、Cコンパイラーも買った。今から考えると、アセンブラーは無駄な買い物だった。Cの機能の中にInner Assemblyというものがある。アセンブラーが必要なのはほんのわずかな部分なので、専用のものは不要だったのだ。

Cは関数を書いて組み上げてゆく言語だ。
最初は面食らったが、簡単なものはなんとか書けるようになった。dBASE3で、まず構造をしっかり考える訓練が出来ていたのが良かったと思う。アセンブラーのように、メモリーのアドレスを意識する必要はないし、レジスタに値を移す前に、レジスタの値をスタックにプッシュ(一時保存)して、作業が終わったら、スタックから値をポップしてレジスターの値を前に戻しておくとか、お決まりの面倒なことはCに任せておけば良い。変数を宣言すると、適当なアドレスに適当な容量(バイト)を確保してくれる。関数も適当なアドレスに設置される。

ただ直接アドレスにアクセスした方が簡単なことがある。例えば、画面上の何番目のビットが1なのか0なのか知りたいとか、直接書き換えたいとか、そういうときはアセンブラーに限る。
Cの得意な人なら「ポインタを使えばいいでしょ」とか言いそうだけど、あのポインタというのが曲者で、必ずバグの元になってしまうのだ。その上一旦バグるとどこでバグったのかなかなか分からない。ちょっとしたミスを見つけるのに何時間もかかって頭がパニック状態になってしまう。そんなことが何度となくあった。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中