命令を編集する場合は,次の手順で操作を行ってください。
対象命令をダブルクリックするか,または対象命令にキャレットを移動した状態でコンテキスト・メニューの[命令の編集]を選択すると,編集対象が編集モードに切り替わります。
キーボードから直接命令の文字列を編集します。
編集終了後,[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]
|