プログラミング言語
ここで、 インストラクションセット を見てみよう。 これらはプロセッサのインストラクションだ。各々のインストラクションはコードで、たとえば「ふたつの数を加える」というような操作を行う。 そして、このプロセッサに対しては、これがデータシートだ。各々のインストラクションについて書かれたAtmel社のドキュメントだ。 各々のインストラクションを拾い読みしてみると、このデータシートは、各々のコードが何であるかということと、その役割を教えてくれる。 しかし、いかに他の何をしようとも、最終的にはこれ(アセンブリ言語)が実行されることになる。これらはプロセッサが理解できるコードだ。これを手書きする人間はいない。 もし、そうすることができるようになりたいのであれば、これをプログラマにロードすれば良い。これは hex file と呼ばれるものだ。そして、このhex fileはインストラクションを用いる。君たちはこれらのインストラクションをファイルに書くことができるんだ。
アセンブリ言語 これらは2つのアセンブラ( gavrasm , avr-as )だ。 そして、アセンブリ言語プログラミングにおいては、君たちが行うべきことはコードを正しく書くことだ。そして、変数に名前をつけることでそれは簡単になる。 かつて、これらのプロセッサをプログラミングするためには、君たちはアセンブリ言語を使わなくちゃいけなかった。 しかし、今やそんな事をやろうとする者はほとんど誰もいない。 なぜならば、それは非常に下層のレベルにあるものだからだ、だからといって、それはそれほどハードなことじゃない。 そして、こいつの良いところは、完全なるコントロールを与えてくれることだ。典型的な例を挙げよう。もしも君たちが本当にパフォーマンスの限界値を使わなきゃならない局面で、アセンブリ言語を手書きしてやるという手を使えば良いんだ。 とは言っても、ほとんど誰もそんなことしやしない。なぜならば、コンパイラが相当イケてるからね。 だから、僕は君たちにいくつかアセンブリ言語の例をお見せするけれども、君たちがこれらを使うことはないだろうね。
(つづく) 講義の目次は 【和訳版】FabAcademy 2016 からご覧ください。 ※この記事は FabAcademy 2016 におけるニール・ガーシェンフェルド教授(MIT)による講義動画をもとに作成しました。正確な訳ではないので間違っていたら指摘いただけるとありがたいです。