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

Pavel Troller patrol@sinus.cz
Středa Leden 24 20:23:47 CET 2007


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




Další informace o konferenci Hw-list