こんにちは、廣田です。 最近SH2のプログラムを書いていて、ふと思ったことが。 SHのPRってなんの目的で設置されているのだろうか?と。 pr=プロシージャレジスタは jsr @rm nop を実行したら、戻り先アドレスを記憶するレジスタですが、この有効性が 解らないのです。 jsrを実行した後、戻り先をスタックに積むより処理が速くなると言っても 飛び先のサブルーチンがさらにjsrをネスティングするためには結局、PRを どこかに保存しなければなりません。 mov.l #procidure,r0 jsr @r0 nop : : procidure: sts pr,@-sp : jsr -- : lds @sp+,pr : rts おそらく、Cコンパイラも、ある関数を汎用的に作ろうとするなら、結局prを スタック上に積んだり、戻したりする処理をつけるでしょう。 そしたら結局余計なprをプッシュ、ポップする手数が掛かり、全体のパフォーマンスが 低下するのでは? と思ってしまいます。 なんで、jsr命令は初めから戻り先をスタックに積むような(H8のような)処理系にしなかっ たのだろうかと思う次第です。 どなたか、理由を教えてください。 -- // Name "Hirota Masataka" // Address mhirota@xxxxxxxxxxxxx // Using M2, Opera's revolutionary e-mail client: http://www.opera.com/m2/