Gépi kód
Ez a szócikk nem tünteti fel a független forrásokat, amelyeket felhasználtak a készítése során. Emiatt nem tudjuk közvetlenül ellenőrizni, hogy a szócikkben szereplő állítások helytállóak-e. Segíts megbízható forrásokat találni az állításokhoz! Lásd még: A Wikipédia nem az első közlés helye. |
A gépi kód a számítástechnikában használt műveletek és adatok (általában bináris – kettes számrendszeren alapuló – vagy hexadecimális – tizenhatos számrendszeren alapuló – számokkal ábrázolt) olyan sora, amely a számítógép processzora számára közvetlen utasításként értelmezhető.
A gépi kód az egyetlen "nyelv", amit a számítógép központi parancsvégrehajtó egysége, a processzor megért, ezért minden programozási nyelvet gépi kóddá kell alakítani ahhoz, hogy a program végrehajtható legyen. Ezt az átalakítást végzik a fordítóprogramok. Ezek az utasítások általában csak egy processzortípusra vonatkoznak, és azon belül is generációnként változhatnak (az újabb processzorokban az előzőnél több utasítás szokott lenni). Az egyes processzortípusok utasításkészletei egymással egyáltalán nem kompatibilisek. Ez azt jelenti, hogy egy másik processzorra készített programot (ez alól az operációs rendszerek se kivételek) nem tudnak végrehajtani (például Alpha-s Windows-t nem lehet PC-kre feltenni és fordítva, vagy PC-s Linux-ot nem lehet SPARC-ra feltenni és fordítva stb.).
A gépi kódhoz legközelebb álló programozási nyelv az assembly. (A közel állás itt azt jelenti, hogy az assembly utasításokból álló program és a gépi kódú lefordított program között a legnagyobb a kölcsönösen egyértelmű megfelelés, vagyis az assembly utasítások, programsorok nagy részéhez egy gépi kód csoport tartozik, és ez igaz fordított irányban is.)
Példa gépi kódú programra
[szerkesztés]Az alábbi program egy gépi kódú programpélda. Az adatokat tizenhatos számrendszerben, byte-onként csoportosítva ábrázolja. (Ez egy "tetszőlegesen választott" ábrázolási forma, mivel jelölhetnénk például bináris számrendszerben vagy tízes számrendszerben is: a program ugyanaz lenne.)
B8 D4 07 00 00 90 48 75 FC C3
A példa assembly eredetije
[szerkesztés]A fenti gépi kód az alábbi GNU/as assembly forrásprogramból készült (de készülhetett volna természetesen tetszőleges más programnyelven írt programból is; az assembly programozási nyelv mindössze a gépi kódhoz eső „legközelebbi” nyelv, így a legjobban láthatóak a programnyelv utasításai és a gépi kódú végeredmény közötti kapcsolatok):
.globl main .type main,@function main: movl $2004,%eax loop1: nop decl %eax jnz loop1 ret