Мова програмування Assembler

Методическое пособие - Компьютеры, программирование

Другие методички по предмету Компьютеры, программирование

такі мови поділяються на два великі класи: інтерпретовані та трансльовані.

Інтерпретовані це мови, програми на яких перетворюються на машинний код тільки під час виконання. Загальна схема роботи програм на таких мовах має вигляд:

 

 

На цій діаграмі ми бачимо, що між програмою та операційною системою є ще "перетворювач" (інтерпретатор), який послідовно читає програмний код, і послідовно на льоту перетворює його на машинний код. Прикладом такої мови є мова Rexx, розроблена IBM для операційної системи PCDOS. Такі програми, зазвичай, повільніші за трансльовані, але їх простіше редагувати, оскільки виконується не машинний код, а безпосередньо текст програми: рядок за рядком.

Трансльовані це такі мови, програмний код яких цілком може бути безпосередньо перетворений у машинний код, і поширюватись у вигляді цілісного двійкового (виконуваного) модуля. Такий підхід дозволяє аналізувати код, і оптимізувати його, враховуючи при перетворенні не лише поточний рядок, а й попередні, і наступні. Такий процес називається компіляцією:

 

 

Перші два етапи називаються компіляцією, тобто утворення певного кістяку, за якими буде будуватись вихідний програмний код. Третій етап називається трансляцією, а останній компоновкою.

Таким чином утворюється двійковий файл, який містить машинний код, і може бути зрозумілий операційній системі та безпосередньо процесору. Це значно пришвидшує програму, і тоді виконання програми має вигляд.

 

 

Як видно, ніяких проміжних програм при цьому немає, тобто програма безпосередньо працює з системою, а відтак швидше.

 

4. Моделі памяті та загальна структура програм

 

Кожна системна програма обовязково повинна відповідати певному типу памяті. Цим визначається, яким чином ця програма завантажуватиметься в память, які на неї накладатимуться обмеження, та які ресурси їй доступні. Ці моделі памяті однакові як в асемблері, так і в С, тому доцільніше їх розглянути тут. Програми складаються з сегментів (частин). Кожна з яких може бути не більша за 64 Кб. Сегмент може містити код або дані, відповідно до термінів Фон Неймана. Програма може мати сегментів трьох типів: коду, даних та стеку. Відповідно, існує 6 типів моделей памяті, які задають співвідношення та обмеження на ці сегменти:

Tiny (дуже малий). Дані та код знаходяться в один та тільки одному сегменті як у двійковому, так і програмному коді.

Small (малий) Дані та код по замовчанню знаходяться в одному і тому ж самому сегменті після компіляції, але в програмному коді small можуть бути розділені на сегмент даних.

Compact (компактний). Код знаходиться в одному сегменті, але кожна змінна фактично у своєму власному сегменті, оскільки адресується не за локальним посиланням, а шляхом точного вказання комірки. Така структура застосована, коли змінні містять великі обсяги даних.

Medium (середній) протилежний попередньому. Дані знаходяться в одному сегменті, а кожна процедура у своєму власному. Ця модель памяті дає оптимізацію при великих обсягах програмного коду в процедурах.

Large (великий) позначає тип памяті, де розподіл програмного коду по сегментах відбувається за вибором програміста.

Flat (плоский) програма взагалі не поділяється на сегменти, але може містити обсяг коду даних, більше за 64 Кбайт. Деякі операційні системи такої моделі памяті не підтримують, однак це можна обійти за допомогою драйвера-розширювача (наприклад, dos2gw). Така модель памяті використовується для великих програм: Windows, Linux тощо.

Лекція 2 Класифікація мов програмування, основні поняття програмування

 

  1. Класифікація мов програмування за семантикою, за призначенням, за рівнем використання, за способом компіляції
  2. Поняття "транслятор", "компілятор", "інтерпретатор", "компоновщик"
  3. Загальний алгоритм створення програми

 

1. Класифікація мов програмування за семантикою, за призначенням, за рівнем використання, за способом компіляції

 

Мови програмування можна класифікувати за декількома параметрами. Найбільш поширеними є класифікація за семантикою, за призначенням, за рівнем використання та за способом компіляції. Отже, розглянемо їх:

1. За семантикою мови поділяються на імперативні та декларативні. Імперативні мови програмування є детальним викладенням якогось процесу обчислення або дій, які повинен виконати процесор або периферійний пристрій, або ж програмний засіб. Прикладом імперативних мов може слугувати будь-яка сучасна мова програмування, наприклад, C чи Assembler. На відміну від них, декларативні мови передбачають насамперед формулювання мети, тобто кінцевого результату. До декларативних мов належать спеціалізовані мови, такі як Prolog або Occam, але найбільш поширеними мовами цього типу є так звані "оболонки", себто командні інтерпретатори, які існують у кожній сучасній операційній системі, і в яких користувач дає операційній системі виконати певні дії над ресурсом.

2. За призначенням мови поділяються на алгоритмічні, математичні, логічні, функціональні, обєктно-орієнтовані та спеціалізовані. До алгоритмічних належать всі мови, головним завданням яких є виконання певних задач, які піддаються формалізації. Такі мови містять ключові слова для утворення основних елементів алгоритмів розгалужень, точок вибору, циклів, функцій тощо та відповідни?/p>