Вивчення принципів побудови препроцесорів (обробка директив підключення файла, умовної компіляції та обробка макросів)

Страницы работы

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.

Содержание работы

Лабораторна робота № 2

Препроцесор

Мета роботи:

Освоїти принципи написання програм, які обробляють текст програми на мові асемблера, яка містить директиви препроцесора та макрокоманди.

Індивідуальне завдання:

 Створити програму – препроцесор системи команд макропроцесора мови асемблера, а також  підготовка первісного файла до компіляції.

Розробка алгоритму:

·  Відкриття вхідного файлу;

·  Пошук та обробка директив include;

·  Формування тимчасового файла з усіма підключаемими модулями;

·  Відкриття тимчасового файла;

·  Пошук та обробка директив умовної компіляції IFB, ELSE, ENDIF

·  Запис другого тимчасового файла, в якому оброблені директиви умовної компіляції;

·  Відкриття другого тимчасового файла;

·  Пошук макровизначень та формування списку макросів;

·  Пошук макровикликів та їх заміна;

·  Формування результуючого файла;

Алгоритм функції обробки директиви include


Алгоритм функції обробки Алгоритм функції обробки

директиви ifb:макросів:


Типы данных:

У програмі були використані наступні данні:

Структура для збереження тіл макросів:

struct mac{

   char string[255];

   mac * next;

};

struct list_mac{

   char name[34];

   char prm[100];

   int noprm;

   mac * body;

   list_mac * next;

   list_mac * prev;

};

Змінні:

name1 – Ім’я тимчасового файла після обробки директив includ ;

name2 - Ім’я тимчасового файла після обробки директив ifb;

Результат роботи програми:

;-------------------------------- Included file 1

datas segment

  a dd(?)

  as db 'the is a text'

datas ends

code1 segment

        cs:code

        :----------------- А это компилить

        mul dx,cx

        add ax,bx

        int 21h

code1 ends

;-------------------------------- end of included file 1

        mov ax,5

        nop

        mov ax,FUNCTION

        cpuid

        push bx

; Include file 2 - void

        NOP

;--- insert macro AP with paramline: ax,bx

    push ax

    push bx

    pop ax

    pop bx

;--- insert macro AP with paramline: si,dx

    push si

    push dx

    pop si

    pop dx

;--- insert macro aaa with paramline: ax,bx,cx

    mov ax, bx

    inc cx

        END

Висновок:

Вивчені принципи побудови препроцесорів (обробка директив підключення файла, умовної компіляції та обробка макросів).

Похожие материалы

Информация о работе

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.