Ugrás a tartalomhoz

machine code

A Wikiszótárból, a nyitott szótárból


Főnév

machine code (tsz. machine codes)

  1. (informatika) gépi kód

A machine code (gépi kód) a számítógépek legalacsonyabb szintű, közvetlenül a CPU által végrehajtható utasításkészlete. Ez a programok lefordított, bináris formája, amely csak 0 és 1 sorozatából áll, és közvetlenül vezérli a hardvert.



🧠 Mi az a gépi kód?

A gépi kód egy olyan utasítássorozat, amit a CPU értelmez és végrehajt. Minden utasítás egy bináris kód, amely tartalmazza:

  • Műveletkódot (opcode) – pl. összeadás, ugrás, betöltés
  • Operandusokat – pl. regiszterek, memóriacímek, konstansok

Minden CPU-architektúrának saját gépi kódja van (pl. x86, ARM, MIPS – ezek nem kompatibilisek egymással).


📦 Példa (x86 gépi kód)

Gépi kód hexadecimális formában:

B8 04 00 00 00

Ez az x86 utasítás:

mov eax, 4

A B8 a MOV utasítás kódja (opcode), az 04 00 00 00 pedig az operandus (4, kis endian formában).



🧩 Hol jön létre gépi kód?

A fordító (compiler) vagy assembler generálja:

C forráskód → assembly → gépi kód (bináris) → CPU futtatja

Példa folyamat:

int main() {
    return 0;
}

Ez a gcc fordítóval .exe vagy .out formában gépi kóddá alakul.



🔍 Formák és megjelenés

  • Hexadecimális nézet: gépi kód gyakran így jelenik meg (pl. disassemblerrel)
    • E8 83 00 00 00CALL 0x83
  • Bináris nézet:
    • 10111000 00000100 00000000 00000000 00000000 (nehezen olvasható)



⚙️ Gépi kód jellemzői

Tulajdonság Jelentés
Nagyon gyors A CPU közvetlenül hajtja végre
Nehezen olvasható Emberi szemnek nem értelmes
Platformfüggő Architektúrához kötött (pl. ARM ≠ x86)
Nem hordozható Egy másik CPU-n nem fut el



🏗️ Miért nem írunk közvetlenül gépi kódot?

  • Nehezen olvasható, hibásan értelmezhető
  • Hosszú és bonyolult programokhoz gyakorlatilag lehetetlen manuálisan kezelni
  • Ezért írunk forráskódot magasabb nyelven (C, C++, Python), amit gépi kóddá fordítanak



🛠️ Disassembler/Debugger példák

  • objdump, gdb, IDA Pro, Radare2, x64dbg
  • Ezek gépi kódot visszaalakítanak assembly nyelvre, amit könnyebb értelmezni



🧪 Érdekesség – saját gépi kód beírása

Unix/Linux alatt például egy futtatható bináris létrehozható kézzel:

echo -ne "\xB8\x01\x00\x00\x00\xCD\x80" > mybinary
chmod +x mybinary
./mybinary

Ez egy exit(1) utasítást tartalmazó gépi kód Linux x86-on.



📚 Összefoglalás

Fogalom Jelentés
Gépi kód Bináris utasítások, amiket a CPU ért
OPCODE Műveletkód (pl. MOV, ADD, JMP)
Operandus Regiszter, memória, szám
Disassembler Gépi kód → assembly visszafejtés
Compiler Forráskód → gépi kód fordító
Platformfüggő Egy gépi kód csak adott CPU-n értelmes