Citat:
McKracken:
Npr, kako ce moderni kompajleri "pretvoriti" ovo u opcode?
Ne znam koja je poanta toga? Al nije vazno, evo rezultata na par razlicitih kompajlera:
Borland C++ Builder 6
kod:
Code:
for (int a=1;a<100;a++){
int b=a;
}
rez:
Code:
00401181 |. C745 FC 010000>MOV DWORD PTR SS:[EBP-4],1
00401188 |> 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0040118B |. 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0040118E |. FF45 FC INC DWORD PTR SS:[EBP-4]
00401191 |. 837D FC 64 CMP DWORD PTR SS:[EBP-4],64
00401195 |.^7C F1 JL SHORT Project2.00401188
GCC
kod:
Code:
for (int a=1;a<100;a++){
int b=a;
}
rez:
Code:
004013E1 |. C745 FC 010000>MOV DWORD PTR SS:[EBP-4],1
004013E8 |> 837D FC 63 /CMP DWORD PTR SS:[EBP-4],63
004013EC |. 7F 0D |JG SHORT Project1.004013FB
004013EE |. 8B45 FC |MOV EAX,DWORD PTR SS:[EBP-4]
004013F1 |. 8945 F8 |MOV DWORD PTR SS:[EBP-8],EAX
004013F4 |. 8D45 FC |LEA EAX,DWORD PTR SS:[EBP-4]
004013F7 |. FF00 |INC DWORD PTR DS:[EAX]
004013F9 |.^EB ED \JMP SHORT Project1.004013E8
Borland Delphi Arhitect Trial
kod:
Code:
var a,b:integer;
begin
for a:=1 to 99 do b:=a;
end.
rez:
Code:
00407C57 . B8 01000000 MOV EAX,1
00407C5C > 40 INC EAX
00407C5D . 83F8 0B CMP EAX,63
00407C60 .^75 FA JNZ SHORT Project1.00407C5C
Hmmm, ima li smisla dalje? Mislim da su dovoljna ova 3 kompajlera, nista modernije nemam.. sad ide pitanje zasto to ne ispadne kao b=99 bez for petlje?
z