Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CП_Ответы.doc
Скачиваний:
15
Добавлен:
27.09.2019
Размер:
281.09 Кб
Скачать
  1. Опишите директиву «model flat» (masm32). Функциональное назначение и принцип ее работы. Перечислите модели памяти с описанием назначения модели и указанием типа кода и типа данных.

model flat - плоская модель памяти называется моделью FLAT или сплошной (несегментированной) моделью памяти. Flat — это 32- или 64-битная tiny. Один сегмент, который содержит всё: и код, и данные и тд. А указатели — это смещения от начала сегмента (естественно, 32- или 64-битные).

Таким образом, составляя 32-разрядные программы для OS\2 можно забыть про селекторы, сегментные регистры, модификаторы near и far. Содержимым сегментных регистров управляет ОС. Программисту это делать запрещено. В состав программного интерфейса OS\2 входят многочисленные функции, с помощью которых приложение может получать блоки памяти нужного размера и с нужными характеристиками.

  1. Поясните механизм формирования локальных переменных программы на ассемблере (masm32) при трансляции.

Транслятор генерирует необходимый код пролога, для резервирования необходимого места в стеке, вместе с параметрами и обеспечивает доступ по символьному имени.

Директива LOCAL в описании процедуры задает в кадре стека переменные, локальные для процедуры. Аргументы имеют внутреннее представление в виде отрицательных смещений от регистра BP или EBP.

При определении локальных переменных процедуры используется следующий синтаксис:

LOCAL аргумент [,аргумент] . [=идентификатор]

  1. Опишите функциональное назначение и способ представления нуль-терминированной строки в программе на ассемблере (masm32).

Нуль-терминированная строка или ASCIZ-строка (от названия директивы ассемблера .asciz) — это способ представления строк в памяти компьютера, при котором конец строки отмечает специальный нуль-символ (код ASCII 0x00). Функциональное назначение нуль-терминанта - это указание на конец строки. Символы после нуль-символа называются мусором — это случайные данные, которые могли остаться в буфере от предыдущих строк или от других использований памяти.

Для ссылки на нуль-терминированную строку применяется указатель на первый её символ.

Пример:

str db 'Строка',0 ;нуль-терминированная строка

  1. Поясните механизм воздействия на порядок выполнения инструкций программы на ассемблере (masm32) при использовании директивы «.Start».

Директива start является точкой входа в программу. Символьное имя Start не обязательное и не зарезервированное, его можно изменять на любое.

Синтаксис такой директивы:

start:

;тело программы

end start

Механизм воздействия такой директивы на выполнения инструкций программы на ассемблере таков, что start: это точка входа в программу (отсюда начинается выполнение), после чего выполняются все инструкции по очереди (построчно), а end start конец программы т.е. всё что записано после end start транслятор не воспринимает, тут же можно делать пометки и т.д. (можно писать всё что угодно!!!).

  1. Назовите этапы трансляции. Опишите общую схему работы компилятора.

Этапы трансляции: анализ, синтез (подготовка к генерации кода, генерация кода).

На этапе анализа распознается текст исходной программы, создаются и заполняются таблицы идентификаторов. Результатом анализа является некое внутреннее представление программы, понятное компилятору. На этапе синтеза из внутреннего представления программы и информации из таблицы идентификаторов, получается результирующая объектная программа. Подготовка к генерации кода − на этой фазе компилятор выполняет предварительные действия, непосредственно связанные с синтезом текста результирующей программы: идентификация элементов языка, распределение памяти и т.п. Эта подготовка ещё не ведёт к порождению текста на выходном языке. Генерация кода − это фаза, на которой непосредственно порождаются команды, составляющие предложения выходного языка и текст результирующей программы в целом. Фаза генерации кода основная на этапе синтеза результирующей программы. Кроме этого, генерация обычно включает в себя и оптимизацию. Оптимизация − это процесс, связанный с обработкой уже порожденного текста и оказывающий существенное влияние на качество и эффективность результирующей программы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]