第二部 トロン仕様チップ命令詳細第一章 命令フォーマット
命令フォーマットと表記法

 アセンブラソースプログラムに類似したフォーマットでアセンブラのフォーマット別ニモニック、オプション、使用可能なアドレッシングモード、サイズ、及びビットパターンを説明します。
 一般形命令フォーマット第5章で説明しています。大部分の2オペランド命令は、命令コードが2つの部分に別れています。最初の半分は第1ハーフワード内に第1オペランドフィールド(例 : src, sx)を伴って存在し、残りの半分は第2ハーフワード内に第2オペランドフィールド(例 : dest, sy)を伴って存在します。
オペランドアドレスでは下記のアドレッシングモードを指定できます。
レジスタ直接
レジスタ間接
レジスタ相対間接 
即値
絶対
PC相対間接
スタックポップ
スタックプッシュ
レジスタベース多段間接
PCベース多段間接
絶対多段間接
 アドレッシングモード第4章で説明しています。
 オペランドアドレスは固定ビットフィールドで指定し、通常はオペランドのアクセスサイズを指定する2ビットフィールドが先行します。その後に、モードを一般形アドレッシングまたは短縮形アドレッシングまたはレジスタ番号として指定し、アクセスの種類をリード、ライト、リードモディファイライト、実効アドレスの生成、またはビットフィールドとして指定する、アドレッシングモード指定子が続きます。
 フォーマットの説明では、イタリック体(たとえばsrc.sx、dest.sy)はオペランドアドレスビットフィールドの内容またはオペランドサイズフィールドの内容を示します。イタリック体を用いないオペランド表記(たとえばsrcまたはdest)はビットフィールドに示されたアドレッシングモードによって指定されるオペランドの値を示します。



パラメータの意味:
MOV:G フォーマット別ニモニック。これは総称ニモニック(MOV)とフォーマット指定子(G-フォーマット)で構成されます。
src.sx [Gen/r] ビットパターンsrcフィールドで示される第1(ソース)オペランドアドレスが[Gen/r]で示されるアドレッシングモードで指定されます。src の位置のオペランドアクセスサイズはsxで指定されます。
dest.sy [Gen/w] ビットパターンdestフィールドで示される第2(デスティネーション)オペランドアドレスが[Gen/w]で示されるアドレッシングモードに指定されます。destの位置のオペランドアクセスサイズはsyで指定されます。
Gen アドレッシングモード。オペランドアドレスフィールドの一般形(8ビット)アドレッシングを指定します。
/r アクセスモード。ソースオペランドのリードアクセスを指定します。@-SPアドレッシングモード(スタックプッシュ)は暗に禁止されます。
/w アクセスモード。デスティネーションオペランドのライトアクセスを指定します。@SP+(スタックポップ)と#exp(即値)アドレッシングモードは暗に禁止されます。



POP データ転送命令スタックポップの総称ニモニック。
dest.s [Gen-S/w] ビットパターンdestフィールドで示される第1(デスティネーション)オペランドアドレスが[Gen-S/w]で示されるアドレッシングモードに示されます。destの位置のオペランドアクセスサイズはsで指定されます。
Gen アドレッシングモード。オペランドアドレスフィールドの一般形(8ビット)アドレッシングを指定します。
-S destアドレスの@-SP(スタックプッシュ)と@SP+(スタックポップ)アドレッシングモードを禁止します。
/w アクセスモード。デスティネーションオペランドのライトアクセスを指定します。@SP+(スタックポップ)と#exp(即値)アドレッシングモードは暗に禁止されます。


SMOV ストリング転送命令の総称ニモニック。
/eeee 命令オプションSMOV命令の割出し条件を指定します。
/b 命令オプションSMOV命令の処理方向を指定します。
.sx ストリングの転送に使用する要素サイズを指定します。

パラメータ詳細説明

(1) オペランドのサイズ

 オペランドアドレスでアクセスするオペランドのサイズはビットパターン内のフィールド(.sまたは.sx, .sy, .sz)として命令そのものに指定できます。
 サイズフィールドはオペランドのサイズを下記のように定義します。

 sフィールド

s = 0  32ビットオペランド
s = 1 64ビットオペランド(32ビット仕様では実現されていません)


 sx, sy, szフィールド

