Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Контрольные работы » Проектування компілятора

Реферат Проектування компілятора





римані в результаті перших двох проходів. br/>

4. Вихідний текст програми компілятора


# include ;

# include ;

# include ;

# include ;

# include ;

# include ; i, c, npr, seg, cnt, pmdf, psym, stk [80], pole [4] [8];

// npr - номер проходу, seg - номер сегмента, cnt - лічильник розміщення команд

// pmdf - покажчик на кінець запису модифікатора, psym - покажчик на кінець

// таблиці міток, stk - сюди зчитується рядок, pole - поля отримані з

// ліченої строкі.optab [8] [4] = {{В«movВ»}, {В«negВ»}, {В«je 0В»}, {В«incВ»},// таблиця

{В«shlВ»}, {В«adcВ»}, {В«intВ»}, {В«dw 0В»}},// ​​Мнемокод [8] [3] = {{В«axВ» }, {В«cxВ»}, {В«dxВ»}, {В«bxВ»},// ​​таблиці позначень

{В«spВ»}, {В«bpВ»}, {В«siВ»}, {В«diВ»}},// ​​регістрів і [4] [3] = {{В«esВ»} , {В«csВ»}, {В«ssВ»}, {В«dsВ»}},// ​​сегментних регістрів [17] = {В«0123456789abcdefВ»}, [20];// таблиця модифікаторів

struct segt {

char name [8]; len;

}; segtab [2];// таблиця сегментовsymt {name [8]; sgm; dsp;

}; symtab [10];// таблиця метокstk2pol (char st [80], char pol [4] [8]);// розбиття рядка на поляfindop (char op [8]); // пошук мнемокода в OPTABop2code (char nmb, char dis, char pol [4] [8], char code [4]);

// на вході мнемокод, на виході довга команди і об'єктний кодfindreg (char reg [8]);// пошук обознач. регістра в REGTABfindsegr (char reg [8]);// пошук обознач. сег. регістра в SEGRTAB

char findsym (char sym [8]);// пошук мітки в SYMTAB

int str2num (char str [8]);// переклад рядка в соотв. чіслоfindch (char c);// пошук пошук символу в HEXTAB

int step (int a, int b);// зведення A в ступінь B

int main ()

{cod [4], lent,// ​​код і довжина команди;// номер обробника команди * ft;// вихідний асемблерний файлfn [] = {В«myprim.asmВ»};

ft = fopen (fn, В«r +В»); ();

//////////////////////////// first passage (В» *** first passage *** n");

seg = 0; = 0; = 0; (! feof (ft))// повторювати поки не кінець файлу

{fgets (stk, 80, ft);// читання рядки (В« n"); (); (stk); pol (stk, pole);// розбиття рядка на поля

if (! strcmp (pole [1], В«segmentВ»))// if друге поле SEGMENT

{seg + +;// збільшення номера сегмента, запис = 0;// назви ...


Назад | сторінка 4 з 10 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Пошук шляхів збільшення фінансових ресурсів регіону
  • Реферат на тему: Аналіз доходів, одержуваних торговим підприємством, пошук резервів їх збіль ...
  • Реферат на тему: Розробка програми для Windows, що здійснює пошук відбитків пальців
  • Реферат на тему: Хеш пошук
  • Реферат на тему: Пошук алмазів