Скомпилировал ради интереса этот пример.
Код
//#pragma optimize=size
...
MOVS R0,#+0
MOVS R1,#+128
LSLS R1,R1,#+10 ;; #+131072
LDR R5,??task_0 ;; _ZN3GSM5stateE
LDR R2,??task_0+0x4 ;; 0xfffff430
CMP R6,#+0
B ??task_1
// 272 INT32S i,n,respLen;
// 273
// 274 uint32_t *pOut = (uint32_t*) AT91C_PIOA_ODSR;
// 275 uint16_t *pcSource = (uint16_t*)0;
// 276 while( i)
// 277 {
// 278 *pOut = *(pcSource++);
??task_2:
LDRH R3,[R0, #+0]
STR R3,[R2, #+8]
ADDS R0,R0,#+2
// 279 *AT91C_PIOA_SODR=131072;
STR R1,[R2, #+0]
// 280 i --;
SUBS R6,R6,#+1
// 281 *AT91C_PIOA_CODR=131072;
STR R1,[R2, #+4]
// 282 }
??task_1:
BNE ??task_2
IAR EWARM 5.11.