1

現在、命令空間または ARMv7 プロセッサの再分割を研究しようとしています。ドキュメントはこちらにあります。現在、私を困惑させている詳細があります。これは、プロセッサがいくつかの命令のペア間で曖昧さを解消する方法です。

たとえば、次の 2 つの THUMB 命令を考えてみましょう。

  • A8.8.18 B : エンコーディング T3

    +-+-+-+-+-+-+-------+-----------+-+-+--+-+--+---------------------+
    |1|1|1|1|0|S| cond  |   imm6    |1|0|J1|0|J2|        imm11        |
    +-+-+-+-+-+-+-------+-----------+-+-+--+-+--+---------------------+
    
  • A8.8.32 CLREX : T1 のエンコード

    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+-+--+-+-+-+-+-+-+-+-+-+-+-+
    |1|1|1|1|0|0|1|1|1|0|1|1|1|1|1|1|1|0|0 |0|1 |1|1|1|0|0|1|0|1|1|1|1|
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+-+--+-+-+-+-+-+-+-+-+-+-+-+
    

注意すべき 2 つの点は、両方の命令のすべての固定ビットが等しいことと、2 番目の命令の cond = 1110 が有効な条件コード (AL) であることです。命令セマンティクスによれば、S は符号ビットであり、J2:J1:imm6:imm11 は相対ジャンプ ターゲットであるため、任意の値を持つことができます。

このデコードはあいまいに見えますが、間違いなく間違っているに違いありません。ここで何が欠けていますか? これについての光は大歓迎です。

4

1 に答える 1

1

B命令のT3エンコーディングの下には、次のような擬似コードがあります。

if cond<3:1> == '111' then SEE "Related encodings";

そして、実際に(AL)CLREXの「cond」フィールドがあることがわかります。1110

無条件分岐の場合はエンコードが短くなるため、これは理にかなっています。そのため、「常に分岐/分岐しない」ビットパターンを他の命令に再利用できます。A6.3.4 Branches and miscellaneous control完全なリストについては、表を参照してください。

于 2013-11-04T17:14:10.477 に答える