[Coins-compiler-users-j] -b mips-spim 下の$fpの扱いについて

Zurück zum Archiv-Index

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 



Coins-compiler-users-j メーリングリストの案内
Zurück zum Archiv-Index