Теорія операційної системи

:: Меню ::

Головна
Представлення даних в обчислювальних системах
Машинні мови
Завантаження програм
Управління оперативною пам'яттю
Сегментна і сторінкова віртуальна пам'ять
Комп'ютер і зовнішні події
Паралелізм з точки зору програміста
Реалізація багатозадачності на однопроцесорних комп'ютерах  
Зовнішні пристрої
Драйвери зовнішніх пристроїв
Файлові системи
Безпека
Огляд архітектури сучасних ОС

:: Друзі ::

Карта сайту
 

:: Статистика ::

 

 

 

 

 

Минет порно Томск | труба corex sn8
 

Багатопрохідне асемблювання

При асемблюванні з використанням міток виникає специфічна проблема: команди можуть посилатися на мітки, визначені як до, так і після них по тексту програми. Отже, операндом команди може виявитися мітка, яка ще не визначена. Адреса, відповідна цій мітці, ще невідома, тому ми повинні будемо, так або інакше, повернутися до команди, що посилається на неї, і записати адресу. Ця ж проблема виникає і при компіляції ЯВУ: попереднє визначення змінних і процедур вказує тип змінної і кількість і типи параметрів процедури, але не їх розміщення в пам'яті, а саме воно нас і цікавить при генерації коди.
Дві техніка вирішення цієї проблеми називаються одно- і двопрохідним асемблюванням [Баррон 1974].
При двопрохідному асемблюванні, на першому проході ми визначаємо адреси всіх описаних в програмі символів і зберігаємо їх в проміжній таблиці. На другому проході ми здійснюємо власне асемблювання — генерацію коди і розставляння адрес. Якщо адресне поле має змінну довжину, визначення адреси мітки може привести до зміни довжини коди, що посилається на неї, тому на такій архітектурі виявляється доцільним трьох- і більш прохідне асемблювання. При однопрохідному асемблюванні, ми запам'ятовуємо всі крапки, з яких походять заслання вперед, і, визначивши адресу символу, повертаємося до цих крапок і записуємо в них адресу. При однопрохідному асемблюванні доцільно зберігати код, в якому ще не всі мітки розставлені, в оперативній пам'яті, тому в старих комп'ютерах двопрохідні асемблери були широко поширені. Втім, сучасні багатопрохідні асемблери також зберігають проміжні представлення програми в пам'яті, тому кількість проходів в конкретній реалізації асемблера представляє хіба що теоретичний інтерес.

 

:: Реклама ::

Курс метан Дека купить.

 

:: Посилання ::


 

 

 


Copyright © Kivik, 2017