【发布时间】:2013-11-04 16:49:35
【问题描述】:
目前我尝试研究指令空间或 ARMv7 处理器的重新分区,参见。找到here 的文档。目前有一个细节让我感到困惑,那就是处理器如何消除一些指令对之间的歧义。
让我们以下面两个 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| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+-+--+-+-+-+-+-+-+-+-+-+-+-+
需要注意的两件事是,两条指令的所有固定位都相等,其次,第二条指令的 cond = 1110,这是一个有效的条件代码 (AL)。根据指令语义,S为符号位,J2:J1:imm6:imm11为相对跳转目标,可以取任意值。
这个解码看起来模棱两可,但我肯定是错的。我在这里想念什么?对此的任何启示将不胜感激。
【问题讨论】:
标签: assembly arm processor armv7 thumb