アプリ版:「スタンプのみでお礼する」機能のリリースについて

はじめまして。情報科学を勉強している大学生です。
お時間ございましたら、回答のほどよろしくお願いします。

現在、Pascal→CASL2のコンパイラの作成という課題に取り組んでいます。
意味解析まで終わって、アセンブラ言語に変換するとこまで来たのですが、先生の言っていた言葉の意味がよくわからず困っています。

「CASL2はCASLと違って、スタックポインタがGR4から独立したから、(コンパイラを作る際に)ちょっとした工夫が必要になる」
といった感じのことを言っていたのですが、具体的になぜ工夫が必要なのかわかりません。
理解している友達にも聞いたんですが、いまいちわかりませんでした。
webでもいろいろ調べたんですが、説明しているサイトが見つからず八方塞の状況です。
そこで、
「具体的になぜ、どのような工夫がいるのか」
を教えていただきたく思います。参考になるページを紹介していただけるだけでも結構です。
それでは、よろしくお願いします。

A 回答 (2件)

> CASLでは、スタックトップ以外も参照・書換えできたのに、CASL2ではスタックトップだけしか


> 参照・書換えできない(SPを書き換えられない)。
> という認識で間違ってないでしょうか?
まー、そういう感じですが厳密に言うとCASL2でもスタックトップにも直接アクセスできません。

> 「スタックポインター及びスタックポインタの中身の参照・書き換えを間接的に行う方法」について
> もう少し詳しく教えていただきたいです。
根本的に必要なのはスタックの状態を変えないでスタックの中身にアクセスする方法です。
これをやるにはダミーでPOPをやってアクセスしPUSHで元に戻すしかないでしょうね。
    • good
    • 0
この回答へのお礼

何度も回答していただきありがとうございます。

おかげで、先生の言おうとしていたことがつかめたような気がします。
本当にありがとうございました。

お礼日時:2009/01/05 21:38

CASL→CASL2の変化というよりはその元になるCOMETという仮想計算機(ハード)の仕様が変わったのです。


本当の所は世の中の計算機の仕様動向に少し近付けたのですが。

一番大きく変わったと思われるのがSP(スタックポインター)です。
従来は汎用レジスターGRの中のGR4をSPとして使っていました。
従って、命令語でスタックポインターを参照・書き換えできました。
またGR4で修飾してスタックの中身の参照・書き換えも出来たのです。
これらはプログラミングテクニック上便利だったのですが
1.仕様として未完成
2.ミスで暴走しやすい
などがあり、改善されたと思われます。

結論として、スタックポインター及びスタックポインタの中身の参照・書き換えを間接的に行う方法を編み出す
と言うのがちょっとした工夫でしょう。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>従来は汎用レジスターGRの中のGR4をSPとして使っていました。
>従って、命令語でスタックポインターを参照・書き換えできました。
>またGR4で修飾してスタックの中身の参照・書き換えも出来たのです。

つまり、CASLでは、スタックトップ以外も参照・書換えできたのに、CASL2ではスタックトップだけしか参照・書換えできない(SPを書き換えられない)。
という認識で間違ってないでしょうか?

それから、「スタックポインター及びスタックポインタの中身の参照・書き換えを間接的に行う方法」についてもう少し詳しく教えていただきたいです。

お時間ございましたら、よろしくお願いします。

お礼日時:2009/01/05 18:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!