計算手順はアセンブラ

Desigeonの計算手順に関する、非常にどうでもいい話について。

あんな細かいプログラミング機構を使う人がどれだけいるんだろう、と思い付けてみた機能ですが、皆さんたくさんお使いのようで、今では無いと困る機能になっているみたいです。

実装当初は本当に迷いました。理由は元ネタがマニアックだからです。今でもチェックボックスを入れないと編集できないようになっています。能力値はもっと固定仕様的に運用するつもりでした。加算能力値と乗算能力値だけを指示できるようにして(v1.17より前の仕様)。

現状、気軽に使っている人が多いようですが、計算手順そのものはCPUのアセンブリ言語(マシン語)をベースに作られている低水準仕様というかオタク仕様になっています。

マシン語というやつは、ああいう単純な命令の羅列で動いていて、C言語とかをコンパイルするという行為は、実際にああいう命令に置き換えて保存することを指します。

mov eax, 100 // eaxに100を代入します

add eax, ebx // eaxにebxを足します

Desigeonだと「計算結果」「一時記憶の値」という形で十個程度の変数を扱えますが、インテルのCPUも同様です。32ビットCPUのi386仕様では名前がeax,ebx,ecx,edxという具合に、要はABCDの4個まで変数を使えることになっています。

命令名(ニーモニック)については、インテル系だと代入、加算、減算、乗算、除算がそれぞれMOV,ADD,SUB,MUL,DIVとなっていて、書式もDesigeonの計算手順と同じで、Desigeonではそれを日本語の言葉に置き換えているだけです。ANDやXOR等も同じです。

CPUのこれらの仕様は、MMXや64ビット化のような大きなバージョンアップでもしない限り、簡単には拡張されません。ソフトの仕様に「MMXが必要」と書かれている場合は、CPUの拡張仕様が使われています。

Desigeonの利用者は部分的にアセンブラを書いているようなものだと思います。

余談

Posted by kumashige