[H8-ML(4416)] 【オフトピック】SHのPRって?
From: 廣田 正孝 <mhirota@xxxxxxxxxxxxx>
Date: 2004年02月06日(金)21時05分48秒
こんにちは、廣田です。
最近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/
スレッド概略
[表示中](起点)
 ├[4417(1)]
 ├[4421(2)]
 └[4423(3)]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]