Assambleya tili Assembly language Assambleya tili
Download 124.19 Kb.
|
Assambleya tili - Assembly language
Yilda kompyuter dasturlash, assambleya tili (yoki assambleyer tili),[1] ko'pincha qisqartiriladi asm, har qanday past darajadagi dasturlash tili bunda tildagi ko'rsatmalar bilan juda kuchli yozishmalar mavjud me'morchilik mashina kodi ko'rsatmalar.[2] Yig'ish mashina kodining ko'rsatmalariga bog'liq bo'lganligi sababli, har bir montaj tili aniq bitta kompyuter arxitekturasi uchun mo'ljallangan. Assambleya tili ham chaqirilishi mumkin ramziy mashina kodi.[3][4] Assambleyaning kodi a tomonidan bajariladigan mashina kodiga aylantiriladi yordam dasturi deb nomlanadi montajchi. O'tkazish jarayoni deb nomlanadi yig'ilish, kabi yig'ish The manba kodi. Assambleya tilida odatda bitta mashina buyrug'i uchun bitta so'z bor (1: 1), lekin Izohlar va yig'uvchi bo'lgan bayonotlar direktivalar,[5] makrolar,[6][1] va ramziy dastur yorliqlari va xotira joylari ko'pincha qo'llab-quvvatlanadi. "Assambleyer" atamasi odatda bog'liqdir Uilks, Wheeler va Gill ularning 1951 yilgi kitobida Elektron raqamli kompyuter uchun dasturlarni tayyorlash,[7] ammo kim bu atamani "bir nechta bo'limlardan iborat boshqa dasturni bitta dasturga yig'adigan dastur" ma'nosida ishlatgan.[8] Har bir yig'ilish tili ma'lum bir narsaga xosdir kompyuter arxitekturasi va ba'zan an operatsion tizim.[9] Biroq, ba'zi montaj tillari aniq ma'lumot bermaydi sintaksis operatsion tizim qo'ng'iroqlari uchun va aksariyat yig'ilish tillari har qanday operatsion tizimda universal tarzda ishlatilishi mumkin, chunki bu til barcha haqiqiy imkoniyatlardan foydalanish imkoniyatini beradi. protsessor, barchasi ustiga tizim qo'ng'irog'i mexanizmlar oxir-oqibat dam oladi. Assambleya tillaridan farqli o'laroq, ko'pchilik yuqori darajadagi dasturlash tillari odatda ko'chma bir nechta arxitektura bo'ylab, lekin talab qiladi tarjima qilish yoki kompilyatsiya qilish, yig'ishdan ko'ra ancha murakkab vazifa. Assambleyer dasturni qayta ishlashda hisoblash bosqichi deyiladi yig'ilish vaqti. Mundarija 1 Assambleya tili sintaksisi 2 Terminologiya 3 Asosiy tushunchalar 3.1 Yig'uvchi 3.1.1 Yo'llanma soni 3.1.2 Yuqori darajadagi montajchilar 3.2 Assambleya tili 4 Til dizayni 9 Qo'shimcha o'qish 10 Tashqi havolalar Assambleya tili sintaksisi Assambleya tili a dan foydalanadi mnemonik har bir past darajani namoyish qilish mashina ko'rsatmasi yoki opkod, odatda har biri me'moriy reestr, bayroq Ko'pgina operatsiyalar bir yoki bir nechtasini talab qiladi operandlar to'liq yo'riqnomani shakllantirish uchun. Aksariyat montajchilar nomlangan doimiylarga, registrlarga va yorliqlar dastur va xotira joylari uchun va hisoblashi mumkin iboralar operandalar uchun. Shunday qilib, dasturchilar zerikarli takrorlanadigan hisob-kitoblardan xalos bo'lishadi va assembler dasturlari mashina kodiga qaraganda ancha o'qiydi. Arxitekturaga qarab, ushbu elementlar maxsus ko'rsatmalar yoki uchun birlashtirilishi mumkin manzillar rejimlari foydalanish ofsetlar yoki boshqa ma'lumotlar, shuningdek belgilangan manzillar. Ko'pgina montajchilar dasturni ishlab chiqishni osonlashtirish, yig'ish jarayonini boshqarish va yordam berish uchun qo'shimcha mexanizmlarni taklif qilishadi disk raskadrovka. Terminologiya A so'l yig'uvchi o'z ichiga oladi makroinstruktsiya (parametrlangan) montaj tili matni nom bilan ifodalanishi va shu nom yordamida kengaytirilgan matnni boshqa kodga kiritish uchun ishlatilishi mumkin. A o'zaro faoliyat yig'uvchi (Shuningdek qarang o'zaro faoliyat kompilyator ) - bu kompyuterda ishlaydigan yoki operatsion tizim (the mezbon olingan kod ishlaydigan tizimdan boshqa turdagi () maqsadli tizim). O'zaro faoliyat montaj, masalan, dasturiy ta'minotni ishlab chiqishni qo'llab-quvvatlash uchun resurslarga ega bo'lmagan tizimlar uchun dasturlarni ishlab chiqishni osonlashtiradi o'rnatilgan tizim yoki a mikrokontroller. Bunday holatda, natijada ob'ekt kodi orqali maqsadli tizimga o'tkazilishi kerak faqat o'qish uchun xotira (ROM, EPROM va boshqalar), a dasturchi (faqat o'qish uchun mo'ljallangan xotira qurilmada, masalan, mikrokontrollarda bo'lgani kabi) yoki ob'ekt kodining aniq bit-bit nusxasini yoki ushbu kodning matnga asoslangan ko'rinishini ishlatadigan ma'lumotlar havolasi (masalan Intel hex yoki Motorola S-rekord ). A yuqori darajadagi montajchi yuqori darajadagi tillar bilan tez-tez bog'langan til abstraktsiyalarini ta'minlaydigan dastur, masalan, rivojlangan boshqaruv tuzilmalari (IF / THEN / BOShQA, DO CASE va hk) va tuzilmalar / yozuvlar, uyushmalar, sinflar va to'plamlarni o'z ichiga olgan yuqori darajadagi mavhum ma'lumotlar turlari. A mikroassembler tayyorlashga yordam beradigan dastur mikroprogram, deb nomlangan proshivka, kompyuterning past darajadagi ishlashini boshqarish. A meta-montajchi bu "assotsiatsiya tilining sintaktik va semantik tavsifini qabul qiladigan va shu til uchun assambleyer yaratadigan dastur".[10] Uchun "Meta-Symbol" montajchilari SDS 9 seriyasi va SDS Sigma seriyasi kompyuterlarning meta-montajchilari.[11][nb 1] Sperry Univac uchun Meta-Assembler taqdim etdi UNIVAC 1100/2200 seriyali.[12] inline assembler (yoki o'rnatilgan montajchi) - bu yuqori darajadagi til dasturida joylashgan assembler kodidir.[13] Bu ko'pincha apparatga to'g'ridan-to'g'ri kirishni talab qiladigan tizim dasturlarida qo'llaniladi. Asosiy tushunchalar Yig'uvchi An montajchi dastur yaratadi ob'ekt kodi tomonidan tarjima qilish mnemonika va sintaksis operatsiyalar va ularning ekvivalentlariga tartiblash uchun rejimlar. Ushbu vakolatxona odatda o'z ichiga oladi operatsion kod ("opkod ") hamda boshqa nazorat bitlar va ma'lumotlar. Assembler shuningdek doimiy ifodalarni hisoblab chiqadi va aniqlaydi ramziy ismlar xotira joylari va boshqa narsalar uchun.[14] Ramziy ma'lumotnomalardan foydalanish - yig'uvchilarning asosiy xususiyati bo'lib, dasturni o'zgartirgandan so'ng zerikarli hisob-kitoblarni va manzilni yangilashni tejaydi. Aksariyat montajchilar o'z ichiga oladi so'l matnli almashtirishni amalga oshirish uchun qulayliklar - masalan, ko'rsatmalarning umumiy qisqa qatorlarini yaratish uchun mos ravishda, o'rniga deb nomlangan subroutines. Ba'zi montajchilar ba'zi bir oddiy turlarini bajarishlari mumkin ko'rsatmalar to'plami - o'ziga xos optimallashtirish. Buning aniq misollaridan biri hamma joyda bo'lishi mumkin x86 turli sotuvchilardan yig'uvchilar. Qo'ng'iroq qilindi sakrash o'lchamlari,[14] ularning ko'pchiligi istak bo'yicha istalgan miqdordagi paslarda sakrash-buyruq almashtirishlarni (qisqa yoki nisbiy sakrashlar bilan almashtirilgan uzun sakrashlar) bajarishga qodir. Boshqalar, hatto ba'zi bir montajchilar kabi oddiy qayta tuzish yoki ko'rsatmalarni kiritishi mumkin RISC me'morchilik bu aqlni optimallashtirishga yordam beradi ko'rsatmalarni rejalashtirish ekspluatatsiya qilish CPU quvuri iloji boricha samarali.[iqtibos kerak ] Assambleyerlar 1950 yildan beri mavjud bo'lib, bu mashina tilining ustki pog'onasi va undan oldin yuqori darajadagi dasturlash tillari kabi Fortran, Algol, Kobol va Lisp. Bundan tashqari, bir nechta tarjimonlar va yarim avtomatik sinflar mavjud kod generatorlari ikkala assambleya va yuqori darajadagi tillarga o'xshash xususiyatlarga ega, bilan Tezlik kodi ehtimol taniqli misollardan biri sifatida. Turli xil bo'lgan bir nechta montajchilar bo'lishi mumkin sintaksis ma'lum bir uchun Markaziy protsessor yoki ko'rsatmalar to'plami arxitekturasi. Masalan, a dagi registrga xotira ma'lumotlarini qo'shish bo'yicha ko'rsatma x86 - oilaviy protsessor bo'lishi mumkin eax qo'shing, [ebx], asl nusxada Intel sintaksisi, ammo bu yozilgan bo'lar edi addl (% ebx),% eax ichida AT&T sintaksisi tomonidan ishlatilgan GNU Assembler. Turli xil ko'rinishga qaramay, turli xil sintaktik shakllar odatda bir xil sonni hosil qiladi mashina kodi. Bitta assembler sintaktik shakllardagi o'zgarishlarni va ularning aniq semantik talqinlarini qo'llab-quvvatlash uchun turli xil rejimlarga ega bo'lishi mumkin (masalan. FASM -sintaksiya, TASM -sintaksis, ideal rejim va boshqalar x86 yig'ilishi dasturlash). Yo'llanma soni Ob'ekt faylini yaratish uchun manba orqali qancha o'tish kerakligiga (assambleyer necha marta manbani o'qiydi) asoslangan ikkita turdagi assambleyalar mavjud. Bir martalik montajchilar manba kodidan bir marta o'ting. Belgilanmasdan oldin ishlatiladigan har qanday belgi talab qilinadi "xato" ob'ekt kodining oxirida (yoki, hech bo'lmaganda, belgi belgilanadigan joydan ilgari emas) bog'lovchi yoki "orqaga qaytish" va hali aniqlanmagan belgi ishlatilgan joyda qolgan joyni ustiga yozish uchun yuklagich. Ko'p o'tish moslamalari birinchi belgilarda barcha belgilar va ularning qiymatlari ko'rsatilgan jadval yarating, so'ngra kodni yaratish uchun keyingi paslarda jadvaldan foydalaning. Ikkala holatda ham, keyingi belgilarning manzillarini hisoblash uchun montajchi har bir ko'rsatmaning hajmini dastlabki o'tishda aniqlay olishi kerak. Bu shuni anglatadiki, agar keyinchalik aniqlangan operandga tegishli operatsiyaning hajmi operandning turiga yoki masofasiga bog'liq bo'lsa, operatsiya birinchi marta duch kelganda assambleyachi pessimistik taxmin qiladi va agar kerak bo'lsa, uni bir yoki bir nechtasi bilan to'ldiring. "operatsiya yo'q "ko'rsatmalar keyinroq o'tish yoki xatolik bilan. Assambleyada teshiklarni optimallashtirish, pessimistik kodni maqsaddan aniq masofaga moslashtirilgan kod bilan almashtirishga imkon berish uchun manzillar o'tish joylari o'rtasida qayta hisoblanishi mumkin. Bitta o'tish moslamalarini ishlatishning asl sababi xotira hajmi va yig'ilish tezligi edi - ko'pincha ikkinchi o'tish simvollar jadvalini xotirada saqlashni talab qiladi (ishlov berish uchun) oldinga yo'naltirilgan ma'lumotnomalar ), dastur manbaini orqaga qaytarish va qayta o'qish lenta yoki pastki qismini qayta o'qish kartalar yoki zarb qilingan qog'oz lenta. Keyinchalik ancha katta xotiralarga ega bo'lgan kompyuterlar (ayniqsa diskni saqlash joyi) barcha kerakli qayta ishlashlarni bunday qayta o'qimasdan amalga oshirish uchun bo'sh joyga ega bo'lishdi. Ko'p o'tish moslamasining afzalligi shundaki, xatolarning yo'qligi bog'lash jarayoni (yoki dastur yuki agar assembler to'g'ridan-to'g'ri bajariladigan kodni ishlab chiqaradigan bo'lsa) tezroq.[15] Misol: quyidagi kod parchasida bitta o'tish moslamasi orqaga yo'naltirilgan ma'lumot manzilini aniqlay oladi BKWD bayonotni yig'ishda S2, lekin to'g'ridan-to'g'ri ma'lumotnoma manzilini aniqlay olmadi FWD filial bayonotini yig'ishda S1; haqiqatdan ham, FWD aniqlanmagan bo'lishi mumkin. Ikkita o'tish moslamasi 1-o'tishdagi ikkala manzilni aniqlaydi, shuning uchun ular 2-passda kod yaratishda ma'lum bo'ladi. Download 124.19 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling