マシン語はそれほど…

DSPならともかく、汎用プロセッサのマシン語じゃぁねぇ。

いや、エキサイティングだと思いますよ。マニアとしての私はアセンブリ言語やプロセッサ・アーキテクチャを解さない人と話すと甘美な優越感に浸ることが出来ます。
この方のおっしゃるマシン語とはプロセッサの命令セットのことだと思いますが、iA32やARMのような汎用プロセッサの命令セット、マシンアーキテクチャを知ることが、よいプログラムを書く上で必須かというと、私ははっきりと首を横に振ります。特に仕事では。せいぜい、知るべきはワーキング・セットの概念とメモリ階層です。
とはいえ、何を知ればプログラムを本当に理解して書くことになるんでしょうね。80年代に学んだときに真髄だと思ったアルゴリズム論は、いまやSTLなんかにパッケージ化されています。データ構造や検索機構はデータベースの向こうに隠れているようです。
プログラムを書くときに重要なのは問題を理解し、それをプログラムの構造に反映することだと言うことは、今も変わっていないと思っています。私が関心を持つ組み込みプログラミングでは、その「問題」がプロセッサの張り付いている基板を含んでおり、デバイスに対する理解は必須です。でも、ARMやSHの命令セットに対する理解が非常に重要だとはいえません。メモリ階層やワーキングセットはとても重要ですが。
まぁ、iA32の命令セットがいろいろな知識や技術を抱合しているということには同意します。MMXからは固定小数点信号処理の一部を垣間見ることが出来ますし、FPからはリソースが少ない時代に大規模演算回路を組む工夫を知ることが出来ます。コアの16bit命令セットからはコンパイラが生成するコードに対する配慮がわかります。命令セットではありませんが、保護メカニズム、アドレス変換メカニズムからはOSの働きをうかがうことが出来るでしょう。
でも、iA32の命令セットって、最初からつぎはぎだよね。

/* -----codeの行番号----- */