Gépi kód

A gépi kód egy gépi nyelven írt számítógépes program. Egy adott számítógép-architektúra utasításkészletét használja. Általában binárisan írják. A gépi kód a szoftver legalacsonyabb szintje. Más programozási nyelveket lefordítanak gépi kódra, hogy a számítógép végre tudja hajtani őket.

Az utasítás megmondja a folyamatnak, hogy milyen műveletet hajtson végre. Minden utasítás egy opcode-ból (műveleti kód) és operandus(ok)ból áll. Az operandusok általában memóriacímek vagy adatok. Az utasításkészlet a számítógép számára rendelkezésre álló opkódok listája. A gépi kód az, amire az assembly kódot és más programozási nyelveket lefordítják, vagy amiként értelmezik.

A programkészítők a kódot egy másik nyelvre vagy gépi kódra alakítják át. A gépi kódot néha natív kódnak is nevezik. Ezt akkor használják, amikor olyan dolgokról beszélünk, amelyek csak néhány számítógépen működnek.

Gépi kód írása

A gépi kód különböző formákban írható:

  • Több kapcsoló használata. Ez egy 1 és 0 sorozatot generál. Ezt a számítástechnika korai napjaiban használták. Az 1970-es évek óta már nem használják.
  • Hex-szerkesztő használata. Ez lehetővé teszi az opkódok használatát a parancs száma helyett.
  • Assembler használata. Az assembly nyelvek egyszerűbbek, mint az opkódok. Szintaxisuk könnyebben érthető, mint a gépi nyelv, de nehezebb, mint a magas szintű nyelvek. Az assembler a forráskódot saját maga fordítja le gépi kóddá.
  • A magas szintű programozási nyelv használata olyan programokat tesz lehetővé, amelyek könnyebben olvasható és írható kódot használnak. Ezeket a programokat gépi kódra fordítják. A fordítás több lépésben történhet. A Java programokat először bytecode-ra optimalizálják. Ezután a használat során gépi nyelvre fordítják le.
Egy korai miniszámítógép előlapja, a gépi kód bevitelére szolgáló kapcsolókkalZoom
Egy korai miniszámítógép előlapja, a gépi kód bevitelére szolgáló kapcsolókkal

A gépi kód tipikus utasításai

Sokféle utasítás található általában egy utasításkészletben:

  • Aritmetikai műveletek: Összeadás, kivonás, szorzás, osztás.
  • Logikai műveletek: Összefüggés, szétválasztás, tagadás.
  • Egyetlen biteken végzett műveletek: A bitek balra vagy jobbra tolása.
  • A memóriára ható műveletek: érték másolása egyik regiszterből a másikba.
  • Két értéket összehasonlító műveletek: nagyobb mint, kisebb mint, egyenlő.
  • Más műveleteket kombináló műveletek: összeadás, összehasonlítás és másolás, ha egyenlő valamilyen értékkel(egy műveletként), ugrás a program egy pontjára, ha egy regiszter nulla.
  • A programfolyamatra ható műveletek: ugrás valamilyen címre.
  • Adattípusokat konvertáló műveletek: pl. 32 bites egész számot 64 bites egész számmá konvertálni, lebegőpontos értéket egész számmá konvertálni (csonkítással).

Sok modern processzor használ mikrokódot néhány parancshoz. Az összetettebb parancsok általában ezt használják. Ez gyakran a CISC architektúráknál történik.

Útmutató

Minden processzor vagy processzorcsalád saját utasításkészlettel rendelkezik. Az utasítások bitekből álló minták, amelyek a gépnek adható különböző parancsoknak felelnek meg. Az utasításkészlet tehát a (többnyire) azonos architektúrát használó processzorok egy osztályára jellemző.

Az újabb processzortervek gyakran tartalmazzák az előd összes utasítását, és további utasításokkal egészíthetik ki. Előfordul, hogy egy újabb tervezés megszünteti vagy megváltoztatja egy utasításkód jelentését (általában azért, mert új célokra van rá szükség), ami befolyásolja a kód kompatibilitását; még a szinte teljesen kompatibilis processzorok is mutathatnak némileg eltérő viselkedést néhány utasítás esetében, de ez ritkán jelent problémát.

