Up Top

Method に関する処理 : calling convention (呼び出し規約) : sparc の場合


概要(Summary)

System V の psABI とほぼ同様.

Convention Description
caller/callee register System V psABI の通り (このため save/restore 命令で対応可能).
引数 呼び出し先がインタープリタ実行される場合は, スタック上に積んで渡す (See: ...). JIT コンパイルされている場合は, レジスタで渡す (See: ...).
リターンアドレス System V psABI の通り, O7/I7 を使用.
返値 System V psABI の通り, O0/I0, F0 を使用 (ただし 32bit 環境で long 値を返すケースについては, O1/I1 も使用)
SP のずれへの対応 callee 側のエントリ処理や i2c/c2i stub により SP が勝手にずらされてしまった場合については, 全て interpreter 側で対処している(※)

(※) (interpreter 側の呼び出し時には return 後にずれを補正し, 逆に interpreter が呼び出された時には, return 時に普通の restore ではなくずれを考慮した restore を行う. これにより, compiled code 側ではシンプルに save/restore するだけで対処できている模様) (以下の O5_savedSP 及び Llast_SP 参照)

備考(Notes)

    ((cite: hotspot/src/cpu/sparc/vm/sparc.ad))
    // R_G2: reserved by HotSpot to the TLS register (invariant within Java)
    ((cite: hotspot/src/cpu/sparc/vm/sparc.ad))
    // R_O7: Used as a temp in many encodings

This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.