Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.abitu.ru/en2002/closed/viewwork.html?thesises=225
Дата изменения: Fri May 5 15:24:38 2006
Дата индексирования: Tue Oct 2 03:53:45 2012
Кодировка: koi8-r

Введение. Краткий обзор предметной области
Как известно, в лабораторном практикуме студентов большинства
университетов США, Австрии и других стран ЕС, изучающих компьютерную науку,
первой известной им архитектурой становится архитектура DLX, авторами
которой являются американские профессора Дж. Хеннесси и Д. Паттерсон ([1]).
Разработанные на ее основе эмуляторы-отладчики используются для обучения
студентов университетов и школьников старших классов (в частности
московского Лицея Информационных Технологий ? 1533) началам
программирования на языках низкого уровня. В процессе обучения обычно
рассматриваются несколько различных архитектур, в числе которых Intel x86 и
DLX. Выбор DLX обусловлен несколькими причинами. Во-первых, в отличие от
Intel x86, эта архитектура проста и понятна, и её изучение подготавливает
учащихся к более сложной архитектуре. Во-вторых, эта архитектура была
разработана авторами специально для обучения. В-третьих, архитектура DLX
является обобщением различных RISC-архитектур, тогда как Intel х86 является
CISC-архитектурой (в процессе обучения должны быть представлены разные типы
архитектур).
DLX по своей сути является простейшей load/store машиной. В основе
системы команд DLX лежат соображения о наиболее часто используемых в
программах примитивах, таких как пересылка данных, логические и
арифметические операции над данными. DLX имеет 32 целочисленных и 32
плавающих 32-разрядных регистров. Все арифметические и логические операции
в DLX могут производиться только над регистрами. Все команды DLX имеют
фиксированную длину.
В моей программе осуществляется работа с сильно упрощенным вариантом
архитектуры машины, поскольку программа предназначается для обучения
старшеклассников, для которых (в начале обучения) каноническая архитектура
является сложной. В следующих версиях моей программы будет поддерживаться
каноническая архитектура (как описано в [1] и [7]).
К настоящему времени мне известна одна разработка, аналогичная моей.
Она выполнена учеником Лицея ? 1533 Александром Шипиловым в 1997 году. В
этой работе реализованы средства редактирования исходных текстов и машинных
кодов, отладки (в том числе пошаговой и с использованием точек останова).
При этом программа обладает целым рядом существенных недостатков:
некрасивый и неудобный текстовый интерфейс, неудобный редактор исходных
текстов и машинных кодов, а модули ассемблера и виртуальной машины
ненадёжны и характеризуются огромным числом ошибок и сбоев при их работе
(что затрудняет использование программы в учебном процессе).

Цели, задачи разработки и основные требования к конечному результату:

Целью проекта являлась разработка программного комплекса, позволяющего
пользователю формировать и редактировать программы на языке ассемблера DLX
и в кодах процессора DLX, компилировать программы на ассемблере DLX в
машинный код DLX, деассемблировать код, выполнять и отлаживать эти
программы.

Описание программного комплекса

Программный комплекс включает в себя следующие части:
. Интегратор является управляющим центром среды разработки. Он
обеспечивает удобный запуск и использование составляющих
компонентов.
. Редактор является специализированной программой подготовки
исходных текстов.
. Компилятор переводит исходный текст ассемблерной программы в
двоичный код, сходный по структуре с кодом процессора DLX, а
также выполняет обратное действие.
. Отладчик предназначен для запуска и отладки программы в
консольном режиме. Он обеспечивает просмотр исходного и
двоичного текста программы, работу с точками останова и
таблицами просмотра адресов и переменных.
. Виртуальная машина, входящая в состав отладчика, обрабатывает
двоичный код DLX и выполняет его на компьютерах с архитектурой
x86.
. Интерфейс программы реализован в виде четырех окон-фреймов
(редактирования, текстового вывода, графического вывода и
просмотра значений). В окне редактирования редактируется
исходный текст программы. Там же осуществляется отображение всей
памяти машины в двоичном виде с разбиением ячеек на смысловые
части команды (код операции, коды регистров и т. д.) с
сопоставлением каждой строки ассемблерного кода с машинным
кодом, в который оттранслирована эта строка. С помощью
нескольких команд, реализованных как экстракоды, DLX-программа
может выводить текстовую и графическую информацию в
соответствующие окна. Кроме того, окно текстового вывода
используется для вывода сообщений об ошибках.
В работе использованы классические и оригинальные методы построения
виртуальных машин, компиляторов и пошаговых отладчиков.
Программа написана на языке С++ с использованием классов библиотеки
MFC. Для компиляции и отладки программы была использована среда Microsoft
Visual Studio. Для работы программы необходим IBM-совместимый компьютер
Pentium 166/32МБ, а также ОС Windows 2000/XP (под Windows 95, 98 и NT
программа может работать некорректно). Программа оптимизирована под
разрешение экрана 1024х768 (при более низком разрешении работа с программой
будет неудобной).
Для установки программы необходимо распаковать самораспаковывающийся
архив с программой в отдельную папку и запустить файл setup.bat. Для работы
с программой нужно запустить DLX.EXE. . В папке Examples находятся файлы-
примеры для демонстрации работы программы.

Направление дальнейших разработок

На конференции «Старт в науку» мною может быть представлена новая
версия программы, выполненная с учетом канонического описания DLX-
архитектуры (Хеннесси-Паттерсон) и позволяющая помимо прочего также
наблюдать за работой процессора DLX (анализ работы конвейера, сбор
статистики и т.д.).

Область применения программы

Виртуальная машина DLX очень проста в понимании, однако близка по
своей структуре ко многим современным машинам, вследствие чего созданная
программа является удобным средством для обучения учеников старших классов
учебных заведений с углубленным изучением информационных технологий, а
также студентов профильных факультетов ВУЗов курсам «Начала
программирования» и «Компьютерная архитектура».

Литература

1. David A Patterson, John L Hennessy. Computer architecture: a
quantitave approach: Morgan Kaufmann Publishers, Inc., 1990.
2. Круглински Д., Уингоу С., Шеферд Д. Программирование на Microsoft
Visual C++ для профессионалов. - Санкт-Петербург: Питер; М.:
Издательско-торговый дом «Русская редакция», 2000.- 864 с.: ил.
3. Подбельский В. В. Си++: Учебное пособие. - 5-е изд. - М.: Финансы и
статистика, 2000. -560 с.: ил.
4. Джефф Элджер. C++: Библиотека программиста - СПБ: Питер, 2001. - 320
с.: ил.
5. Хантер Р. Проектирование и конструирование компиляторов / Пер. с
англ.; - М.: Финансы и статистика, 1984. - 232 c., ил.
6. В. А. Серебряков, М. П. Галочкин. Основы конструирования компиляторов.
- М.:МГУ им. М. В. Ломоносова, факультет ВМиК. 1996.
7. Интернет-ресурс «Computer architecture tutorial by Gurpur M. Prabhu»
(http://www.cs.iastate.edu/~prabhu/Tutorial/title.html).

Приложение - состав архива dlx.zip:
. Examples - папка с примерами программ на языке ассемблера DLX.
Рекомендуется оттранслировать и выполнить все файлы для
ознакомления с моей работой.
. dlx.exe - собственно программа.
. msflxgrd.ocx - компонент, необходимый для работы программы
. regsvr32.exe - служебный файл
. setup.bat - пакетный файл, подготавливающий все для первого
запуска программы.
. Инструкция к программме DLX.doc - подробное описание работы.