From: John R. <jr...@bi...> - 2018-04-04 15:26:27
|
> When the machine code is 0x4503, the op is cmp, but this is the T2 format , N bit(7-bit) is 0 , so the thumb instrunction cmp-hi is unhandled. And the decode action is failure . > > The 0x4503 machine code is generate by clang4.0\5.0\6.0, the machine cpu can run this machine. <<snip>> No, the hardware documentation says that the result is UNPREDICATBLE. > */T2 variant/* > > CMP{<c>}{<q>} <Rn>, <Rm> // <Rn> and <Rm> not both from R0-R7 > > */Decode for this encoding/* > > n = UInt(N:Rn); m = UInt(Rm); > > (shift_t, shift_n) = (SRType_LSL, 0); > > if n < 8 && m < 8 then UNPREDICTABLE; When the instruction is 0x4503, then N:Rn (bits 7,2,1,0) is 3, and Rm(bits 6,5,4,3) is 0. Both effective register numbers are less than 8, so this is an UNPREDICTABLE case. The compiler/assembler made a mistake. |