第二部 トロン仕様チップ命令詳細第十三章 ジャンプ命令
EXITD
ジャンプ命令 <<L1R>>,<<L1>>,<<L2>>

【ニモニックとオペランド】

EXITD reglist, adjsp

【機能】

Exit and deallocate stack frame
手続き終了とスタックフレームの解放

【オプション】

なし

【命令フォーマットと表記法】

【解説】 

 高級言語用スタックフレームを解放し、レジスタを復帰して、サブルーチンから復帰します。その後、adjspをSPに加えて、スタックに残っているパラメータを捨てます。
 EXITD命令は以下のように動作します。

 (1) reglistで指定されたレジスタをスタックからポップ
 (2) SPFP
 (3) FPをスタックからポップ
 (4) 復帰PCをスタックからポップして、そのアドレスでプログラムの
    実行を続ける。
 (5) SPSP + adjsp

 adjspは符号付き整数として処理されます。adjspが小さいときには、adjspの値を符号拡張します。adjspが負のときには、無意味な動作が行われます。
 復帰するレジスタは以下のビットマップに従ってreglistで指定します。



 reglistのビット14と15(SPFP)は常に0でなければなりません。
 命令実行前と実行後のスタックの変化は以下の通りです。



 高級言語用スタックフレームの作成に関する詳細についてはENTER命令を参照して下さい。

【フラグ変化】

【発生EIT】

RIE adjsp [Gen-M/r]のアドレッシングモード違反
RIE s = 1, sy = 11
OAJE/OAJT 復帰アドレスが奇数

【使用例】

 汎用レジスタR0〜R3の内容がスタックから復帰し、スタックフレームが解放され、プログラムがサブルーチンから復帰します。さらに、H'10がSPに加算され、スタックに残っているパラメータが捨てられます。