Ikuo Nakata
nakat****@kamak*****
2010年 8月 27日 (金) 13:22:43 JST
神戸さま COINSの中田です.すみませんファイルを添付するのを忘れていました. 私には現在のCOINSのmips.tmdの内容は分かりませんし, mipsの実行環境もないので,正確に変更したり試したりすることは 出来ないのですが,神戸さんの望むようなコードが生成できないか やって見ました. パタヘネ本(第3版)のSPIMの手続き呼び出し規約の解説 (A.6)では 神戸さんのおっしゃる addu $fp,$sp,framesize とは少し違って addu $fp,$sp,framesize-4 のように私には見えるのですが,addu $fp,$sp,framesizeの 形にして見ました. その結果,神戸さんの例題については,次のコードが生成されました. _recersive: subu $sp,80 sw $31,72($sp) sw $fp,68($sp) sw $28,64($sp) sw $16,60($sp) add $fp,$sp,80 ;;adduにはなっていませんが sw $4,24($sp) ;;第1引数をフレーム変数とする lw $2,16($fp) ;;第5引数をロード そのファイルと,変更したmips.tmdをzipしたものを添 付しました. mips.tmdの変更部分には「 ///////////2010.8」がつけて あります. ただし,もとのコーディングの意味を理解できずに修正していると ころもあります. 以上,ご参考まで. On 2010/08/25, at 1:47, KANDO Takayuki wrote: > COINS関係者の皆様 > 神戸です。 > > いつもお世話になっております。 > > COINSのMips向けバックエンドでSPIMコンベンション > のコードを出力すると > 例えば下記のようなPrologueコードが出ます: > > #...from here > subu $sp,88 > sw $31,80($sp) > sw $fp,76($sp) > sw $28,72($sp) > sw $16,68($sp) > sw $17,64($sp) > move $fp,$sp > #...to here > > (サンプルコードとコマンドラインをZIPして添付しました。 > COINSの版は1.4.4.4です。) > > ここで疑問なのですがこれだとせっかくフレーム・ポインタ > $fpとしてレジスタ > ($30)を一個割いているにも関わらず、関数のボディ部では > fp==spになってし > まっています。これはあまりよろしくない状況なのではないで > しょうか? > > 実際、パタヘネ本の下巻のSPIMの手続き呼び出し規約の解説(A. > 6節)では単な > るコピーである現状の: > > move $fp,$sp > > ではなく: > > addu $fp,$sp,framesize > > (ここでフレームサイズは定数、上記の例なら恐らく88) > > とするように解説されています。 > > 実は私、現在、Cの標準ライブラリのstdargs.hを実 > 装しているのですが > ライブラリコードからフレームサイズやフレームの開始点を知る方法が > ないので大変困っています。 > この無駄$fpが真のfp(フレーム・ポインタ)になっ > てくれると大変助かるので > すが、そうなりませんものでしょうか? > > (ただ添付のサンプルコードでは短すぎて再現していませんが、 > sp==fpの現状で関数内のスタック・フレームにアクセスするコードにfp > を使うも > のとspを使うものが混在しているように見えるところが気 > になりますが…。) > > ご検討、よろしくお願いします。 > > 参考文献 > <パタ&ヘネ本>: > コンピュータの構成と設計 > -ハードウエアとソフトウエアのインタフェース 第3版 > (下) > デイビッド・A. パターソン and ジョン・L. > ヘネシー 著 > 成田 光彰 訳 > 日経BP社(2006/3/16)刊 > ISBN-13: 978-4822282677 > http://amzn.to/aeSquS > (手元にあるのは初版なので、3版で記述が変わっていたら > 申し訳ありません。) > > -- > KANDO Takayuki (kando****@isit*****) > Quoliarc Technology Solutions Ltd. > -- > Institute of Systems & Information Technologies/KYUSHU > Fukuoka SRP Center Building 7F, c/o ISIT > 2-1-22 Momochihama, Sawara-ku, Fukuoka, 814-0001, Japan > TEL:092-852-3460(extension:7228)/092-852-3461(direct) > FAX:092-852-3465 > < > COINS_Mips_SPIM_Prologue > .zip>_______________________________________________ > Coins-compiler-users-j mailing list > Coins****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/coins-compiler-users-j 中田 育男 nakat****@kamak***** _______________________________________________ Coins-compiler-users-j mailing list Coins****@lists***** http://lists.sourceforge.jp/mailman/listinfo/coins-compiler-users-j -------------- next part -------------- HTMLの添付ファイルを保管しました...Download -------------- next part -------------- テキスト形式以外の添付ファイルを保管しました... ファイル名: mipsCOINS.zip 型: application/zip サイズ: 15363 バイト 説明: 無し URL: http://lists.sourceforge.jp/mailman/archives/coins-compiler-users-j/attachments/20100827/753f12e8/attachment-0001.zip -------------- next part -------------- HTMLの添付ファイルを保管しました... URL: http://lists.sourceforge.jp/mailman/archives/coins-compiler-users-j/attachments/20100827/753f12e8/attachment-0003.htm