операнда: віднімає операнд з нуля і додає одиницю. Операндом може бути байт або слово в регістрі або в пам'яті. p align="justify"> Прапори: Команда впливає на прапори AF, CF, OF, PF, SF і ZF.
Об'єктний код: | 1111011w | mod011r/m |: Зрушення вліво або вправо
Операція: Виконує зсув бітів вліво.
Прапори: Команда впливає на прапори CF, OF, PF, SF і ZF (прапор AF не визначено).
Об'єктний код: SAL/SHL: | 110100cw | mod100r/m |.
3. Алгоритми і таблиці компілятора
Компілятор, що розробляється в даній курсовій, є двох-прохідним. Він використовує наступні системні таблиці. - Таблиця Мнемокод. Містить наступні поля: name - мнемокод. SYMTAB - таблиця символічних імен. Містить наступні поля: name - символічне ім'я; sgm - сегмент, в якому воно оголошено; dsp - зміщення в сегменті. SEGTAB - таблиця сегментів. Містить наступні поля: name - ім'я сегмента; len - довжина сегмента в байтах. p align="justify"> Крім вище перерахованих таблиць, використовуються два тимчасових файлу призначених для зберігання об'єктного код двох сегментів. Також використовується таблиця modif використовуваних посилань (записи модифікатори). p align="justify"> На першому проході відбувається заповнення таблиці символічних імен і таблиці використовуються сегментів. Крім того, визначаються формати команд, без чого неможливо заповнення системних таблиць. Мнемокод обробляються наступним чином. Вся рядок розбивається на поля. Якщо в рядку є символічне ім'я, то воно заноситься в таблицю. Далі визначається поле з мнемокод. У таблиці Мнемокод відшукується даний мнемокод і визначається індекс обробника. Якщо мнемокод в таблиці відсутня, то генерується помилка. Після того, як індекс отриманий, обробка рядка передається відповідному обробнику. На даному проході обробник визначає формат команди (зокрема її довжину) і відповідним чином змінює лічильник розміщення. p align="justify"> До початку другого проходу адреси всіх символічних імен відомі. Під час другого проходу остаточно генеруються об'єктні коди команд. Якщо в команді використовується символічне ім'я, то воно відшукується в таблиці символічних імен, і у відповідне поле об'єктного коду записується потрібне значення (це може бути адреса символічного імені або зсув до даного імені в залежності від використовуваної команди). Об'єктний код записується в допоміжні файли. Крім того, якщо об'єктний код містить поле, що потребує модифікації, то в таблицю vmodif записується запис-модифікатор. p align="justify"> Складання об'єктного файлу.
Після закінчення другого проходу є вся необхідна інформація для того, щоб скласти об'єктний файл. Записи, які є незмінними для всіх об'єктних файлів, записуються у вигляді констант. Решта записів формуються на підставі тих даних, які були от...