みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

CASLとCASL2の違いについて

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

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

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

投稿日時 - 2009-01-05 15:21:01

QNo.4605632

困ってます

質問者が選んだベストアンサー

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

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

投稿日時 - 2009-01-05 20:55:17

お礼

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

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

投稿日時 - 2009-01-05 21:38:59

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

CASL→CASL2の変化というよりはその元になるCOMETという仮想計算機(ハード)の仕様が変わったのです。
本当の所は世の中の計算機の仕様動向に少し近付けたのですが。

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

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

投稿日時 - 2009-01-05 17:21:26

お礼

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

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

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

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

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

投稿日時 - 2009-01-05 18:36:58

あなたにオススメの質問