| EXITD ジャンプ命令 <<L1R>>,<<L1>>,<<L2>> |
【ニモニックとオペランド】
EXITD reglist, adjsp
【機能】
Exit and deallocate stack frame
手続き終了とスタックフレームの解放
【オプション】
なし
【命令フォーマットと表記法】
【解説】
高級言語用スタックフレームを解放し、レジスタを復帰して、サブルーチンから復帰します。その後、adjspをSPに加えて、スタックに残っているパラメータを捨てます。
EXITD命令は以下のように動作します。
- (1) reglistで指定されたレジスタをスタックからポップ
(2) SP ← FP
(3) FPをスタックからポップ
(4) 復帰PCをスタックからポップして、そのアドレスでプログラムの
実行を続ける。
(5) SP ← SP + adjspadjspは符号付き整数として処理されます。adjspが小さいときには、adjspの値を符号拡張します。adjspが負のときには、無意味な動作が行われます。
復帰するレジスタは以下のビットマップに従ってreglistで指定します。
reglistのビット14と15(SPとFP)は常に0でなければなりません。
命令実行前と実行後のスタックの変化は以下の通りです。
【フラグ変化】
【発生EIT】
RIE adjsp [Gen-M/r]のアドレッシングモード違反 RIE s = 1, sy = 11 OAJE/OAJT 復帰アドレスが奇数
【使用例】
汎用レジスタR0〜R3の内容がスタックから復帰し、スタックフレームが解放され、プログラムがサブルーチンから復帰します。さらに、H'10がSPに加算され、スタックに残っているパラメータが捨てられます。