Вот вам кааанкретный пример. (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено 01 декабря 2003 г. 14:05
В ответ на: 2SM: Про цикл 256 -- Вы назвали "дыркой" компилятора тот простой факт (+) отправлено bialix 01 декабря 2003 г. 10:32

Возьмем 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