syscall


システム・コール例外を発生させます。(System Call)

[指定形式]

-

syscall vector

 

vectorに指定できるものを次に示します。

-

8ビット幅までの値を持つ絶対値式

[機能]

OSのシステム・サービス呼び出しを行います。

(1)

復帰PC(syscall命令の次の命令のアドレス)とPSWの内容をEIPCとEIPSWに退避します。

(2)

vectorに対応する例外要因コードを,EIICレジスタに格納します。
例外要因コードは,8000Hにvectorを加算した値です。

(3)

PSWを例外要因にしたがって更新します。

(4)

SCBPレジスタの値と,2ビット論理左シフトしワード長までゼロ拡張したvectorを加算して32ビット・テーブル・エントリ・アドレスを生成します。
ただし,vectorがシステム・レジスタのSCCFG.SIZEビットで指定された値より大きい場合,上記加算に用いるvectorは0として扱います。

(5)

(4)で生成されたアドレスのワードをロードします。

(6)

(5)のデータにSCBPレジスタの値を加算した32ビット・ターゲット・アドレスを生成します。

(7)

(6)で生成されたターゲット・アドレスへ分岐します。

[詳細説明]

-

アセンブラでは,機械語命令のsyscall命令が1つ生成されます。

[フラグ]

CY

OV

S

Z

SAT

[注意事項]

-

vectorに0〜255の範囲を越える絶対値式を指定した場合,次のメッセージを出力し,指定した値の下位8ビットを用いてアセンブルを続行します。

W0550011 : イミーディエトの値が指定可能な値の範囲を越えています。

機械語命令のsyscall命令は,オペランドに0〜255(0x0〜0xFF)範囲のイミーディエトをとります。

 

-

OSのシステム・サービス呼び出しに使用する専用命令です。ユーザ・プログラム中での使用は,各OSの機能仕様にしたがってください。

-

syscall命令のテーブル読み出しのためのメモリからの読み出し操作では,スーパバイザ特権でのメモリ保護が行われます。