Mi az az utasításkészlet?

Bármely CPU-t az alapoktól kezdve úgy tervezték, hogy támogassa az adott utasításkészletet. Az utasításkészlet olyan keményen kódolt műveletek halmaza, amelyeket a CPU képes végrehajtani. Ezek a műveletek lehetnek például két szám összeadása, ugrás a program egy másik részére, vagy két érték összehasonlítása. A számítógép által végrehajtható minden egyes műveletet egyedileg ábrázol egy műveleti kód.

Opcodes

Egy program végrehajtásakor a CPU egy programszámlálót használ annak nyomon követésére, hogy melyik utasítást kell legközelebb végrehajtani. Utasítás lekérésekor a programszámláló az utasítás hosszával megnövekszik, így az a következő utasítás elejére mutat. Minden utasítás egy műveleti kódból áll. Az utasítástól függően tartalmazhat operandusokat vagy nem. Az operandusok lehetnek állandó értékek, vagy egy érték helyére mutató mutató a CPU regiszterben vagy a rendszer RAM-ban.

A teljes utasítás lekérése után dekódolni kell. Ez az a folyamat, ahol a CPU elválasztja a műveleti kódot és az operandusokat. A dekódolt műveleti kódot arra használják, hogy engedélyezzenek vagy tiltsanak le bizonyos elektromos útvonalakat a CPU-ban, amelyek a megfelelő működést eredményezik.

Az utasítás dekódolása után végrehajtódik. A CPU pontos viselkedése a működéstől függ. Egy összeadási művelet két értéket összead. Egy ugrási művelet kiszámítja, hogy a programban hova kell ugrani. Az összehasonlítási művelet két értéket hasonlít össze. A NOP művelet tétlen lesz, mivel a NOP a No Operation rövidítése.

A legtöbb utasítás ezután a művelet eredményét adja ki. Ez a kimenet mehet a processzor regisztereibe és szükség esetén a rendszer RAM-ba. Ezen műveletek mindegyike egyetlen óraciklust vesz igénybe.

Illegális műveleti kódok

Minden CPU-architektúra rendelkezik saját, a gyártó által közzétett műveleti kódlistával. Ezeknek a műveleti kódoknak az értékei nem feltétlenül ugyanazok a többplatformos, ezért a szoftvereket különböző architektúrákhoz kell fordítani. Egyes esetekben a gyártó dokumentálatlan műveleti kódokat is mellékel. Ezeket „illegális műveleti kódoknak” nevezik. Az illegális műveleti kódok, bár nincsenek dokumentálva, ugyanazt a funkciót látják el minden alkalommal, amikor meghívják őket. Dokumentálatlan és nem szabványos funkciókként azonban a CPU architektúra frissítései egyszerűen eltávolíthatják őket.

Néhány korai számítógépes játék az Apple II-n bizonyos illegális műveleti kódokra támaszkodott. Ezután teljesítmény- és stabilitási problémákkal küzdöttek a későbbi Apple IIc CPU-változatnál, mivel az IIc eltávolította a játékokhoz szükséges illegális műveleti kódokat. Az illegális műveleti kódokat szerzői jogvédelmi körökben biztonsági módszerként is használták a homályon keresztül a tartalmaikat feltörő kalózok elleni küzdelemben. Egyes illegális műveleti kódokat egyszerűen hibakereső eszköznek és hibakezelőnek szánják.

Az x86 utasításkészlet nagyszámú, nem dokumentált illegális műveleti kódot tartalmaz. Érdekes módon ezek egy része meg van osztva az Intel és az AMD CPU-k között, ami azt jelzi, hogy mindkét vállalat nyilvánosan tisztában van a céljával, miközben nincs dokumentálva.

Összeállítók és összeállítás

A legtöbb program magas szintű nyelveken készült. Ezek viszonylag könnyen olvashatók, gyakran angol szavakat vagy gyorsírást használnak a tanulási görbék minimalizálása érdekében. Ahhoz, hogy egy számítógép végrehajtsa ezeket a programokat, le kell őket fordítani. A fordító alapvetően egy fordító. Felveszi a magas szintű kódot, és számítógépes kóddá alakítja, olyan utasításokká, amelyeket a CPU megért.

Egyes nyelveken az is lehetséges, hogy lefordítatlan kódot futtassunk egy korábban lefordított programon keresztül, amely menet közben gépi kódot generál. Az Assembly egy alacsony szintű programozási nyelv, amely gyorsírást használ, így a fejlesztők közvetlenül láthatják és ellenőrizhetik az elvégzett műveleteket. A NOP egy példa az összeszerelési gyorsírásra.

Következtetés

Az utasításkészlet azon hivatalos funkciók listája, amelyeket a CPU architektúra futtathat. Ez a végrehajtható műveletek listája. Ezek a műveletek be vannak kódolva a CPU-ba, és a megfelelő műveleti kódjukkal hívják meg.

A szoftver általában fordítóprogramot használ az ember által olvasható magas szintű kódból a CPU által olvasható gépi kódra. Néha a CPU architektúra tartalmazhat nem dokumentált műveleti kódokat, amelyeket illegális műveleti kódoknak neveznek. Az illegális műveleti kódok technikailag az utasításkészlet részét képezik. Előfordulhat azonban, hogy a platform jövőbeli iterációi során nem lesznek megbízhatóan elérhetők. Ne felejtse el megírni gondolatait az alábbi megjegyzésekben.