dex píše:
Martin8bity píše:
Mne teda celkem zaujalo, ze ty assemblerovy zdrojaky jsou generovany z jinych zdrojaku a pouzivali na to nejaky CPU translator. Ten bych docela chtel videt.
Byl to jen převod ze zdrojáků pro 8080 do 8086.
Ano, presne tak. O rade procesorov Intel x86 je zname, ze pri navrhu noveho sa navrhari snazia o spetnu kompatibilitu tak, aby program, napisany na starsi typ x86, bol schopny bezat aj na novsom x86. To je tiez jeden z dovodov, preco aj najnovsie najmodernejsie 64-bitove core I <cislo> maju stale moznost spustat programy v (totalne zastaralom) 16-bitovom rezime 8086.
Ale pozor, malokto uz vie (resp. si pameta), ze tato spetna kompatibilita zacina uz pri velmi dobre znamom osembitovom procesore 8080. Existovalo vela programov napisanych v asembleri pre 8080 (napr. v ramci spominaneho CP/M) a bola by skoda toto vsetko zahodit, Intel sa vtedy rozhodol, ze svoj novy moderny 16-bitovy 8086 navrhne tak, aby bolo na nom mozne prevadzkovat aj vsetky tieto stare programy pisane pre 8080 ! Kedze zachovanie binarnej kompatibility (ktora je napr. medzi 8080 a Z80) by pri prechode z 8 na 16-bitovu architekturu uz nebolo dost dobre mozne (resp. bolo ale zbytocne by to obmedzovalo vykon), rozhodol sa, ze zachova spetnu kompatibilitu aspon na urovni zdrojakov. To znamena, ze 8086 navrhol tak, aby bolo mozne automatickymi prostriedkami priamo previest, cize ludsky povedane jednoducho skompilovat program v asembleri 8080 na zdrojak 8086 a kod, ktory bezi priamo na 8086.
Je pravda, ze 8086 ma ine registre a ine instrukcie, ale ked si pozorne porovnate architekturu 8080 a 8086, najdete tu velku podobnost, vdaka ktorej mozno kazdu instrukciu 8080 skompilovat priamo na nejaku instrukciu 8086, a tym vytvorit programovy kod, ktory v ramci jedneho 64kB segmentu robi to iste, ako v 64kB pameti pri 8080.
Preto sa v roznych starych zdrojakoch 8086 casto vyskytuju rozne casti, ktore vznikli automatickym prevodom zo starsich zdrojakov 8080.