machine code |
---|
General concepts |
Instructions |
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.
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:
Minden CPU-architektúrának saját gépi kódja van (pl. x86, ARM, MIPS – ezek nem kompatibilisek egymással).
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).
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.
E8 83 00 00 00
→ CALL 0x83
10111000 00000100 00000000 00000000 00000000
(nehezen olvasható)
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 |
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.
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 |