2.6.4.1 命令を編集する

命令を編集する場合は,次の手順で操作を行ってください。

(1)

編集モードへの切り替え

対象命令をダブルクリックするか,または対象命令にキャレットを移動した状態でコンテキスト・メニューの[命令の編集]を選択すると,編集対象が編集モードに切り替わります。

(2)

命令の編集

キーボードから直接命令の文字列を編集します。

(3)

メモリへの書き込み

編集終了後,[Enter]キーを押下することにより,変更された命令が自動的にライン・アセンブルされ,コードがメモリに書き込まれます。

ただし,この際に,変更結果が不正な命令となる場合は,編集された文字列が赤色で表示され,メモリへの書き込みは行いません。

 

なお,表示されている逆アセンブル結果を別の命令で上書きすることによりメモリに空きが生じた場合,次の例のように自動的にnop命令でバイト数を補います。

例 1.

3行目のprepare命令(8バイト命令)をjarl命令(4バイト命令)で上書きした場合

編集前

0432                mov     0x4, r6
1d38                mov     r29, r7
8f071b0effff0000    prepare r20, r21, r22, 0x1c, 0x0000ffff
0132                mov     0x1, r6

編集後

0432                mov     0x4, r6
1d38                mov     r29, r7
bfffe265            jarl    0x100, lp
0000                nop
0000                nop
0132                mov     0x1, r6

例 2.

2行目のmov命令(2バイト命令)をjarl命令(4バイト命令)で上書きした場合

編集前

0432                mov     0x4, r6
1d38                mov     r29, r7
8f071b0effff0000    prepare r20, r21, r22, 0x1c, 0x0000ffff
0132                mov     0x1, r6

編集後

0432                mov     0x4, r6
bfffe265            jarl    0x100, lp
0000                nop
0000                nop
0000                nop
0132                mov     0x1, r6

注意

prepare命令/dispose命令の扱いについて
prepare命令/dispose命令の命令形式は,次のとおりで,オペランドの“list12”には,12ビットの値が入り,各ビットごとに対応するレジスタが割り当てられます。

prepare命令の命令形式

prepare     list12, imm5
prepare     list12, imm5, sp/imm

dispose命令の命令形式

dispose     imm5, list12
dispose     imm5, list12, [reg1]

 

逆アセンブル パネルでは,prepare命令/dispose命令の逆アセンブル結果を表示する場合,オペランドの“list12”は値ではなく,次の例のように対応するレジスタ名を表示します。

例 1.

命令コードが“0x91, 0x07, 0xe1, 0xff ”(prepareの4バイト命令)の場合

表示

prepare    r20, r21, r22, r23, r24, r25, r26, r27,r28, r29, r30, r31, 0x20

正表記

prepare    0xfff, 0x20

例 2.

命令コードが“0x90, 0x07, 0xbb, 0xaa 0xff, 0xff, 0xff, 0xff ”(prepareの8バイト命令)の場合

表示

prepare    r20, r22, r24, r26, r28, r31, 0x20, 0x7fffffff

正表記

prepare    0x555, 0x20, 0x7fffffff

例 3.

命令コードが“0x51, 0x06, 0xe0, 0xff ”(disposeの4バイト命令)の場合

表示

dispose    0x20, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31

正表記

dispose    0x20, 0xfff

例 4.

命令コードが“0x50, 0x06, 0xaa, 0xaa ”(disposeの4バイト命令)の場合

表示

dispose    0x20, r20, r22, r24, r26, r28, r31, [r10]

正表記

dispose    0x20, 0x555, [r10]

 

ただし,prepare命令/dispose命令をライン・アセンブルする場合は,オペランドの“list12”には,値/レジスタ名の両方の指定が可能です。

例 1.

(1)と(2)の指定は,ライン・アセンブルの結果,同じ値の“0x91, 0x07, 0xe1, 0xff”となります。

(1)

prepare    r20, r21, r22, r23, r24, r25, r26, r27,r28, r29, r30, r31, 0x20

(2)

prepare    0xfff, 0x20

例 2.

(1)と(2)の指定は,ライン・アセンブルの結果,同じ値の“0xbe, 0x07, 0xbb, 0xaa 0xff, 0xff, 0xff, 0x7f ”となります。

(1)

prepare    r20, r22, r24, r26, r28, r31, 0x20, 0x7fffffff

(2)

prepare    0x555, 0x20, 0x7fffffff

例 3.

(1)と(2)の指定は,ライン・アセンブルの結果,同じ値の“0x51, 0x06, 0xe0, 0xff ”となります。

(1)

dispose    0x20, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31

(2)

dispose    0x20, 0xfff

例 4.

(1)と(2)の指定は,ライン・アセンブルの結果,同じ値の“0x50, 0x06, 0xaa, 0xaa ”となります。

(1)

dispose    0x20, r20, r22, r24, r26, r28, [r10]

(2)

dispose    0x20, 0x555, [r10]