- ベストアンサー
CASLとCASL2の違いについて
- CASLとCASL2の違いについて説明します。
- CASL2ではスタックポインタがGR4から独立しているため、コンパイラを作る際に工夫が必要になります。
- 具体的になぜ工夫が必要なのか、そしてどのような工夫が必要なのかを教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> CASLでは、スタックトップ以外も参照・書換えできたのに、CASL2ではスタックトップだけしか > 参照・書換えできない(SPを書き換えられない)。 > という認識で間違ってないでしょうか? まー、そういう感じですが厳密に言うとCASL2でもスタックトップにも直接アクセスできません。 > 「スタックポインター及びスタックポインタの中身の参照・書き換えを間接的に行う方法」について > もう少し詳しく教えていただきたいです。 根本的に必要なのはスタックの状態を変えないでスタックの中身にアクセスする方法です。 これをやるにはダミーでPOPをやってアクセスしPUSHで元に戻すしかないでしょうね。
その他の回答 (1)
- ymmasayan
- ベストアンサー率30% (2593/8599)
CASL→CASL2の変化というよりはその元になるCOMETという仮想計算機(ハード)の仕様が変わったのです。 本当の所は世の中の計算機の仕様動向に少し近付けたのですが。 一番大きく変わったと思われるのがSP(スタックポインター)です。 従来は汎用レジスターGRの中のGR4をSPとして使っていました。 従って、命令語でスタックポインターを参照・書き換えできました。 またGR4で修飾してスタックの中身の参照・書き換えも出来たのです。 これらはプログラミングテクニック上便利だったのですが 1.仕様として未完成 2.ミスで暴走しやすい などがあり、改善されたと思われます。 結論として、スタックポインター及びスタックポインタの中身の参照・書き換えを間接的に行う方法を編み出す と言うのがちょっとした工夫でしょう。
お礼
回答ありがとうございます。 >従来は汎用レジスターGRの中のGR4をSPとして使っていました。 >従って、命令語でスタックポインターを参照・書き換えできました。 >またGR4で修飾してスタックの中身の参照・書き換えも出来たのです。 つまり、CASLでは、スタックトップ以外も参照・書換えできたのに、CASL2ではスタックトップだけしか参照・書換えできない(SPを書き換えられない)。 という認識で間違ってないでしょうか? それから、「スタックポインター及びスタックポインタの中身の参照・書き換えを間接的に行う方法」についてもう少し詳しく教えていただきたいです。 お時間ございましたら、よろしくお願いします。
お礼
何度も回答していただきありがとうございます。 おかげで、先生の言おうとしていたことがつかめたような気がします。 本当にありがとうございました。