Смекни!
smekni.com

Бакалаврская работа. Программная модель 32-разядной МЭВМ фирмы Motorola (стр. 5 из 6)

Команды EXG и SWAP

Команда EXG (exchange) осуществляет обмен содержимого двух регистров, в то время как команда SWAP обменивает младшее слово в регистре данных со старшим словом. Подразумевается, что размерность операнда для EXG - длинное слово, для SWAP - слово.

Команды LEA и PEA

Команда LEA (load effective address) перемещает адрес операнда-источника (а не его содержимое) в адресный регистр - приёмник. Следовательно, команда

MOVEA.L #OPER,A1

эквивалентна команде

LEA OPER,A1

Команда PEA (push effective address) записывает адрес операнда-источника в стек системы. Эта команда обычно используется для передачи адресов параметра в подпрограмму через стек. Операндами-источниками для обеих команд LEA и PEA должны быть операнды памяти.

В качестве некоторой иллюстрации к описанным командам, предположим, что мы хотим записать несложную последовательность команд, которая будет перемещать 4 длинных слова из массива ABC в начало массива XYZ. Простая последовательность, выполняющая это, следующая:

MOVE.L ABC,XYZ

MOVE.L ABC+4,XYZ+4

MOVE.L ABC+8,XYZ+8

MOVE.L ABC+12,XYZ+12

Те же действия могут быть выполнены двумя командами:

MOVEM ABC,D0-D3

MOVEM D0-D3,XYZ

Ещё один способ иллюстрируется следующей последовательностью команд:

MOVEA.L #ABC,A1

MOVEA.L #XYZ,A2

MOVE.L (A1)+,(A2)+

MOVE.L (A1)+,(A2)+

MOVE.L (A1)+,(A2)+

MOVE.L (A1)+,(A2)+

В этом способе, использующем постинкрементный способ адресации, одна и та же команда MOVE.L повторяется для перемещения последующих элементов. Следовательно, эта последовательность команд может быть легче преобразована в итерационный цикл для перемещения большого числа элементов между двумя массивами.

Результатом проектирования является программная модель, наиболее точно реализующая все вышеперечисленные особенности микропроцессора MC 68300. Особое внимание уделено способам адресации, в частности программная модель реализует 14 способов адресации предусмотренных в микропроцессоре, возможности ввода данных в различных системах счисления, в частности в системах по основанию 2, 10, 16. Общую структуру программы для наглядности можно представить на рисунке 2:


Ввод

данных

Рисунок 2 – Общая структура программы.

Модуль интерпретатора реализует следующие функции:

- проверку на наличие ошибок в синтаксисе команд, введённых пользователем,

- приведение всех операндов к системе счисления с основанием 16,

- возможность просмотра эффективного адреса операндов (ЕА);

- приведение всех команд к форме, понятной обработчику.

Модуль обработки команд, по желанию пользователя может осуществлять как выполнение всей программы, так и её пошаговую трассировку и осуществляет выполнение команд в соответствии с их мнемокодом.

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

5. Интерфейс, органы управления

После запуска программы пользователь получает доступ к графическому интерфейсу, позволяющему осуществлять ввод, корректировку и вывод данных в диалоговом режиме (рис.1).

Программная модель поддерживает два режима работы: супервизора и пользователя, каждый из которых характеризуется своим множеством операций. После запуска программы появляется окно, позволяющее пользователю выбрать режим работы. В пользовательском режиме процессор работает с определёнными ограничениями. Хотя большинство команд микропроцессора выполняется одинаково в обоих режимах, некоторые команды, вызывающие особые действия в системе, в пользовательском режиме запрещены.


Рис. 3

Основной экран программы состоит из двух окон: окно для ввода текста программы (диалоговое окно) и окно отладчика, в котором отражается адрес команды в памяти, положение указателя стека, мнемоника команды и её машинный код. Программная модель обладает возможностью просмотра и корректировки промежуточных результатов выполнения микропроцессорных программ. Для этой цели в неё включены возможности просмотра содержимого регистров микропроцессора. Осуществляется это путём выбора соответствующего подменю в выпадающем меню PopUp (Просмотр/Регистры). Микропроцессор имеет 17 32-разрядных регистров (восемь регистров данных, семь адресных регистров и два указателя стека). Кроме того, в нём есть 32-разрядный счётик команд, в котором используются только младшие 24 разряда. Регистр состояния микропроцессора имеет 16 разрядов. Все эти регистры отображены в соответствующем окне (рис. 2). Закрыть окна просмотра регистров можно щёлкнув на системную иконку закрытия окна или же выбрав в меню пункт “Окно”, ”Закрыть все”

