Assembler

**Assembler** ( – assembler) – dasturni assembler tilidagi matndan mashina tilidagi dasturga tarjima qiluvchi dasturlash tili.

Assembler dasturlash tili odatda, maʼlum bir arxitektura, operatsion tizim va til sintaksisiga xosdir, chunki assembler maʼlum bir protsessor uchun mashina koʻrsatmalari mnemonikasi bilan ishlaydi. Shu bilan birga, assembler koʻp platformali yoki hatto universal boʻlishi mumkin, yaʼni ular turli platformalarda va operatsion tizimlarda ishlashi mumkin. Assembler orasida, shuningdek, assemblerning oʻzi ishlaydigan arxitektura yoki operatsion tizimdan tashqari arxitekturalar uchun mashina kodini va bajariladigan modullarni (fayllarni) toʻplash qobiliyatiga ega boʻlgan **oʻzaro faoliyat assembler** guruhini ham ajratib koʻrsatish mumkin (masalan, tarjima qilish). kompyuterda ishlaydigan assembler tomonidan mikrokontroller uchun dastur).

Koʻpgina zamonaviy assemblerchilar **makroassembler** ( – katta, keng), yaʼni assembler tiliga asoslangan makroprotsessorlar. Makroassemblerlarga qoʻshimcha ravishda assemblerlar tarjima paytida boshqa koʻrsatmalarni bajaradilar, ularning toʻplami dastur tarjima qilinadigan apparat platformasiga emas, balki tarjimonning oʻziga bogʻliq.

Assambler bajariladigan dastur modulini olish yoʻlidagi birinchi yoki oxirgi qadam boʻlmasligi mumkin. Shunday qilib, yuqori darajadagi dasturlash tillaridan koʻplab kompilyatorlar natijani assembler tomonidan qayta ishlanadigan assembler tili dasturi shaklida ishlab chiqaradi. Oʻz navbatida, yigʻish natijasi bajariladigan modul boʻlishi mumkin emas, balki mashina kodining turli bloklari va dastur maʼlumotlarini oʻz ichiga olgan obyekt moduli boʻlishi mumkin, undan (yoki bir nechta obyekt modullaridan) keyinchalik bogʻlovchi (bogʻlovchi) yordamida bajariladigan faylni olish mumkin.

Yuqori darajali dasturlash tillarida dasturlarni kompilyatsiya qilishdan farqli oʻlaroq, assemblerlash koʻproq yoki kamroq aniq va teskari jarayondir, chunki assembler tilida har bir mnemonika bitta mashina koʻrsatmasiga toʻgʻri keladi, yuqori darajali tillarda esa har bir ifoda koʻp sonli tillarga aylantirilishi mumkin. turli koʻrsatmalar (operatsiya, assemblerlashning teskarisi *deassemblerlash* deyiladi). Assambler dasturlarini tarjima qilish baʼzan kompilyatsiya deb ham ataladi.

## Arxitekturasi x86

### DOS uchun Assemblerlar
DOS operatsion tizimining eng mashhur assemblerlari Borland Turbo Assembler (TASM), Microsoft Macro Assembler (MASM) va Watcom Assembler (WASM) edi. Oddiy assembler A86 ham bir vaqtlar mashhur edi.

