GMTSun(今やOracle)のSPARCプロセッサにはLisp向けにタグ命令が実装されている(いた)という話を耳にされたことはないでしょうか。具体的には、TADDCC、TSUBCC系の命令で、タグ付きポインタの演算を支援する機能です(ちなみに残念ながら現在では非推奨の機能らしい)。Benson氏がこの機能についての質問に回答していたメールをみつけました。Lispとして販売されていたりで、LucidとSunはかなり密接な関係でした。時代的にも当時は第二次AIブーム末期で、エキスパートシステムやCAD等、高価なSymbolics等の専用マシン上で稼動していたLispベースのアプリケーションを比較的廉価なワークステーション上でも動したいというニーズも高かった頃です。CLのために命令が導入されたのはよしとして、実際にどんな感じで活用されていたのか確認してみましょう。2引数のfixnumの足し算をコンパイルしてdisassembleしてみます。Overflow)というのがお目当ての命令ですが、探してみてもどうも専らtaddccではなく、tv付きが使われるようです。%u0nilとなり、アリティのチェックが省略されるようです。17fのdisassemble結果を眺めたりしていた所、CMUCLでも活用されているのをみつけてしまいました。0にすると普通のaddになってしまう所。most-positive-fixnum)が-2になってしまっています。0でもtaddcctvはそのままでbignumに切り替えます。CLの方がtaddccを活用しているといえるのか、それとも処理系のポリシーの違いなのか。Lispの処理系のためにCPUに命令が追加されたと思うとSPARCが素晴らしいCPUに見えてきました。