A rendszerek más részletekben is különbözhetnek, például a memóriaelrendezés, az operációs rendszerek vagy a perifériás eszközök tekintetében. Mivel egy program általában ilyen tényezőkre támaszkodik, a különböző rendszerek általában nem ugyanazt a gépi kódot futtatják, még akkor sem, ha azonos típusú processzort használnak.

A legtöbb utasítás egy vagy több opcode mezővel rendelkezik. Ezek határozzák meg az alapvető utasítás típusát. Más mezők megadhatják az operandusok típusát, a címzési módot stb. Lehetnek olyan speciális utasítások is, amelyeket maga az opcode tartalmaz. Ezeket az utasításokat azonnali utasításoknak nevezzük.

A processzortervek más szempontból is különbözhetnek. A különböző utasítások különböző hosszúságúak lehetnek. Lehetnek azonos hosszúságúak is. Ha minden utasítás azonos hosszúságú, az egyszerűsítheti a tervezést.

Példa

A MIPS architektúra 32 bit hosszúságú utasításokkal rendelkezik. Ez a szakasz kódpéldákat tartalmaz. Az utasítás általános típusa az op (művelet) mezőben található. Ez a legmagasabb 6 bit. A J-típusú (ugrás) és az I-típusú (azonnali) utasításokat teljes mértékben az op adja meg. Az R-típusú (regiszter) utasítások a funct mezőt tartalmazzák. Ez határozza meg a kód pontos működését. Az ezekben a típusokban használt mezők a következők:

      6 5 5 5 5 5 5 6 bit [ op | rs | rt | rd |shamt| funct] R-típus [ op | rs | rt | cím/közvetlen] I-típus [ op | célcím ] J-típus

rs, rt és rd a regiszteroperandusokat jelöli. shamt az eltolás összegét adja meg. A cím vagy az azonnali mezők közvetlenül operandusokat tartalmaznak.

Példa: adjuk össze az 1-es és 2-es regisztereket. Az eredményt helyezze a 6-os regiszterbe. Ez kódolva van:

[ op | rs | rt | rd |shamt| funct] 0 1 2 6 0 0 32 decimális 000000 00001 00010 00110 00000 100000 binárisan

Egy érték betöltése a 8-as regiszterbe. Vegyük ki a 3. regiszterben felsorolt hely után 68 cellával következő memóriacellából:

[ op | rs | rt | address/immediate] 35 3 8 68 decimálisan 100011 00011 01000 00000 00001 000100 binárisan

Ugrás a 1024-es címre:

[ op | célcím ] 2 1024 decimálisan 000010 00000 00000 00000 00000 10000 000000 binárisan

Kapcsolódó oldalak

  • Bináris számrendszer
  • Kvantumszámítógépek
  • Utasításkészlet
  • Csökkentett utasításkészletű számítógép

Kérdések és válaszok

K: Mi az a gépi kód?


V: A gépi kód egy gépi nyelven írt számítógépes program, amely egy adott számítógép-architektúra utasításkészletét használja, és általában binárisan íródik.

K: Mi a szoftver legalacsonyabb szintje?


V: A gépi kód a szoftver legalacsonyabb szintje.

K: Hogyan hajtanak végre más programozási nyelveket a számítógépek?


V: Más programozási nyelveket gépi kódra fordítanak, amelyet a számítógép képes végrehajtani.

K: Miből áll egy utasítás a gépi kódban?


V: Egy utasítás a gépi kódban egy opkódból (műveleti kód) és operandus(ok)ból áll. Az operandusok általában memóriacímek vagy adatok.

K: Mi az az utasításkészlet?


V: Az utasításkészlet a számítógép számára rendelkezésre álló opkódok listája.

K: Mit csinálnak a programkészítők a kóddal?


V: A programépítők a kódot egy másik nyelvvé vagy gépi kóddá alakítják.

K: Mi a gépi kód másik neve?


V: A gépi kódot néha natív kódnak is nevezik, amikor olyan dolgokról beszélünk, amelyek csak néhány számítógépen működnek.

AlegsaOnline.com - 2020 / 2023 - License CC3