assembly language
Főnév
assembly language (tsz. assembly languages)
Assembly language (magyarul: assembly nyelv vagy gépközeli programozási nyelv) a programozás egyik legalacsonyabb szintű formája, amely közvetlenül a számítógép gépi utasításait reprezentálja ember által olvasható szöveges formában. Minden processzor (pl. x86, ARM, MIPS) saját utasításkészlettel rendelkezik, így az assembly nyelv architektúrafüggő.
🧠 Mi az assembly nyelv?
- Emberi olvashatóságú kód, amely egy-az-egyben leképezi a gépi kód utasításait.
- Egy assembly nyelvű programot assembler segítségével fordítunk le gépi kódra.
- Köztes szint a bináris gépi kód és a magas szintű nyelvek (pl. C, Python) között.
🧩 Alapfogalmak
Fogalom | Jelentés |
---|---|
Utószintű nyelv | Közel van a hardverhez, de még ember által írható |
Utasításkészlet (ISA) | Az adott processzor által értelmezhető gépi parancsok halmaza |
Regiszter | Nagyon gyors, kis méretű memóriaterület a CPU-ban |
Assembler | Olyan program, amely assembly kódot gépi kóddá fordít |
Opcód | Az utasítás bináris megfelelője a gépi nyelvben |
🧾 Egyszerű példa (x86 assembly, Intel szintaxis)
section .data
msg db 'Hello, World!', 0
section .text
global _start
_start:
mov edx, 13 ; üzenet hossza
mov ecx, msg ; üzenet címe
mov ebx, 1 ; stdout (fájl-deszkriptor)
mov eax, 4 ; sys_write hívás
int 0x80 ; rendszerhívás
mov eax, 1 ; sys_exit hívás
xor ebx, ebx ; visszatérési érték: 0
int 0x80
Ez a program kiírja a “Hello, World!” szöveget a terminálra Linux alatt.
📦 Jellemző utasítástípusok
Utasítás | Funkció |
---|---|
mov
|
Adatmásolás egyik regiszterből a másikba |
add , sub
|
Összeadás, kivonás |
cmp
|
Összehasonlítás |
jmp
|
Ugrás (feltételes vagy feltétlen) |
push , pop
|
Veremkezelés |
call , ret
|
Alprogramhívás és visszatérés |
int
|
Szoftveres megszakítás (pl. rendszerhívás) |
⚙️ Regiszterek (példa: x86)
Regiszter | Leírás |
---|---|
eax , ebx , ecx , edx
|
Általános célú regiszterek |
esp
|
Veremmutató (stack pointer) |
ebp
|
Alapmutató (base pointer) |
eip
|
Utasításszámláló (instruction pointer) |
eflags
|
Állapotjelző bitek (pl. nulla, átvitel, előjel) |
🛠️ Mire használják?
Terület | Példa |
---|---|
Operációs rendszerek | Bootloader, kernel |
Beágyazott rendszerek | Mikrokontrollerek programozása |
Fordítók optimalizálása | Gépi kód generálás, inline assembly |
Reverse engineering | Bináris fájlok elemzése, malware vizsgálat |
Biztonságkutatás | Exploit fejlesztés, shellcode |
✅ Előnyök
- Maximális teljesítmény és kontroll
- Közvetlen hardver-hozzáférés
- Kicsi és hatékony programok
- Hasznos debugolásra és alacsony szintű optimalizálásra
⚠️ Hátrányok
- Bonyolult és nehezen olvasható
- Nehezen karbantartható nagy projektekben
- Architektúrafüggő
- Lassú fejlesztés, több hiba lehetőség
🧾 Összefoglalás
Az assembly nyelv lehetővé teszi, hogy a programozó közvetlenül a hardverrel kommunikáljon, utasításról utasításra. Bár ma már ritkábban használják önálló nyelvként, bizonyos területeken nélkülözhetetlen – például rendszerszintű fejlesztésben, firmware-ben, exploit fejlesztésben vagy optimalizált rutinok írásánál.
- assembly language - Szótár.net (en-hu)
- assembly language - Sztaki (en-hu)
- assembly language - Merriam–Webster
- assembly language - Cambridge
- assembly language - WordNet
- assembly language - Яндекс (en-ru)
- assembly language - Google (en-hu)
- assembly language - Wikidata
- assembly language - Wikipédia (angol)