sx, sy, sz = 00  8ビットオペランド
sx, sy, sz = 01 16ビットオペランド
sx, sy, sz = 10 32ビットオペランド
sx, sy, sz = 11 64ビットオペランド(32ビット仕様では実現されていません)


 固定サイズフィールド

 固定サイズフィールドは大文字のB,HまたはWを用いて下記のように定義します。イタリック体は用いません。
.B 8ビット固定サイズオペランド
.H 16ビット固定サイズオペランド
.W 32ビット固定サイズオペランド

 即値またはリテラルオペランドの場合、以下の(2)で説明するオペランド属性とビット数によって指定します。s, sx, sy, szフィールド及び.B、.H、.Wパラメータは使用しません。

(2) オペランドの属性

 下記の2フォーマットを使用します。

 1. [#(サイズ)/(エンコード方法)]

 このフォーマットはオペランド値にリテラルまたは即値を指定する場合に使用します。この方法では、#(サイズ)により、即値またはリテラル値を示すフィールドのビット数を指定し、さらに(エンコード方法)によりビットフィールドのパターンをエンコードするときに使用する方法を以下のように指定します。

(エンコード方法)
s 符号付き2進数。
u 符号なし2進数。
un 符号なし2進数 ; ビットパターン"00..0"はB'100..0のオペランド値を表します。
cn 補数のリテラル ; ビットパターンは2の補数を表します。
sn 符号付き2進数 ; ビットパターン"00..0"はB'010..0のオペランド値を表します。
sd 符号付き2進数 ; 2倍値として解釈されます。
l レジスタリスト。

3ビットのリテラル(#3)に関する様々なエンコード方法の例を表に示します。

 2. [(アドレッシングモード)/(アクセス方法)]

 リテラルまたは即値以外のすべてのオペランドにはこのフォーマットを使用します。

(基本アドレッシングモード) :
Gen  8ビット一般形アドレッシングモード
Sho 6ビット短縮形アドレッシングモード
Reg レジスタ番号 

(修飾子)
-I  #expモードを禁止します。
-R Rnモードを禁止します。
-S @SP+モードと@-SPモードを禁止します。
-C 多段間接モードを禁止します。
-M すべてのメモリアドレッシングモードを禁止します。

Rn及び#expのみを許可します(暗に-Cと-Sの意味を含みます)。

(アクセス方法):
r  リード
w ライト
m リードモディファイライト
a アドレス生成のみ
f ビットまたはビットフィールドアクセス


(修飾子)

c〜  制御空間のアクセス。
p〜 物理空間のアクセス。
〜u データを符号なしとしてアクセス。
〜i バスインタロックを伴うアクセス。
〜x 複数データに関するアクセス。
"〜u" と"〜x"は"r", "w", "m" の修飾子です。"〜i"は"m"と"f"を修飾します。"c〜"と"p〜"は"(アクセス方法)"の前に付き、"〜u", "〜i", "〜x"は"(アクセス方法)"の後に付きます。
 "〜u"で修飾されたオペランドが異種サイズのときには、演算でオペランドがゼロ拡張されます。他のオペランドについては、異種サイズのオペランドに関する演算で小さい方のオペランドが符号拡張されます。
 アクセス方法を指定すると、アドレッシングの範囲が限定されます。つまり、指定したアクセス方法と共存できないアドレッシングモードはデフォルトで禁止されます。
 アクセス方法の指定により、デフォルトで禁止されるアドレッシングモードが決まります。デフォルトで禁止されるアドレッシングモードには次のものがあります。
r  @-SPを禁止
w @-SP, @SP+, #exp, Rnを禁止
m @-SP, @SP+, #expを禁止
f @-SP, @SP+, #expを禁止
a @-SP, @SP+, #exp, Rnを禁止
 なお、インプリメントの制約によるアドレッシングモードの制限や、命令再実行のためのアドレッシングモードの制限は、デフォルトではなく-Sまたは-C等の修飾子を使用して禁止します。

 例: POP  dest.s [Gen-S/w]

 destオペランドは8ビット一般形アドレッシングモードではライトアクセスとして指定されます。/w属性は@SP+と#expアドレッシングモードを暗に禁止します。さらに、-S修飾子は@-SPアドレッシングモードを禁止します。