Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Полный отчёт по работе.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.8 Mб
Скачать

3.Описание инструментов

3.1.Visual Studio и расширения

Для решения поставленной задачи была использована IDE Microsoft Visual Studio 2012. Visual Studio включает в себя редактор исходного кода с поддержкой технологии IntelliSense и возможностью простейшего рефакторинга кода. Так же есть возможность создавать и подключать сторонние дополнения (плагины) для расширения функциональности практически на каждом уровне, включая добавление поддержки систем контроля версий исходного кода, добавление новых наборов инструментов (например, для редактирования и визуального проектирования кода на предметно-ориентированных языках программирования или инструментов для прочих аспектов процесса разработки программного обеспечения).

Используемые расширения:

  • Git Extensions (Система контролей версий)

  • ReSharper (Дополнительные средства форматирования и рефакторинга кода)

  • NDepend (Набор инструментов для анализа кода)

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

Средствами Visual Studio И NDepend были построенны следующие диаграммы классов, методов и дерева вызовов.

Оригинал файла в большом разрешении

О ригинал теста на производительность

Так же в процессе построения генерируется XML файл, содержащий документацию к методам и полям программы.

3.2.TASM

Для проверки результатов использовался комплект программного обеспечения Borland Turbo Assembler. В его состав входят:

  • Транслятор tasm.exe

  • Компановщик tlink.exe

  • Отладчик td.exe

Команда для получения исполняемого файла

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

Команда для получения объектного файла и файла листинга:

tasm *.asm /l

Далее необходимо получить исполняемые файлы обоих объектных файлов

tlink *.obj

Заключительным этапом является сравнение результатов в отладчике

td *.exe

4.Подход к решению задачи

Для реализации данной задачи я выбрал Объектно-Ориентированных Программирование.

Два основных подхода в ООП:

  1. Деление на ответственности

  2. Деление по составным частям

Так как наша задача выполняет небольшой функционал, я выбрал второй подход. После моделирования, была построена следующая иерархия классов.

Таблица классов

Класс

Предок

Описание

AssemblerObject

-

Коревой объект сруктуры. Любой объект кода Ассемблера является его потомком

Segment

AssemblerObject

Класс, описывающий все свойства сегмента в коде Ассемблера

Operator

AssemblerObject

Класс, описывающий все свойства, принадлежащие всем командам в коде Ассемблера

PopOperation

Operator

Класс, описывающий свойства команды POP

PushOperation

Operator

Класс, описывающий свойства команды PUSH

DwOperation

Operator

Класс, описывающий свойства операции резервирования памяти DW

JmpOperation

Operator

Класс, описывающий команду безусловного перехода JMP

RetOperation

Operator

Класс, описывающий команду RET

Marker

Operator

Класс, описывающий свойства метки в коде Ассемблера

RegClass

-

Статически класс, хранит таблицы регистров

Generator

-

Основной класс программы