2.3-§ Qurilish vaqti va dinamik xotirani qayta taqsimlash
Ko'p dasturlash tizimida dastur asosiy xotiraga o'qilishi, bir muddat ishlashi, diskka yozilishi va keyin bajarish uchun asosiy xotiraga qayta o'qilishi mumkin. Ko'p sonli dasturlarga ega murakkab tizimda dastur har safar xotiraning bir joyiga o'qilishiga ishonch hosil qilish qiyin. 3-rasmda xotirada allaqachon ajratilgan dastur bog'lovchi dastlab joylashtirgan 100-manzilda emas, balki 400-manzilda yuklansa nima bo'lishini ko'rsatadi. Barcha xotira manzillari noto'g'ri bo'lib chiqadi va bu xotira taqsimoti haqida hech qanday ma'lumot yo'qligida.
3-rasmdagi bajariladigan dastur 300 ta manzilga yuqoriga siljigan. Ko'pgina buyruqlar endi noto'g'ri xotira manzillariga kirishadi
Xotirada allaqachon bog'langan va ajratilgan dasturlarni ko'chirish muammosi bevosita jismoniy xotiraning mutlaq manzillariga ramziy nomlarni yakuniy bog'lash momentiga bog'liq. Dastur xotira manzillari uchun ramziy nomlarni o'z ichiga oladi (masalan, BR L). L nomiga mos keladigan asosiy xotiradagi manzilni aniqlash vaqti bog'lanish vaqti deb ataladi. Kamida oltita majburiy vaqt bor:
Dastur yozilayotganda.
Dastur efirga uzatilganda.
Dastur ulanganda, lekin yuklanishidan oldin.
Dastur yuklanganda.
Adreslash uchun foydalaniladigan asosiy registr yuklanganda.
Kerakli manzilni o'z ichiga olgan buyruq bajarilganda.
Agar manzilni o'z ichiga olgan buyruq bog'langandan keyin xotirada qayta taqsimlangan bo'lsa, bu manzil noto'g'ri (agar havola qilingan ob'ekt xotirada ham ko'chirilgan bo'lsa). Agar tarjimon bajariladigan ikkilik kodni yaratsa, u holda tarjima paytida bog'lanish sodir bo'ladi va dastur tarjimon tomonidan ko'rsatilgan manzildan ishga tushirilishi kerak.
Bog'lovchi vazifalari bo'limida biz muhokama qilgan bog'lash strategiyasining bir o'ziga xos xususiyati bor: dastur tomonidan talab qilinadigan barcha protseduralar dastur boshlanishidan oldin bog'langan. Biroq, agar dastur virtual xotiraga ega kompyuterda ishlay boshlashdan oldin barcha havolalar o'rnatilsa, virtual xotira imkoniyatlaridan to'liq foydalanilmaydi. Ko'pgina dasturlarda faqat ma'lum sharoitlarda chaqiriladigan protseduralar mavjud. Misol uchun, kompilyatorlar kamdan-kam qo'llaniladigan bayonotlarni kompilyatsiya qilish yoki kam uchraydigan xatolarni tuzatish uchun tartiblarni o'z ichiga oladi. Alohida tuzilgan protseduralarni bog'lashning yanada moslashuvchan usuli har bir protsedurani birinchi chaqirilgan paytda bog'lashdir. Bu jarayon dinamik bog'lanish deb ataladi. Bu MULTICS tizimida dinamik bog'lanish birinchi marta qo'llanilgan va ba'zi jihatlari bo'yicha bu amalga oshirish beqiyos bo'lib qolmoqda. Keling, bir nechta tizimlar bo'ylab dinamik bog'lanish misollarini ko'rib chiqaylik.
Xulosa
Assambleya tili - bu mashina tilining ramziy vakili. Har bir turdagi kompyuter uchun yig'ilish tili har xil. Assambleya tili dasturi - bu xotira segmentlari deb nomlangan xotira bloklari to'plami. Har bir segmentda til jumlalari to'plami mavjud bo'lib, ularning har biri dastur kodining alohida satrini egallaydi. Yig'ilish jumlalari to'rt turga bo'linadi: buyruqlar yoki ko'rsatmalar, makroslar, direktivalar, sharhlar satrlari.
Dastur matnini yozishda barcha lotin harflari yaroqli belgilar: A-Z, a-z... Bunday holda, katta va kichik harflar teng deb hisoblanadi; dan raqamlar 0 oldin 9 ; belgilar ? , @ , $ , _ , & ; ajratgichlar , . () < > { } + / * % ! " " ? = # ^ .
Assembler bayonotlarining quyidagi turlari va assambleyer iboralarini shakllantirish sintaktik qoidalari qo'llaniladi. arifmetik operatorlar, siljish operatorlari, taqqoslash operatorlari, mantiqiy operatorlar, indeks operatori, turni bekor qilish operatori, segmentni bekor qilish operatori, struktura turiga nom berish operatori, ifoda manzilining segment komponentini olish operatori, ifoda ofsetini olish operatori.
Buyruqlar tizimi 8 ta asosiy guruhga bo'lingan.
Do'stlaringiz bilan baham: |