[ LUGOS ] Programi napisani v C-ju

Jaka Bac Jaka.Bac na nevtron.si
Sob Sep 23 20:34:45 CEST 2000


Hi

Sicer je tole bolj primerno za LUGOS-PROG ampak, ker je vprasanje ze
tukaj...
Namesto, da govorimo o bananah in dreku se spustimo v to kar izvrze
moderni C/C++ compiler.
Ce bi vsi C,C++ compilerji ne optimizirali kode ki jo generirajo, bi se
to kar zelis dalo izvesti ( pa se to tezko, ker vsak compiler dela reci
malo po svoje ). Ampak temu ni tako, vsak sodoben compiler zna kodo
optimizirat in ko gre taksen compiler cez kodo se clovek, ki se spozna
na masinsko kodo tezko desifrira kaj natancno koda dela :)
npr imejmo:

int x;
int y=123;
x=y+3;

lahko v grobem izgleda:

mov eax,dword ptr [naslov y-ona];
add eax,3;
mov dword ptr [naslov x-a],eax;

lahko pa se compiler odloci, da je mu add ni vsec ker vzame toliko in
toliko ciklov pa namesto naredi to:

mov esi,dword ptr [naslov y-ona];
lea eax,dword ptr [esi+3];
mov dword ptr [naslov x-a],eax;

in zdaj pa pogruntaj, da je lea uporabljen za preprosto sestevanje in ne
za racunanje naslova :)

lahko pogrunta da se y do sem ni spremenil in zamenja word ptr [naslov
y-ona] za njegovo vrednost.
lahko pa celo naredi to:

mov eax,126;
mov dword ptr [naslov x-a],eax;

Kar pa se zdalec niso vse carovnije, ki se jih lahko naredi na se tako
preprostem primeru. Torej lahko sklepas kaksen voodoo se gredo
compilerji na kompleksnejsi kodi. ( Npr razne optimizacije klicev
funkcij itd.. )
Torej je ta problem podoben problemu racunalniskega prepoznavanja
predmetov iz fotografij. Taksen program, bi rabil kar visoko umetno
intiligenco, da bi pogruntal da je ta drek prej bil banana :) In zato ce
taksen program obstaja, ti ga avtor ne bo dal kar tako.

Jaka Bac




Dodatne informacije o seznamu Starilist