Цитата(Сергей Борщ @ Mar 6 2008, 15:38)

А теперь включите оптимизацию и убедитесь, что цикл исчез вообще

А я и не спорю что исчезнет. Просто в примере от aaarrr я тоже не вижу volatile.
Цитата(evgene @ Mar 5 2008, 12:28)

__ramfunc void Benchmark()
{
volatile unsigned int i ;
for ( i = 0 ;(i < 480000 );i++ ) ;
}
Не претендую на истину, но правильнее наверно будет так:
__ramfunc __arm void Benchmark(){
const int c=480000;
volatile unsigned int i ;
for ( i = 0 ;(i < c );i++ );
}
Соответственно листинг:
\ Benchmark:
\ 00000000 04D04DE2 SUB SP,SP,#+4
242 const int c=480000;
\ 00000004 701AA0E3 MOV R1,#+458752
\ 00000008 531C81E3 ORR R1,R1,#0x5300
\ 0000000C 0100A0E1 MOV R0,R1
243 volatile unsigned int i ;
244 for ( i = 0 ;(i < c );i++ );
\ 00000010 0020A0E3 MOV R2,#+0
\ 00000014 00208DE5 STR R2,[SP, #+0]
\ ??Benchmark_0:
\ 00000018 00109DE5 LDR R1,[SP, #+0]
\ 0000001C 000051E1 CMP R1,R0
\ 00000020 0300002A BCS ??Benchmark_1
\ 00000024 00209DE5 LDR R2,[SP, #+0]
\ 00000028 012092E2 ADDS R2,R2,#+1
\ 0000002C 00208DE5 STR R2,[SP, #+0]
\ 00000030 F8FFFFEA B ??Benchmark_0
245 }
\ ??Benchmark_1:
\ 00000034 04D08DE2 ADD SP,SP,#+4 ;; stack cleaning
\ 00000038 1EFF2FE1 BX LR ;; return