Переключение между режимами осуществляется путём выбора соответствующего режима в меню “Режим”. При переключении между режимами все данные, введённые пользователем должны быть сохранены, о чём появится соответствующая подсказка.

Рис. 4

Программная модель предоставляет пользователю возможность работы с файлами. Для этой цели в меню “Файл” необходимо выбрать нужное действие (Создание нового программного листа, открытие уже существующего, сохранение редактируемого, его закрытие). Здесь также существует возможность выхода из программы, все в дальнейшем необходимые данные должны быть предварительно сохранены.

В меню “Пуск” отражены команды, управляющие выполнением и отладкой микропроцессорных программ. Команда “Выполнить” выполняет программу из диалогового окна. Команда “Останов” прерывает выполнение программы. Команда “Ассемблирование” переводит мнемонику команд в ассемблерный код, который также отображается в соответствующем окне. Команда “Дизассемблирование” наоборот переводит машинный код в мнемонику, понятную пользователю. Команда “Трассировка” позволяет выполнять программу в пошаговом режиме, что может быть полезно для уяснения тонкостей алгоритма выполнения программы, а также может использоваться для устранения ошибок в программном коде.

В меню также существует пункт “Помощь”, где пользователь сможет найти всю интересующую его информацию по работе программной модели, устройству микропроцессора и его системе команд.

Для облегчения работы, наиболее часто выполняемые операции вынесены на панель инструментов.

6. Применение программной модели.

Программная модель дает широкие и удобные возможности для набора и отладки учебных программ (к примеру, может быть возможен одновременный просмотр всех регистров, памяти, ввод команд в мнемонических обозначениях, ассемблирование команд и т. д.).

Применение программной модели дает значительную экономию времени и сил, за счет более удобной отладки и набора программы. Посредством разработанной программы студентам предоставляется возможность изучить различные способы адресации, систему команд и устройство MC 68300.

Примером программы, предложенной для обучения, может служить программа вычисления максимального элемента массива значений, размером в слово (WORD).

move #10,D0 ; задаёт размерность массива 10->DO

M1: move (a1),d1 ; загружает содержимое ячейки памяти по адр. А1->D1

movea d3,A2 ; загружает содержимое регистра D3->A2

move d1,d3 ; D3->D1

sub A2,D1 ;D1-A2->D1

SPL Met ; если положительный результат, то переход на Met:

move a2,d3 ; A2-D3

Met: adda #2,a1 ; A1+2->A1

sub #1,D0 ;D0-1->D0

sne M1 ; если ненулевой результат, то переход на M1

move d3,d0 ; D3->D0.

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

7. Описание интерпретатора

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

В дальнейшем под лексическим анализом будем понимать процесс предварительной обработки исходной программы, на котором основные лексические единицы
программы - лексемы: ключевые (служебные) слова, идентификаторы, метки, константы приводятся к единому формату и заменяются условными кода­ми или ссылками на соответствующие таблицы, а комментарии исключаются из текста программы.

Выходами лексического анализа являются поток образов лексем-дескрип­торов и таблицы, в последних хранятся значения выделенных в программе лексем.

Дескриптор — это пара вида: (<тип лексемы>, <указатель>),

где <тип лексемы> — это, как правило, числовой код класса лексемы, кото­рый означает, что лексема принадлежит одному из конечного множества клас­сов слов, выделенных в языке программирования;

<указатель> — это может быть либо начальный адрес области основной памяти, в которой хранится адрес этой лексемы, либо число, адресующее эле­мент таблицы, в которой хранится значение этой лексемы.

Количество классов лексем (т.е. различных видов слов) в языках програм­мирования может быть различным. Наиболее распространенными классами являются: