Цитата(zltigo @ Dec 27 2008, 17:25)

Широкие, полагаю,

это 32 битовые а не 16 бит инструкции.
Ага, с этим разобрался, тут всё оказалось просто.
Теперь непонятки с инструкцией IT:
Код
92: i = testA(tz+z);
0x00000108 F8DC3000 LDR r3,[r12,#0x00]
0x0000010C 4403 ADD r3,r3,r0
51: if (za>= 500)
52: {
53: z = z /13;
54: return(-10);
55: }
0x0000010E F5B37FFA CMP r3,#0x1F4
56: else return(za+10);
0x00000112 BFB8 IT LT
0x00000114 330A ADDLT r3,r3,#0x0A
0x00000116 DB07 BLT 0x00000128
53: z = z /13;
0x00000118 F8DC3000 LDR r3,[r12,#0x00]
0x0000011C FB93F3F4 SDIV r3,r3,r4
0x00000120 F8CC3000 STR r3,[r12,#0x00]
54: return(-10);
0x00000124 F06F0309 MVN r3,#0x09
92: i = testA(tz+z);
0x00000128 F8CC3004 STR r3,[r12,#0x04]
93: if (i) z = 1;
0x0000012C F8DC3004 LDR r3,[r12,#0x04]
0x00000130 2B00 CMP r3,#0x00
94: else z = 0;
0x00000132 BF0C ITE EQ
0x00000134 F8CC6000 STREQ r6,[r12,#0x00]
0x00000138 F8CC5000 STRNE r5,[r12,#0x00]
В коде в двух местах используются блоки IT. Зачем? Ведь все инструкции ARM имеют условное выполнение? Что мешает убрать инструкцию IT, разве от этого что-либо изменится в коде?
Или в ядре ARMv7 не все инструкции могут выполняться условно?