Теория компиляторов-2. Л.41 Теория компиляторов Часть II Лекция 4. Объектный файл и виртуальная машина
Теория компиляторов-2. Л.42 Формат объектного файла 3 основных сегмента: сегмент текста (исполняемые инструкции); сегмент данных (располагаются глобальные данные); сегмент стека (временные переменные).
Теория компиляторов-2. Л.43 Сегменты Заголовок. Содержит необходимую управляющую информацию: –DATA_LEN – размер сегмента данных в словах. –TEXT_LEN – количество командных слов в сегменте текста. –STACK_LEN– размер сегмента стека в словах. –прочая служебная информация, определяющая конфигурацию ВМ: количество ФУ, размер регистрового файла и т.п. => гибкая система. Сегмент данных.. Содержит таблицу имен. Количество имен = DATA_LEN. Описание имени (тег): –Тип (число (0), строка (1)) –Вид (константа (0), переменная (1)) –Значение. Запись в сегменте данных – это тройка (вид, тип, значение) Сегмент текста.. Содержит командные слова (с произвольным количеством слогов). (Тетрада 1 ; Тетрада 2 ; … Тетрада n ) Тетрада i =(OP, A 1, A 2, R)
Теория компиляторов-2. Л.44 Пример объектного файла DATA_LEN = 6 TEXT_LEN = 4 STACK_LEN = 20 ; Описание архитектуры ВМ FU_NUM = 3; Количество функциональных устройств в ВМ RF_SIZE = 10; Количество регистров в регистровом файле (1,0,50); 000: переменная, число, 50 (1,0,3.14); 001: переменная, число, 3.14 (0,1,qwerty); 002: константа, строка символов (1,0,1); 003: переменная, 1 (1,1,any string); 004: переменная, строка символов (0,0,0); 005: константа, число, 0 ((+,0,1,6)) ((+,1,6,6);(*,3,5,7);(:=,1,5,)) ((out,4,,);(+,7,3,1)) ((out,1,,))
Теория компиляторов-2. Л.45 Образ программы в памяти Загрузчик Размещение. Выделение места для программы в оперативной памяти. Перемещение. Настройка всех величин в программе, зависящих от физических адресов в соответствии с адресами выделенной программе памяти. Загрузка. Фактическое размещение структур объектной программы в памяти и инициация ее выполнения.
Теория компиляторов-2. Л.46 Архитектура виртуальной машины
Теория компиляторов-2. Л.47 Особенности ВМ 1.Содержит N функциональных устройств. 2.Каждое ФУ имеет M регистров общего назначения и регистр флагов. 3.ВМ использует микропрограммное управление. 4.Организация памяти – теговая 5.Существует общий для всех ФУ регистровый файл.
Теория компиляторов-2. Л.48 Базовые инструкции ВМ Арифметические операции sum R1, R2, R3R3 := R1 + R2 sub R1, R2, R3R3 := R1 - R2 mul R1, R2, R3R3 := R1 * R2 div R1, R2, R3R3 := R1 / R2 Операции ввода-вывода out Rвывод R на терминал in Rввод значения R с терминала Операции управления BR BRZ BRP BRM Прочие операции exitзавершить выполнение программы nopпустая инструкция Операции регистр-память load A, Rзагрузка аргумента, находящегося по адресу A, в регистр R: A R store R, Aсохранение регистра R в ячейке памяти по адресу A: R A Операции регистр-регистр set R1, R2R2 := R1 Операции память-память mov A1, A2A2 := A1
Теория компиляторов-2. Л.49 Микрокоманды mc + A1 A2 A3 load A1,RA load A2,RB sum RA, RB, RC store RC, A3 # (+, 101, 240, 012) load 101,RA load 240,RB sum RA, RB, RC store RC, 012