|
Возьмем 16-битный процессор и 65536 циклов. Имеем право? Имеем. Смысл тот-же. И скомпилим это с включенной оптимизацией на скорость для какого-нить TMS'а (например 55xx).
#include "stdio.h"
long int main(){
unsigned long int counter = 0;
unsigned short int i = 65536;
do {
counter++;
} while( --i != 0 );return counter;
что видим в ассемблере:
;*******************************************************************************
;* FUNCTION NAME: _main *
;* *
;* Function Uses Regs : AC0,AC0,SP,M40,SATA,SATD,RDM,FRCT,SMUL *
;* Stack Frame : Compact (No Frame Pointer, w/ debug) *
;* Total Frame Size : 1 word *
;* (1 return address/alignment) *
;*******************************************************************************;*******************************************************************************
;* *
;* Using -g (debug) with optimization (-o2) may disable key optimizations! *
;* *
;*******************************************************************************
_main:
.line 1
MOV #0, AC0
.line 9
RET
; return occurs
.endfunc 11,000000000h,0
Ага! И мимо. Цикл соптимизировало до его отсутствия, а выходной результат ошибочен.
E-mail: info@telesys.ru