machine code
| machine code |
|---|
| General concepts |
| Instructions |
Főnév
machine code (tsz. machine codes)
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 00→CALL 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 |
- machine code - Szótár.net (en-hu)
- machine code - Sztaki (en-hu)
- machine code - Merriam–Webster
- machine code - Cambridge
- machine code - WordNet
- machine code - Яндекс (en-ru)
- machine code - Google (en-hu)
- machine code - Wikidata
- machine code - Wikipédia (angol)