Re: OT: Kompilátory [Was: Svet se zene do zahuby, Windows Vista jsou jen dalsim krokemna ceste ?]

Vojtěch Bubník bubnikv@seznam.cz
Čtvrtek Leden 25 07:55:14 CET 2007


V naší firmě se udržuje software pro řízení stolu rentgenu. Software běží na QNX a optimalizace kompilátoru je z bezpečnostních důvodů vypnuta. To jest, lepší když to běží pomalu, než aby to někoho zabilo chybou kompilátoru. Třeba je toto i Váš případ.
Vojta Bubník


> ------------ Původní zpráva ------------
> Od: Pavel Troller <patrol@sinus.cz>
> Předmět: Re: OT: Kompilátory [Was: Svet se zene do zahuby, Windows Vista jsou
> jen dalsim krokemna ceste ?]
> Datum: 24.1.2007 20:24:48
> ----------------------------------------
> Zdravím,
> 
> > Kompilátory jsou na úrovni generování kódu optimalizované docela dost
> > a je v tom "utopeno" neuvěřitelné množství lidské práce. Když se
> > podíváte jaký kód z některých leze tak si ukroutíte hlavu. Normálního
> > programátora v assembleru by třeba nenapadlo mít v jednom registru
> > společně jedno osmibitové a jedno čtyřiadvacetibitové číslo a současně
> > s nimi dělat aritmetické operace, kompilátor si s tím tu práci dá :-)
> > A to jsou ještě "horší" finty.
> 
> Asi ale záleží, co to je za kompilátor. Bohužel jsem byl v poslední době nucen
> věnovat se reverznímu inženýringu jednoho bináru pro MC680X0, kterou dobře
> znám, postavené to bylo někdy ve 2003, to už snad by měly být kompilátory
> dobré, a skutečně jsem si málem ukroutil hlavu.
> Např. řádek src velice podobný tomuhle
> 
>   if (i[a,b]) then i[a,b]--;
> 
>   spotřeboval asi 220 Bytes, protože nejen že mapovací funkci pro přístup na
> prvek pole jeli přesně dle zápisu dvakrát (pokaždé s jiným adresovým
> registrem, takže když vypočetli tu samou hodnotu podruhé, v tom původním
> stále byla ta samá), ale porovnání udělali tak, že si pushli datový registr,
> narvali do něj nulu, porovnali s obsahem paměti a zase popli (samozřejmě lze
> udělat tst.w (an) ) a ten dektrement udělali tak, že si zase pushli ten samý
> registr (takže dokonce vznikl naprosto zbytečný pár instrukcí pop/push těsně
> za sebou), vložili do něj 1, odečetli a zase ho popli, zcela ignorujíce 
> možnost udělat instrukci sub #1,(an). 
>   Ano, MC680x0 je typický CISC, ani já bych nechtěl psát v asm nějakého
> RISCu, ale musím teda říct, že z tohohle "kompilátoru" se mi fakt chtělo
> blít, a to docela fest. Přišlo mi to, že někdo vzal kompilátor určený pro
> 8080 nebo možná něco ještě horšího a jen naplnil generátor kódu instrukcemi
> pro Motorolu. A pak potřebujete 512K EPROM, zatímco dle mého názoru by
> stačila 32K a třetinové hodiny.
>                        S pozdravem Pavel Troller
> 
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list@list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
> 
> 
> 



Další informace o konferenci Hw-list