Asembleris
Straipsnis iš Vikipedijos, laisvosios enciklopedijos.
Asembleris – programa, transliuojanti asemblerio kalba rašytą programos tekstą į objektinį (mašinos) kodą. Nors asemblerio kalba tėra mnemoninis procesoriaus instrukcijų vaizdavimas, ji dažnai suteikia ir patogių papildomų galimybių. Pavyzdžiui, asembleris suteikia galimybę pavadinti atminties vietas (adresus) simboliniais vardais, supaprastindamas programavimą, nes programuojant paprastomis mnemonikomis, kiekvieną kartą keičiant programos tekstą, tektų perskaičiuoti atminties adresus.
Asemblerių rašymas dažnai yra žymiai paprastesnis, nei aukšto lygio kalbų kompiliatorių rašymas. Pirmieji asembleriai atsirado šeštąjame dešimtmetyje.
Skirtingai, nei įprastos programavimo kalbos, asembleriai neabstrahuoja procesoriaus ar kompiuterio architektūros, todėl, pvz., vienam procesoriui skirta programa, parašyta asembleriu, negali būti lengvai pritaikyta kitam procesoriui (ar net kompiuteriui, turinčiam tą patį procesorių, bet kitokią architektūrą). Kita vertus, šis architektūros atitikimas leidžia žymiai geriau panaudoti kompiuterio ar procesoriaus galimybes, sukurti kompaktiškesnes ir greitesnes programas.
Modernūs aukštesnio lygio asembleriai naudoja papildomas aukštesnio lygio kalbų abstrakcijas, kaip sudėtingesnės valdymo struktūros, funkcijų rašymas ir kvietimas, aukšto lygio abstraktūs duomenų tipai ir pan. Du labiausiai išvystyti asemblerių atvejai – tai makroasembleriai, turintys makrokalbą, leidžiančią iš apibrėžti dažniau naudojamus kodo fragmentus ar net sintaksės taisykles bei struktūriniai asembleriai, suteikiantys įprastiems asembleriams struktūrinio programavimo (procedūros, ciklai, duomenų tipai ir kiti abstraktai) galimybes.
Nemažai aukštesnio nei asembleris lygio kalbų kompiliatorių pirmiausia generuoja asemberio kodą, pavyzdžiui, GNU C kompiliatoriaus sugeneruotą asemblerio kodą (AT&T sintaksė) galima peržiūrėti komanda
gcc -S failas -o temp && cat temp
[taisyti] Pavyzdys
Asembleriu parašytos programos, į ekraną išvedančios tekstą „Sveikas, pasauli!“, pavyzdys:
code segment assume cs:code, ds:code org 100h start: mov ah, 9 mov dx, offset hello_msg int 21h mov ax, 4c00h int 21h hello_msg DB 'Sveikas, pasauli!', 13, 10, '$' code ends end start
[taisyti] Nuorodos
- Linux OS
- LinuxAssembly bendruomenė
- NASM kompiliatorius
- YASM kompiliatorius
- ALD debugeris
- Paruoštuokas