### Windows
Windows operatsion tizimining paydo boʻlishi bilan TASM 5+ (neonovd' laqabli shaxs tomonidan yaratilgan norasmiy paket) nomli TASM kengaytmasi paydo boʻldi, bu esa Windows muhitida ishlash uchun dasturlar yaratish imkonini berdi. TASMning eng soʻnggi maʼlum boʻlgan versiyasi MMX koʻrsatmalarini qoʻllab-quvvatlaydigan 5.3 versiyasi boʻlib, hozirda Turbo C++ Explorer ga kiritilgan. Ammo rasmiy ravishda dasturni ishlab chiqish butunlay toʻxtatildi. Kompilyator oʻzining eng soʻnggi ishlanmalarini TASM Visual zamonaviy rivojlanish muhiti tufayli oldi. Atrof-muhit norasmiy, ammo uning yordami bilan kompilyator bilan ishlash ancha soddalashtirilgan.

Microsoft oʻzining Microsoft Macro Assembler deb nomlangan mahsulotini saqlaydi. U hozirgi kunga qadar ishlab chiqishda davom etmoqda, eng soʻnggi versiyalari DDK larga kiritilgan. Ammo dasturning DOS uchun dasturlar yaratishga qaratilgan versiyasi ishlab chiqilmayapti. Bundan tashqari, Stiven Xatchesson „MASM32“ nomli MASM dasturlash paketini yaratdi.

### GNU va Linux
GNU operatsion tizimi Intel sintaksisidan foydalanadigan boshqa mashhur assemblerlardan farqli oʻlaroq, AT&amp;amp;T-sintaksisidan foydalanadigan GAS assemblerni (GNU Assembler) oʻz ichiga olgan binutils paketini oʻz ichiga oladi (2.10-versiyasidan beri qoʻllab-quvvatlanadi).

### Portativ assemblerlar
Bundan tashqari, ochiq manbali assembler loyihasi mavjud boʻlib, uning versiyalari turli xil operatsion tizimlar uchun mavjud va bu tizimlar uchun obyekt fayllarini olish imkonini beradi. Ushbu assembler NASM (Netwide Assembler) deb ataladi.

Yasm – bu BSD litsenziyasi ostida NASMning qayta yozilgan versiyasi (baʼzi istisnolardan tashqari).

flat assembler (fasm) – qayta litsenziyalashni taqiqlash uchun oʻzgartirilgan BSD litsenziyasi ostidagi yosh assembler (shu jumladan GNU GPL boʻyicha). KolibriOS, Linux, DOS va Windows uchun versiyalari mavjud; Intel sintaksisidan foydalanadi va x86-64 koʻrsatmalarini qoʻllab-quvvatlaydi.

## RISC arxitekturalari

### MCS-51
MCS-51 (Intel 8051) klassik mikrokontroller arxitekturasidir. Uning uchun MetaLink korporatsiyasi tomonidan chiqarilgan ASM51 oʻzaro faoliyat assembler mavjud.

Bundan tashqari, IAR yoki Keil kabi koʻplab dasturiy taʼminot ishlab chiqaruvchi firmalar assemblerlarning oʻz versiyalarini taqdim etdilar. Baʼzi hollarda ushbu assemblerlardan foydalanish qulay direktivalar toʻplami va professional assembler va C dasturlash tilini, tuzatuvchi va dasturiy taʼminot loyihasi menejerini birlashtirgan dasturlash muhitining mavjudligi tufayli samaraliroq boʻladi.

### AVR
Ayni paytda Atmel tomonidan ishlab chiqarilgan AVR uchun 4 ta kompilyator mavjud (AVRStudio 3, AVRStudio 4, AVRStudio 5 va AVRStudio 6, AVRStudio 7).

AVR-GCC loyihasining (aka WinAVR) bir qismi sifatida *avr-as* kompilyatori mavjud (bu GCC- dan AVR-ga koʻchirilgan assembler *sifatida* GNU).

*Avra* deb nomlangan bepul minimalist kompilyator ham mavjud.

Pullik kompilyatorlar: IAR (EWAVR), CodeVisionAVR, Imagecraft. Ushbu kompilyatorlar Assembler va C tillarini qoʻllab-quvvatlaydi va IAR ham C++ ni qoʻllab-quvvatlaydi.

BASIC tili uchun kompilyator mavjud – BASCOM, shuningdek, pullik.

### ARM
ARM protsessorlari uchun kompilyatorlarning juda keng tanlovi mavjud boʻlib, ularning ichki amalga oshirilishi bevosita ARM protsessorlari ishlab chiqaruvchisiga yoki ARM protsessorlari bilan ishlash uchun IDE ishlab chiqaruvchisiga bogʻliq. Toʻgʻridan-toʻgʻri ARM kompaniyasidan rasmiy ARM kompilyatori ARM Compiler 6 boʻlib, u IDE DS-5 Development Studio dasturiga kiritilgan va C va C++ tillarida dasturlarni kompilyatsiya qilishni qoʻllab-quvvatlaydi.

ARM protsessor yetkazib beruvchilari va ARM asboblar zanjiri ishlab chiquvchilari kompilyatorlari:

### PIC
PIC oilasining mikrokontrollerlari uchun dasturlarni yaratish, tahrirlash va disk raskadrovka qilish uchun Microchip Technology tomonidan ishlab chiqarilgan ishlab chiqish muhiti MPLAB hisoblanadi. Atrof-muhit PIC mikrokontrollerlarining turli oilalari uchun MPASM va ASM30 assembly tili tarjimonlarini oʻz ichiga oladi. MPLAB X IDE muhitining zamonaviy versiyalari koʻp platformali boʻlib, turli xil kompyuter operatsion tizimlari ostida ishlaydi. Atrof-muhit bepul tarqatiladi.

### AVR32

### MSP430

### PowerPC
IBMning *PowerPC dasturiy taʼminotni ishlab chiqish asboblar toʻplami* PowerPC uchun assemblerni oʻz ichiga oladi.

### MIPS

## Virtual mashina arxitekturasini yigʻish

### fasmg assembler (CALM koʻrsatmalar arxitekturasi)
U shunga oʻxshash sintaksisga ega assembler flat assembler (fasm) ning vorisi, lekin fasmdan farqli oʻlaroq, u hech qanday protsessor arxitekturasiga bogʻliq emas. Uning paradigmasi makrolardan foydalangan holda har qanday protsessor arxitekturasi uchun har qanday formatdagi va mashina kodi bilan chiqish fayllarini yaratishdir. Makroslarga qoʻshimcha ravishda fasmg deb ataladigan narsalarni oʻz ichiga oladi. CALM koʻrsatmalari („kompilyatsiya qilingan assembler koʻrsatmalari, makroassemblerlar kabi“) tarjimon tomonidan bayt kodga aylantiriladigan makroassemblerlarga ekvivalent boʻlgan assembler virtual mashinasining oʻz koʻrsatmalari. Ushbu CALM koʻrsatmalarining arxitekturasini fasmg assemblerning „mahalliy“ arxitekturasi deb hisoblash mumkin. Toʻplam x86, x64, 8052, AVR arxitektura koʻrsatmalarini qoʻllab-quvvatlashga taqlid qilish uchun CALM koʻrsatmalari toʻplamini oʻz ichiga oladi; ishlab chiquvchi har qanday boshqa arxitekturani qoʻllab-quvvatlash va har qanday chiqish fayl formatlarini qoʻllab-quvvatlash uchun CALM koʻrsatmalari toʻplamini tavsiflashi mumkin. Mac OS, Linux va Windows uchun tarjimonning oʻzgarishlari mavjud.

## Eslatmalar

## Havolalar

* *Vostrikova Z. P.* Programmirovanie na yazike assemblera YeS EVM. M.: Nauka, 1985.
* 
* 
* 
* 
* *Magda Yu. S.* Assembler. Razrabotka i optimizatsiya Windows-prilojeniy. SPb.: BXV-Peterburg, 2003.
* *Norton P., Souxe D.* Yazik assemblera dlya IBM PC. M.: Kompyuter, 1992.
* 
* 
* *Skenlon L.* Personalnie EVM IBM PC i XT. Programmirovanie na yazike assemblera. M.: Radio i svyaz, 1989.
*