Цитата
так же не использует условного выполнения, в ARM режиме то же.
Быть того не может. Наглядный пример
CODE
536 if (coef<0)
\ 0000001C A260A0E1 LSR R6,R2,#+1
\ 00000020 000055E3 CMP R5,#+0
\ 00000024 0700005A BPL ??z_and_q_0
537 {
538 unsigned int tmp;
539 tmp = -coef;
540 tmp += __q>>1; /* for rounding */
\ 00000028 005065E2 RSB R5,R5,#+0
\ 0000002C 055086E0 ADD R5,R6,R5
541 #ifdef USE_MUL
542 coef = -(tmp>__q?MUL_U16(tmp, __iq):0);
\ 00000030 050052E1 CMP R2,R5
\ 00000034 94050230 MULCC R2,R4,R5
\ 00000038 2228A031 LSRCC R2,R2,#+16
\ 0000003C 0020A023 MOVCS R2,#+0
\ 00000040 002062E2 RSB R2,R2,#+0
\ 00000044 040000EA B ??z_and_q_1
543 #else
544 coef = -DIVIDE_(tmp, __q);
545 #endif
546 }
547 else
548 {
549 unsigned int tmp;
550 tmp = coef;
551 tmp += __q>>1; /* for rounding */
\ ??z_and_q_0:
\ 00000048 055086E0 ADD R5,R6,R5
552 #ifdef USE_MUL
553 coef = tmp>__q?MUL_U16(tmp,__iq):0;
\ 0000004C 050052E1 CMP R2,R5
\ 00000050 94050230 MULCC R2,R4,R5
\ 00000054 2228A031 LSRCC R2,R2,#+16
\ 00000058 0020A023 MOVCS R2,#+0
\ ??z_and_q_1:
\ 0000005C 54449FE5 LDR R4,??z_and_q_2 ;; z_q + 780
\ 00000060 004094E5 LDR R4,[R4, #+0]
\ 00000064 044052E0 SUBS R4,R2,R4
554 #else
555 coef = DIVIDE_(tmp, __q);
556 #endif
557 }
И переходы есть, и условное выполнение. Все по необходимости.
Цитата
__noreturn полезно при использовании многозадачности
Кстати. Только что глянул в хелп. Есть __noreturn.
Что-то Вы совсем не то делаете.
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин