„Ortogonális utasításkészlet” változatai közötti eltérés

[ellenőrzött változat][ellenőrzött változat]
Tartalom törölve Tartalom hozzáadva
Syp (vitalap | szerkesztései)
29. sor:
A 8 bites [[Intel 8080]] mikroprocesszor (továbbá a 8085 és a 8051 mikrovezérlő) lényegében egy kissé kiterjesztett [[akkumulátor (számítástechnika)|akkumulátor]]-alapú design volt, ezért nem volt ortogonális. Az assembly programozónak vagy a fordítóprogram írójának oda kellett figyelnie, hogy melyik regiszteren melyik műveletek elvégzése lehetséges: a legtöbb 8 bites műveletet csak a 8 bites akkumulátoron (az A-regiszteren) lehetett elvégezni, míg a 16 bites műveleteket a 16 bites pointer/akkumulátoron (a HL-regiszterpáron); a legegyszerűbb műveletek, mint az inkrementálás, mind a hét 8 bites regiszteren elvégezhetők voltak. Ennek az oka nagyrészt az volt, hogy az opkódok hosszúságát egy bájton akarták tartani, és fenn akarták tartani a [[forráskód szintű kompatibilitás]]t az eredeti [[Intel 8008]]-cal (a [[Datapoint 2200]] CPU [[Large Scale Integration|LSI]]-implementációjával).
 
A [[binárisan kompatibilis]] Z80-as később prefix kódokkal bővítette az opkódokat, hogy az egy bájtos korlátot kikerülve további képességeket építhessen az utasításkészletbe. Ugyanezt az alapötletet alkalmazták az [[Intel 8086]]-nál is, itt azonban nem törekedtek a bináris kompatibilitásra, ami radikálisabb kiterjesztést tett lehetővé. A 8086-ost ehelyett szabályos 16 bites processzornak tervezték, ami forráskód szinten volt kompatibilis a 8008, 8080 és 8085 processzorokkal. A magas [[Utasításkészlet#Kódsűrűség|kódsűrűség]] kedvéért valamennyire meghagyták a kódot nem ortogonálisnak (amit a kortárs számítógéptudósok „barokkosnak” csúfoltak). Az architektúra 32 bites kiterjesztése a [[80386]]-tal érkezett meg, az eredeti 8086 utasítások (és bővítéseik) megtartása ellenére valamivel ortogonálisabb megközelítést követtek. Az opkódban alkalmazott kódolási stratégia azonban továbbra is az eredeti 8008 és 8080 (valamint a Z80) örökségeit mutatta; például egyes gyakori utasítások, mint a regiszterek vagy konstansok '''push''' és '''pop''' utasítása egy bájtos opkódot kaptak, az elsődleges akkumulátor, az '''eax''' bizonyos művelettípusokban rövidebb kódot kapott; ezeket a megfigyeléseket a kézi és a fordítóprogram által végzett [[kódoptimalizálás]] során egyaránt kihasználják.
 
===A RISC-éra kezdete===