アセンブラ・プログラミング
高性能なスマートフォンを持ち歩き、常にネットに繋がってクラウドの恩恵を享受している現代において、どうしてアセンブラでプログラムを書く必要が有るのだろうか???
複雑で大規模なものはOS(オペレーティング・システム)や高級言語(C++やJaveなど)を使わないと太刀打ち出来ませんが、IoTの時代に比較的小規模で、省電力で安価な製品開発にはまだまだアセンブラ言語が現役で使われています。
OSすら使わない場合も多々有ります。
マイコンやDSP(デジタル信号処理プロセッサ)の中身は、今も昔も「CPU、メモリ、シーケンサ」です。
CPUとメモリの間にバスが有ったり、データ伝送を高速に行うためにDMA回路が有ったり、プログラムの流れを変えるための割り込み回路が有ったり、外部メモリのコントローラやキャッシュメモリが有ったり、外部との通信を行うためのインターフェイス回路が有ったりしますが、基本的にはその程度のものです。
アセンブラ・プログラミングの楽しみは、そんなマイコンの構造(アーキテクチャ)を理解して、限界性能まで引き出す事ではないかなと思います。
1ステップ減らすために何時間も掛けて知恵を絞る、パズルを解くような楽しみです。
弊社にはこのようなマイコンプログラムの最適化・高速化の仕事の依頼が来ます。
FPU(浮動小数点演算ユニット)が無いマイコンでデジタル信号処理を行うために、浮動小数点演算のプログラムを固定小数点演算に書き換える仕事もやっています。
ほとんど職人技のような世界ですね。