МинистерствообразованияРФ
Курскийгосударственныйтехническийуниверситет
Кафедравычислительнойтехники
Утверждаю
зав. Кафедройпрофессор
__________________ТитовВ. С.
____________________________
____________________________
Выпускнаяквалификационнаяработа
бакалавра
Программнаямодель 32-разрядногомикропроцессорафирмы Motorola
Автор выпускнойквалификационнойработы: ДенисовА. Н.
Обозначениевыпускнойквалификационнойработы________________
_______________________________ГруппаВМ-81
Направление____________________________________________________
Руководительработы: __________________ к.т.н.Жмакин А.П.
Нормоконтроль __________________ ЧернецкаяИ. Е.
Совсеми вопросамиобращайтесь[email protected]Аннотация
Цельюданной работыявлялось изучениеорганизации32-разрядногомикропроцессорафирмы Motorola.Данная цельможет бытьдостигнутапосредствомнаписанияпрограммноймодели данногомикропроцессора.
В ходе работыбольшое вниманиеуделено функциональнымособенностямобъекта разработки, способам организации, системе команд.Данное программноеизделие можетбыть использованопри обучениистудентов.Пояснительнаязаписка состоитиз 45 страниц, в их составвходит 7 таблици 4 рисунка.
Summary.
The purpose of the given work was the study of organization of the32-bit microprocessor of firm Motorola. The given purpose wasachieved by means of a spellingof program model of the given microprocessor.
During work the large attention is given to functionalfeatures of object of development, ways of organization, commandsystem. The given program product can be used at training thestudents. The explanatory slip consists of 45 pages, their structureincludes 7 tables and 4 figures.
Содержание
Введение
В современнойтехнике рольмикро-ЭВМ весьмазначима. Сфераих примененияширока. Достаточноназвать лишьнесколькообластей, вкоторых применение16- и 32-разрядныхМК стало обыденнымявлением, чтобыпонять, почемупроизводителиМК уделяют имтакое внимание:
цифровые устройства проводной и беспроводной связи;
промышленные контроллеры, системы управления двигателями;
портативные вычислительно-коммуникационные цифровые средства;
цифровые бытовые устройства;
системы передачи информации, и т.д.
Это делаетудобным техникув эксплуатации, экономит человекувремя, позволяетболее рациональнорасходоватьэлектроэнергию.
Для изучениямикро-ЭВМ вКурском ГосударственномТехническомУниверситетеотсутствуютлабораторныеустановки, которые позволялибы студентамознакомитьсяс новыми перспективнымимоделями различныхмикропроцессоровфирмы Motorola.
Практикаработы с существующимилабораторнымиустановками, свидетельствуето том, что студентывынужденытратить большуючасть временина рутинныеоперации(ассемблирование, дизассемблированиеи др.). Это объясняетсятем, что лабораторныеустановкиобладают неудобным, малофункциональными не наглядныминтерфейсом.Например, вкачестве устройствавывода используютсяшесть семисегментныхиндикаторов, а программныйкод вводитсяпобайтно вшестнадцатеричномформате. С цельюупрощенияработы путёмавтоматизациирутинных операцийи изученияэлементнойбазы новыхмикропроцессорови была разработанаданная программнаямодель.
Программнаямодель даетширокие и удобныевозможностидля набора иотладки программ(к примеру, можетбыть возможенодновременныйпросмотр всехрегистров, памяти, вводкоманд в мнемоническихобозначениях, ассемблированиекоманд и т. д.).
Применениепрограммноймодели даетзначительнуюэкономию времении сил, за счетболее удобнойотладки и наборапрограммы.Посредствомразработаннойпрограммыстудентампредоставляетсявозможностьизучить различныеспособы адресации, систему команди устройствоMC68300.Техническоезадание
1.Назначениеи цели разработки.
1.1. Смоделировать32-разрядыймикропроцессорфирмы MotorolaМС 68300на уровнепрограммно-доступныхобъектов.
1.2. Цель работы– создать программнуюмодель, используемуюдля начальногознакомствас архитектуройМС 68300 иего системойкоманд, позволяющейотлаживатьпростые программына языке мнемокодов(Ассемблера).
Характеристикиобъекта разработки.
2.Требованияк изделию.
2.1. Функциональныетребования.
2.1.1. Не квалифицированныепользователимогут вводитьданные по запросу компьютера.
2.1.2. Диалоговыйрежим.
2.1.3. Выполнениефункций:
2.1.3.1. Запретредактированиярезультатовобученияпользователям.
2.1.3.2. Возможностьпросмотра инепосредственногоредактированиярегистровданных и адреса, а также дампаОЗУ.
2.1.3.3. Развитаясистема помощи, включающаяинформациюпо процессоруМС 68300 иего языку, атакже информациюпо программноймодели.
2.1.4.Разработаннаясистема отладки, позволяющаяпользователюлегко определитьошибку вводаданных.
2.1.5. Возможностьтрассировкипрограмм.
Поддерживание различных систем исчисления (двоичная, десятичная, шестнадцатеричная).
2.1.7. Наглядностьи доступностьинтерфейса.
2.2. Требованияк надежности.
2.2.1.Обеспечениесохранностиданных в файле.
2.2.2. Надёжнаяработа программы, при условиистабильнойработы операционнойсистемы и соблюденииминимальныхтребованийк аппаратнымресурсам.
2.3. СтандартныйинтерфейсWINDOWS- приложений.
3.Состав исодержаниеработ по созданию(развитию) системы.
3.1. Граф-деревоструктурысистемы.
3.2. Составлениеалгоритмабудущей программы.
3.3. Написаниетекста программыпо алгоритму.
3.4. Тестированиепрограммы.
3.5. Компоновкавсех документовв единое руководство.
4.Требованияк документированию.
4.1. Техническоезадание.
4.2. Текст программы– распечаткалистинга программы.
4.3. Текст программыв объектно-ориентированнойформе.
5. Источникиразработки.
5.1. Internet.Сайты, посвящённыемикроэлектронике, в частностиwww.Gaw.ru, раздел посвящённыймикропроцессорам.
5.2. Жмакин А.П.Курс лекцийпо микропроцессорам.
5.3. ФароновВ.В. Delphi5. Учебный курс, М., “Knowledge”,2001 год.
5.4 Юров. В.Assembler., Санкт-Петербург,“Питер” 2000 г.
2. Постановказадачи
Целью даннойработы являетсяуяснение организации, принциповработы, системыкоманд микропроцессоров.Цель должнабыть достигнутапутём разработкипрограммноймодели микро-ЭВМна базе 32 разрядногомикропроцессорафирмы Motorola.
Программнаямодель должнапродемонстрироватьработу 32 разряднойЭВМ фирмы Motorola.Программаработает вдиалоговомрежиме с пользователем, то есть существуетвозможностьввода исходныхданных, просмотрпромежуточныхи конечныхрезультатов.
Данноепрограммноеизделие должнонаглядно моделироватьпроцесс работыпроцессора, т.е. позволятьвводить ассемблерныйкод программс применениемсистемы командмикропроцессораи допустимыхспособов адресации, и выводитьрезультатобработки.Должна бытьпредусмотреназащита отнекорректноговвода данных.Программноеизделие должнообеспечитьнагляднуюработу объектамоделирования, с возможностьюизмененияпромежуточныхрезультатов.
В функциональномотношениипрограммноеизделие должнопредставлятьсобой программу, разработаннуюс применениемстандартовинтерфейсаоперационнойсистемы Microsoft Windows.
Выбор средствреализации
При постановкезадачи на разработкуданного программногоизделия былавыбрана системаWindows в связи сширочайшимраспространением, доступностьюи наличиемгибких средствразработкипрограммногообеспеченияпод эту платформу, и отсутствиемтаковых поддругие программныеплатформы вналичии.
При выборесредства разработкилюбой компилятордля системыWindows мог бытьиспользовандля написаниямодели. Из наиболеераспространенных, таких как MicrosoftVisual C++, Borland C++, Borland C++ Builder, Watcom C++, BorlandDelphi, Symantec C++, Power Builder, был выбранкомпиляторBorland Delphi. Выбор обоснованшироким распространением, удобствомиспользования, высоким качествомгенерируемогокода даннойсреды. Крометого, несмотряна то, что Delphi являетсякомпиляторомрасширенногоязыка Pascal, программы, написанныена Delphi полностьюсовместимыс компиляторомBorland C++ Builder, которыйне был применениз-за болеевысоких требованийк аппаратнымресурсам.
Описаниемашины пользователя
Данный процессорреализуетархитектуру, принятую вмикропроцессорахсемейства68000, что позволяетиспользоватьбольшой объемприкладногои системногопрограммногообеспечения, созданногодля этого семейства.Процессор CPU32работает с16-разряднойшиной данныхи 24-разряднойшиной адреса(адресуемаяпамять до 16 Мбайт), аналогичномикропроцессорамМС68000.
Основнымархитектурнымпринципомфункционированияпроцессоровсемейства 68000является разделениеих ресурсови возможностейв зависимостиот класса решаемыхзадач. Архитектурапроцессоровориентированана раздельноевыполнениедвух классовзадач: управлениеработой самоймикропроцессорнойсистемы с помощьюсистемногопрограммногообеспечения(операционнойсистемы — супервизора)и решение прикладныхзадач пользователя.В зависимостиот выполняемойзадачи процессорCPU32 имеет дварежима функционирования:
режим супервизора,
режим пользователя.
Взависимостиот режима привыполнениипрограмм разрешаетсядоступ ко всемресурсаммикроконтроллераили их части.В режиме супервизораразрешаетсявыполнениелюбых команд, реализуемыхпроцессором, и доступ ковсем регистрам.В режиме пользователязапрещаетсявыполнениеряда команди доступ к некоторымрегистрам, чтобы ограничитьвозможноститаких измененийсостояниясистемы, которыемогут помешатьвыполнениюдругих программили нарушитьустановленныйсупервизоромрежим работыпроцессора.Режим функционированияопределяетсязначением битаS в регистресостоянияпроцессораSR.
МПМС68300 имеет 32-битовуювнутреннююструктуру ипоэтому можетвыполнятьарифметическиеи логическиеоперации над32-разряднымичислами.
Техническиесредства МП68300, используемыедля программирования, показаны нарис. Регистрыобщего назначенияобъединеныв два набора- регистры данных(D0-D7) и адресныерегистры (A0-A7).
Регистрыданных:
31 16 15 8 7 0
D
D1
D2
D3
D4
D5
D6
D7
Регистрыадреса:
31 16 15 8 7 0
A
A1
A2
A3
A4
A5
A6
Двауказателястека:
31 0
Указатель стека пользователя
USP
Указатель стека супервизора
SSP
Программныйсчётчик:
31 0
PC
Регистрсостояния:
15 8 7 0
CCR
SR
Регистрыданных Dn
В МПМС68300 программнодоступны восемьрегистровданных, обозначенныхD0-D7. Каждый из нихможет бытьиспользованкак источникоперанда, приемникоперанда иликак сам операнд.Регистромданных можнооперироватькак байтом (8бит), словом(16 бит) или длиннымсловом (32 бита).При битовыхоперацияхиспользуютсятолько младшие8 бит, а при операцияхсо словами-младшие16 бит. Старшиебиты в этихоперациях неучаствуют.Регистрыадреса Аn
Регистрыадреса главнымобразом используютсядля полученияадреса операндавыполняемойкоманды. Большаячасть операцийманипулированияданными неможет выполнятьсяс помощью адресныхрегистров. Вадресных регистрахоперации сбайтами неразрешены.
Какпоказано нарисунке в наборрегистроввходят девятьрегистровадреса, два изкоторых используютсякак указателистека: указательстека супервизора(SSP-Supervisor Stack Pointer) и пользовательскийуказатель стека(USP-User Stack Pointer). Естественно, что в каждыймомент временипроцессор имеетдоступ толькок одному изрегистров стекав зависимостиот режима, вкотором находитсяпроцессор.Таким образомадресный регистрА7 физическипредставляетсобой два независимыхрегистра. Впрограммахна ассемблереон может указыватьсякак A7 и как SP. Процессоравтоматическиформируетуказатель стекапри вызовеподпрограмми возврате изних, а такжепри обработкепрерываний.Программныйсчетчик РС(Program Counter)
Каки любой другойМП, МС68300 имеетв своем наборерегистровпрограммныйсчетчик РС.
Послевыборки командыиз памяти программныйсчетчик всегдауказывает наследующуювыполняемуюкоманду. В отличиеот регистровобщего назначенияон не можетбыть явно определенкак операндни в какой изкоманд, исключениесоставляетиспользованиеРС в качествебазового регистрав командах синдекснойадресацией.При выполнениикоманд переходовв РС загружаетсяадрес новойкоманды, которойпередаетсяуправление.Для всех остальныхкоманд значениеРС увеличиваетсяна длину выполняемойкоманды.
Несмотряна то, что счетчиккоманд и адресныерегистры MC6830032-разрядные, при обращенияхк памяти навнешнюю адреснуюшину передаютсятолько 24 младшихбита адреса.По этой причинеобеспечиваетсядоступ толькок 224(16M) байт памяти.Модификациипроцессора МС68020, МС68030 и 68040 имеют32-разряднуюадресную шинуи способныадресовать4Г байт. 15 14 13 12 11 10 8 7 5 4 3 2 1 T1-0 S 0 0 I2-0 0 0 0 X N Z V C
CCR
Регистрсостояния SRсодержит двабайта: системныйбайт и байтпользователя.Полностьюрегистр SR доступентолько в режимесупервизора.В режиме пользователядоступны толькомладшие разряды(байт пользователя), которые образуютрегистр условийCCR. Отдельныебиты регистраCCR имеют следующееназначение:
С- признак переноса, принимаетзначение C=1 привозникновениипереноса изстаршего разрядаобрабатываемыхоперандов;
V- признак переполнения, принимаетзначение V=1 вслучае переполненияразрядной сеткипри обработкеоперандов сознаком;
Z- признак нуля, принимаетзначение Z=1 приполучениинулевого результатаоперации;
N- признак знака, принимаетзначение старшего(знакового)разряда результатаоперации: N=0 — положительноечисло, N=1 -отрицательное;
X- признак расширения, в большинствеслучаев копируетпризнак С, нопри выполнениинекоторыхопераций этипризнакиустанавливаютсяпо-разному.
Битысистемногобайта регистрасостояния SR, определяющиережимы функционированияпроцессора, имеют следующееназначение:
S-признаксупервизора, при S=0 процессорработает врежиме пользователя, при S=1 — в режимесупервизора;
T1-0- поле режиматрассировки(пошаговыйрежим): при T1=1процессоростанавливаетсяпосле каждойкоманды, приT0=1 — только послекоманд переходови ветвлений, меняющих ходпрограммы;
I2-0- поле маскипрерываний, определяетминимальныйуровень приоритетадля обслуживаниязапросовпрерывания. Остальныебиты регистраSR не используютсяили резервированыдля последующихмоделей процессоров.
Привключениимикроконтроллерапроисходитавтоматическаяустановканачальногосостояниярегистров. Врегистре SRустанавливаетсязначение битаS=1, и процессорначинает работатьв режиме супервизора.Из памяти загружаютсяначальныезначения содержимогопрограммногосчетчика PC иуказателястека. Если впроцессе дальнейшейработы потребуетсяперевод процессорав режим пользователя, то с помощьюкоманды MOVE to SR врегистр SR загружаетсяновое содержимое, в котором битS=0. Обратный переводв режим супервизорапроизводитсяпри обслуживаниизапросов прерыванияили возникновенииисключительныхситуаций, атакже в процессеустановкипроцессорав начальноесостояние(повторныйзапуск) припоступлениивнешнего сигналасброса иликоманды RESET.
РегистрыVBR, SFC, DFC доступнытолько в режимесупервизора.В 32-разрядныйрегистр VBR заноситсябазовый адрестаблицы векторовисключений.Загрузка этогорегистра производитсякомандой MOVEC. Приобслуживанииисключенийформируемоепроцессоромзначение Av=4Neявляетсяотносительнымадресом (смещением), определяющимположениевыбираемоговектора в таблице, которая можетбыть размещенав любом местеадресногопространства.В 3-разрядныерегистры SFC,DFC спомощью командыMOVEC заноситсякод адресногопространства, который поступаетна выводы FC2-0микроконтроллерапри выполнениикоманды MOVES. Такимобразом обеспечиваетсярасширениеадресногопространствас помощью организациивиртуальнойпамятиФорматыданных
Процессорвыполняетобработкубитов, байтов,16-разрядныхслов, 32-разрядныхдлинных слови двоично-десятичныхчисел (1 байт =2 десятичныхразряда). Обрабатываемыеданные — операндымогут располагатьсяв регистрах(данных илиадреса) илиоперативнойпамяти. Длявыборки слова(байты B1-0) илидлинного слова(байты B3-0) командазадает адресстаршего байтаN, четный иликратный четырем.При этом словаи длинные словаразмещаютсятаким образом, что младшиебайты (разрядыD7-0 данных) располагаютсяв ячейках памятис большимиадресами: N+1 илиN=3 (рис.3.3). Такоеразмещениебайтов в памятиот старшегок младшемусоответствуетестественномупорядку ихнаписания слева- направо. Этотпорядок адресациибайтов называетсяв зарубежнойлитературе«big-endian». Он отличаетсяот порядка«little-endian», принятогокомпанией INTELи рядом другихпроизводителей, когда размещениеслова начинаетсяс младшегобайта, адрескоторого служитадресом слова.
МПМС86300 имеет возможностьдоступа в памятик байту (8 бит), слову (16 бит) идлинному слову (32 бита). В отличиеот МП фирмыIntel (8086, 80286, 80386, 80486) в МП 68300приняты следующиесоглашения:
–PAGE_BREAK–
·слова(длинные слова)могут размещатьсятолько по четнымадресам;
·старшиебайты слова(двойного слова)располагаютсяв ячейках сменьшими адресами;
·адресомслова (двойногослова) считаетсяего старшийбайт.
Такимобразом, всоответствиис концепцией, принятой фирмойМоторола, словоразмещаетсяв памяти в двухсоседних ячейкахи начинаетсясо старшегобайта. Это означает, что при чтениислова, размещенногопо адресу ХМС68300 считываетдва соседнихбайта, причембайт по адресуХ интерпретируетсякак старший, а байт по адресуХ+1 как младший. Соответственно, длинное словоразмещаетсяв четырех смежныхячейках памяти, причем старшийбайт длинногослова находитсяпо меньшемуадресу.Способыадресации
ПроцессорCPU32 реализуетследующиеспособы адресацииоперандов:
регистровая (операнд в регистре данных или адреса),
косвенно-регистровая (операнд в ячейке памяти, адресуемой содержимым регистра адреса),
косвенно-регистровая с постинкрементом (операнд в ячейке памяти, адресуемой содержимым регистра адреса, которое автоматически увеличивается после выборки операнда для адресации следующей ячейки),
косвенно-регистровая с предекрементом (операнд в ячейке памяти, адресуемой содержимым регистра адреса, которое автоматически уменьшается перед выборкой операнда для адресации предыдущей ячейки),
косвенно-регистровая со смещением (операнд в ячейке памяти, адрес которой является суммой содержимого регистра адреса и 16-разрядного смещения d16, заданного в команде),
косвенно-регистровая с индексированием (операнд в ячейке памяти, адрес которой является суммой содержимого регистра адреса, индексного регистра и данного в команде 8-разрядного смещения d8),
прямая (операнд в ячейке памяти, адрес которой задается числом Abs, указанным в команде),
относительная (операнд в ячейке памяти, адрес которой является суммой текущего содержимого программного счетчика PC и данного в команде 16-разрядного смещения d16 или базового смещения bd),
относительная с индексированием (операнд в ячейке памяти, адрес которой является суммой содержимого программного счетчика PC, индексного регистра и данного в команде 16-разрядного смещения d16 или 32-разрядного базового смещения bd),
непосредственная (значение операнда Im дано в команде).Форматыкоманд
КомандыпроцессораМС68300 могут содержатьот одного допяти слов. Любаякоманда всегдарасположенапо четномуадресу. Форматкоманды в общемвиде показанна рисунке 1:
Командное слово
(первое слово, определяющее операцию и способ адресации)
Непосредственный операнд
(одно или два слова)
Эффективный адрес источника
(одно или два слова)
Смещение
(одно или два слова) Рисунок1.Системакоманд CPU32
ПроцессорCPU32 выполняетнабор из 139 команд, которые реализуютследующиегруппы операций:
операции пересылки,
арифметические операции,
логические операции,
операции сдвига,
операции сравнения и тестирования,
битовые операции,
операции управления;
операции условной установки байтов.Таблица1- Набор командпроцессораCPU32
Синтаксис ассемблера
Разрядность
Операция
Адресация
ADD Dn, B, W, L
+ Dn -> 1,(3-9,13)
ADD, Dn B, W, L
Dn+ — Dn (1-14),1
ADDA, An W, L
+ An -> An (1-14),2
ADDI # Im, B, W, L
+ Im -> 12,(1,3-9,13)
ADDQ # Im, B, W, L
+ Im -> 12,(1-9,13) ADDX Dy, Dx B, W, L Dx + Dy + X -> Dx 1,1 ADDX — (Ay),- (Ax) B, W, L
+ + X -> 5,5
SUB Dn, B, W, L
— Dn -> 1,(3-9,13)
SUB, Dn B, W, L
Dn+ -> (1-14),1
SUBA ,An W, L
An- -> An (1-14),2
SUBI # Im, B, W, L
— Im -> 12,(1,3-9,13)
SUBQ # Im, B, W, L
— Im -> 12,(1-9,13) SUBX Dy, Dx B, W, L
Dx — Dy — X -> 1,1 SUBX — (Ay), — (Ax) B, W, L
— — X -> 5,5
NEG B, W, L
O — -> (1,3-9,13)
NEGX B, W, L
O — — X -> (1,3-9,13) ABCD Dy, Dx W Dx + Dy + X -> Dx 1,1 ABCD — (Ay), — (Ax) W
+ + X -> 5,5 SBCD Dy, Dx W Dx- Dy — X -> Dx 1,1 SBCD — (Ay), — (Ax) W
— — X -> 5,5
NBCD W
O — — X -> (1,3-9,13)
MULS, Dn W, L
Dn * -> Dn (1,3-14),1
MULS.L, Dh-Dl L
Dn * -> Dn (1,3-14),1
MULU, Dn W, L
Dn * -> Dn (1,3-14),1
MULU.L, Dh-Dl L
Dl * -> Dh:Dl (1,3-14),1
DIVS, Dn W, L
Dn / -> Dn (1,3-14),1
DIVS.L, Dr:Dq L
Dr:Dq / -> Dr:Dq (1,3-14),1
DIVSL.L, Dr:Dq L
Dq / -> Dr:Dq (1,3-14),1
DIVU, Dn W
Dn / -> Dn (1,3-14),1
DIVU.L, Dr:Dq L
Dr:Dq / -> Dr:Dq (1,3-14),1
DIVUL.L, Dr:Dq L
Dq / -> Dr:Dq (1,3-14),1
CLR B,W,L
0 -> (1,3-9,13) Таблица2- Командылогическихопераций
Синтаксис ассемблера
Разрядность
Операции
Адресация
AND, Dn B, W, L
Dn ^ -> Dn (1, 3 — 14), 1
AND Dn, B, W, L
^ Dn -> 1, (1,3 — 9,13)
ANDI # Im, B, W, L
^ Im ->
12, (1, 3 — 9,13) ANDI # Im, CCR W CCR ^ Im -> CCR 12, – ANDI # Im, SR W SR ^ Im -> SR 12, –
OR, Dn B, W, L
Dn -> Dn (1, 3 — 14), 1
OR Dn, B, W, L
Dn -> 1, (1,3 — 9,13)
ORI # Im, B, W, L
Im -> 12, (1, 3 — 9,13) ORI # Im, CCR W CCR Im -> CCR 12, – ORI # Im, SR W SR Im -> SR 12, –
EOR Dn, B, W, L
+ Dn -> 1, (1, 3 — 9,13)
EORI # Im, B, W, L
dst> + Im -> 12, (1, 3 — 9,13) EORI # Im, CCR W CCR + Im -> CCR 12, – EORI # Im, SR W
SR + Im -> SR 12, – NOT B, W, L
-> (1, 3 — 9.13)
Таблица3-Командысдвигов
Синтаксис ассемблера
Разрядность
Адресация
ASL Dx, Dv B, W, L 1, 1 ASL # Ns, Dv B, W, L 12, 1
ASL W (3 — 9,13) ASR Dx, Dv B, W, L 1,1 ASR # Ns, Dv B, W, L 12,1
ASR W (3 — 9,13) LSL Dx, Dv B, W, L 1,1 LSL # Ns, Dv B, W, L 12,1
LSL W (3 — 9,13) LSR Dx, Dv B, W, L 1,1 LSR # Ns, Dv B, W, L 12,1
LSR W (3 — 9,13) ROL Dx, Dv B, W, L 1,1 ROL # Ns, Dv B, W, L 12,1
ROL W (3 — 9,13) ROR Dx, Dv B, W, L 1,1 ROR # Ns, Dv B, W, L 12,1
ROR W (3 — 9,13) ROXL Dx, Dv B, W, L 1,1 ROXL # Ns, Dv B, W, L 12,1
ROXL W (3 — 9,13) ROXR Dx, Dv B, W, L 1,1 ROXR # Ns, Dv B, W, L 12,1
ROXR W (3 — 9,13)
Таблица4 — Команды сравненияи тестирования.
Синтаксис ассемблера
Разрядность
Операции
Адресация
СMP, Dn B, W, L
Dn — (1 — 14), 1
СMP, An W, L
An — (1 — 14), 2
CMPI # Im, B, W, L
— Im 12, (1, 3 — 11,13,14)
CMPM (Av) +,(Ax) + B, W, L
— 4,4
CMP2, Rn B, W, L
(Rn)UB (3,6-11,13,14), (1,2)
TST B, W, L
— 0 (1, 3 – 9,13)
TAS B
— 0, 1 -> b7 (1, 3 — 14)
Таблица 5 — Команды битовыхопераций.
Синтаксис ассемблера
Разрядность
Операции
Адресация
BTST Dn, B, L bn -> Z 1, (1, 3 — 14)
BTST # Nb, B, L bn -> Z 12, (1, 3 — 14)
BSET Dn, B, L bn -> Z, 1 -> bn 1, (1, 3 — 9,13,14)
BSET # Nb, B, L bn -> Z, 1 -> bn 12, (1, 3 — 9,13,14)
BCLR Dn, B, L
bn -> Z, 0 -> bn 1, (1, 3 — 9,13,14)
BCLR # Nb, B, L bn -> Z, 0 -> bn 12, (1, 3 — 9,13,14)
BCHG Dn, B, L bn -> Z, bn -> bn 1, (1, 3 — 9,13,14)
BCHG # Nb, B, L bn -> Z, bn -> bn 12, (1, 3 — 9,13,14)
Таблица 6 — Команды управленияи установкибайтов.
Синтаксис ассемблера
Операции
Адресация
JMP
-> PC (3, 6 — 11,13,14)
JSR
SP — 4 -> SP, PC -> (SP), -> PC (3, 6 — 11,13,14) RTS (SP) -> PC, SP + 4 -> SP
RTR (SP) -> CCR, SP + Z -> SP, (SP) -> PC, SP + 4 -> SP
Scc
Если (сс) выполняется, то 1… 1 -> ,
если (сс) не выполняется, то 0… 0 -> (1, 3 — 9,13,14)
Таблица 7 — Изменениепризнаков послевыполнениякоманд
Команды
X
N
Z
V
C
Примечание ABCD, SBCD, NBCD + ? * ? + X=С — десятичный перенос
ADD, ADDI, ADDQ, SUB, SUBI, SUBQ, NEG + + + + + X=С — десятичный перенос ADDX, SUBX, NEGX + + * + + X=С — десятичный перенос MULS, MULU, DIVS, DIVU – + + +
MOVE, MOVEQ, AND, ANDI,
OR, ORI, EOR, EORI, NOT, CLR,
EXT, TAS, TST – + +
CMP, CMPI, CMPM – + + + +
CMP2 – ? + ? +
BTST, BSET, BCLR, BCHG – – + – – Z = bn (инверсия)
ASL, ASR + + – + + V = 1 при изменении знака LSL, LSR + + + +
ROL, ROR – + + +
ROXL, ROXR + + + +
CHK + + + + +
MOVE, ANDI, ORI, EORI to CCR или SR + + + + +
В общем видезапись типовойдвухадреснойкоманды наязыке ассемблераимеет следующийвид:
COP.x , гдев качестве COPуказываетсямнемокодсоответствующейкоманды, а вместоx ставится символ, определяющийразрядностьоперандов: B — байт, W — слово,L — длинное слово.Если послемнемокодаотсутствуетсимвол разрядности, то по умолчаниюоперандомслужит слово.
Операндыусловно обозначаютсякак — источник, — приемник, причем в качествеприемникауказываетсяоперанд, наместе которогопомещаетсярезультатоперации. Призаписи конкретныхкоманд в качестве, указываютсясимволическиеадреса операндовна языке ассемблерав соответствиис используемымспособом ихадресации. Дляодноадресныхкоманд в полеоперандовдается одинсимволическийадрес, в безадресныхкомандах адресоперанда вявном виде незадается. Принепосредственнойадресациивместо указываетсязначение операндаIm, перед которымставится префиксныйсимвол #.
ЧислаIm, d8, d16, bd, Abs.W, Abs.L в полеоперандов могутдаваться вразличныхсистемах счисления, которые определяютсяпрефикснымсимволом:
&- десятичноечисло,
% — двоичное число,
@- восьмеричноечисло,
$ — шестнадцатиричноечисло.
Приотсутствиипрефиксногосимвола числовоспринимаетсякак десятичное.
Сцелью повышенияпроизводительностив CPU32 организовантрехступенчатыйконвейер выполняемыхкоманд. Контрольсостоянияконвейераобеспечиваетсяс помощью выходныхсигналовпроцессора:
IPIPE#- принимаетзначение 0 впервом тактевыполнениякаждой командыв конвейере;
IFETCH#- принимаетзначение 0 призагрузке очереднойкоманды в конвейер, а также приосвобожденииконвейера(отсутствиикоманд).
Данныесигналы могутиспользоватьсявнешним анализаторомдля контролятекущего состоянияпроцессора.
Нижев этом разделерассматриваютсякоманды, выполняемыепроцессоромCPU32. В таблицахдля каждойкоманды данее синтаксисна языке ассемблераи указана разрядностьоперандов: фиксированная(указываетсячислом) илиизменяемая(определяетсясимволом B,W,L, который ставитсяпосле мнемокодакоманды). Операнды, адрес которыхвычисляетсяв соответствиис заданнымспособом адресации, обозначенысимволами.При выполнениимногих команддля вычисленияEA можно использоватьтолько определенныеспособы адресации. КомандыMOVE, MOVEA иMOVEQ
КомандаMOVE, в зависимостиот формата еёоперанда, можетперемещатьбайт, слово илидлинное словоиз регистрав регистр, междурегистром ипамятью и междупамятью и памятью.Эта командаможет такжеперемещатьслово в (из) регистрасостояния идлинное словомежду пользовательскимуказателемстека (USP) и регистромадреса. КогдаUSP определёнкак операнд, или регистрсостояния (SR)- как приёмникоперанда, командастановитсяпривилегированнойи, следовательно, не может бытьвыполнена впользовательскомрежиме.
КомандаMOVEA (move address) предназначенадля инициализацииадресногорегистра. Толькослово и длинноеслово, как операнды, возможно перемещатьнепосредственнов адресныйрегистр. Дляоперации сословом, операнд-источник перед помещениемв регистр адресапереводитсяв 32-х разряднуюсетку с учётомзнака.
КомандаMOVEQ (move quick) — это укороченнаяформа командыперемещениянепосредственногооперанда врегистр данных.Непосредственныйоперанд ограничендиапазономот -128 до 127. Подразмерностьюоперацииподразумеваетсядлинное слово.Следовательно,8-битный непосредственныйоперанд долженбыть преобразованв 32-битовый знаковыйперед перемещениемего в приёмник, которым являетсярегистр данных.Некоторыеассемблерымогут различатьтри формы: MOVE data,MOVEA и MOVEQ по операндам, т.к. каждая формаопределяетсясвоим единственнымтипом операнда.Для таких ассемблеровнекоторыемнемоникикоманды MOVE могутбыть использованытакже успешнодля MOVEA и MOVEQ, т. к.соответствующиекоды операцииассемблируютсясогласно операнду.
Дляиллюстрацииработы командыMOVE, присвоимD1=56789ABC, A1=01020304 и CCR=0010001 установимперед выполнениемкоманды. Послетого, как показанныениже командыбудут выполнены, мы получимследующиерезультаты:
MOVE #0,CCR Нарегистр илипамять нетвоздействия,
N=0,Z=0, V=0, C=0, X=0
MOVE.W A1,D1 D1=56780304,
N=0, Z=0, V=0,C=0, X=1
MOVE D1,A1 A1=FFFF9ABC,
N=0, Z=0, V=0,C=1, X=1
MOVE #-10,D1 D1=FFFFFFF6,
N=1, Z=0, V=0,C=0, X=1КомандыMOVEM и MOVEP
КомандаMOVEM (move multiple register) переноситслово или длинноеслово междусписком регистрови последовательноидущими участкамипамяти. В случае, когда словоперемещаютв регистр, каждоеслово памятидолжно бытьпреобразованов 32-х разряднуюсетку с учётомзнака передзагрузкой всоответствующийрегистр. Каждыйрегистр, участвующийв перемещении, может бытьуказан в списке и отделён символом”/”, возможнотакже указаниев списке начальногои конечногорегистра, разделенныхсимволом “-“.В памяти выделенныерегистры всегдарасполагаютсятак, что D0 переписываетсяпо младшемуадресу, D1 в следующий,…, затем с A0 поA7, причем A7 записываетсяв самый верхнийадрес памяти.При перемещениирегистров впамять адресоперанда памятиможет определятьсяв зависимостиот управляющегоспособа адресацииили режимомс предекрементом.Для обратногоперемещенияэффективныйадрес можетбыть определёнв зависимостиот управляющегоспособа адресацииили режимомс постинкрементом.
Типовоеприменениекоманды MOVEM — этозапись и восстановлениерегистров встек при обращениик подпрограммам.Перед вызовомподпрограммывсе регистрымогут бытьзаписаны в стексистемы посредствомвыполнениякоманды
MOVEM.L D0-D7/A0-A6,-(A7)
Привозврате вуправляющуюпрограмму, этирегистрывосстанавливаютсяк своему первоначальномувиду командой
MOVEM.L (A7)+,D0-D7/A0-A6
Заметьте, что хотя команда MOVEM.L (A7),D0-D7/A0-A6 будеттакже восстанавливатьсодержимоезаписанныхрегистров, ноуказатель стекаA7 при этом небудет обновлёнс присвоениемзначения, котороебыло изначальнов вершине стека.
КомандаMOVEP (move peripherial data) предназначенадля облегченияпрограммноговвода/вывода.Множествоинтерфейсовввода/вывода- 8-битные устройства.Для простотысвязи между16-битной адреснойшиной и 8-битнымустройствомввода/вывода, устройствосоединяетсяс каждым младшимили старшимбайтом шиныданных. В случаесоединенияс младшим байтом, все внутренниерегистры устройствадоступны черезпоследовательностьнечётных адресов.В другой конфигурациивсе внутренниерегистры доступнычерез последовательностьчётных адресов.Команда MOVEP можетосуществлятьввод/выводданных из (в)двух (для операциисо словом) иличетырёх (дляоперации сдлинным словом)последовательнорасположенныхрегистровустройстваввода/вывода.Только косвенныйрегистровыйспособ адресациисо смещениемдопускаетсядля определенияпорта ввода/вывода.На Рис. 14 показаныдва примераработы командыMOVEP.КомандыEXG и SWAP
КомандаEXG (exchange) осуществляетобмен содержимогодвух регистров, в то время каккоманда SWAP обмениваетмладшее словов регистреданных со старшимсловом. Подразумевается, что размерностьоперанда дляEXG — длинное слово, для SWAP — слово.КомандыLEA и PEA
КомандаLEA (load effective address) перемещаетадрес операнда-источника(а не его содержимое)в адресныйрегистр — приёмник.Следовательно, команда
MOVEA.L #OPER,A1
эквивалентнакоманде
LEA OPER,A1
,> продолжение
–PAGE_BREAK–
Команда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 повторяетсядля перемещенияпоследующихэлементов.Следовательно, эта последовательностькоманд можетбыть легчепреобразованав итерационныйцикл для перемещениябольшого числаэлементов междудвумя массивами.
Результатомпроектированияявляется программнаямодель, наиболееточно реализующаявсе вышеперечисленныеособенностимикропроцессораMC68300.Особое вниманиеуделено способамадресации, вчастностипрограммнаямодель реализует14 способов адресациипредусмотренныхв микропроцессоре, возможностиввода данныхв различныхсистемах счисления, в частностив системах пооснованию 2,10, 16. Общую структурупрограммы длянаглядностиможно представитьна рисунке 2:
/>
Ввод
данных
Рисунок2 – Общая структурапрограммы.
Модульинтерпретаторареализуетследующиефункции:
проверку на наличие ошибок в синтаксисе команд, введённых пользователем,
приведение всех операндов к системе счисления с основанием 16,
возможность просмотра эффективного адреса операндов (ЕА);
приведение всех команд к форме, понятной обработчику.
Модульобработкикоманд, по желаниюпользователяможет осуществлятькак выполнениевсей программы, так и её пошаговуютрассировкуи осуществляетвыполнениекоманд в соответствиис их мнемокодом.
Послеобработкикоманд, у пользователяесть возможностьпросмотрарезультатаих выполнения, т.е. активнымстановитсямодуль интерфейса.
5. Интерфейс, органы управления
После запускапрограммыпользовательполучает доступк графическомуинтерфейсу, позволяющемуосуществлятьввод, корректировкуи вывод данныхв диалоговомрежиме (рис.1).
Программнаямодель поддерживаетдва режимаработы: супервизораи пользователя, каждый из которыххарактеризуетсясвоим множествомопераций. Послезапуска программыпоявляетсяокно, позволяющеепользователювыбрать режимработы. В пользовательскомрежиме процессорработает сопределённымиограничениями.Хотя большинствокоманд микропроцессоравыполняетсяодинаково вобоих режимах, некоторыекоманды, вызывающиеособые действияв системе, впользовательскомрежиме запрещены.
/>
Рис.3
Основнойэкран программысостоит из двухокон: окно дляввода текстапрограммы(диалоговоеокно) и окноотладчика, вкотором отражаетсяадрес командыв памяти, положениеуказателястека, мнемоникакоманды и еёмашинный код.Программнаямодель обладаетвозможностьюпросмотра икорректировкипромежуточныхрезультатоввыполнениямикропроцессорныхпрограмм. Дляэтой цели в неёвключены возможностипросмотрасодержимогорегистровмикропроцессора.Осуществляетсяэто путём выборасоответствующегоподменю в выпадающемменю PopUp(Просмотр/Регистры).Микропроцессоримеет 17 32-разрядныхрегистров(восемь регистровданных, семьадресных регистрови два указателястека). Крометого, в нём есть32-разрядныйсчётик команд, в которомиспользуютсятолько младшие24 разряда. Регистрсостояниямикропроцессораимеет 16 разрядов.Все эти регистрыотображеныв соответствующемокне (рис. 2). Закрытьокна просмотрарегистров можнощёлкнув насистемнуюиконку закрытияокна или жевыбрав в менюпункт “Окно”,”Закрыть все”
Переключениемежду режимамиосуществляетсяпутём выборасоответствующегорежима в меню“Режим”. Припереключениимежду режимамивсе данные, введённыепользователемдолжны бытьсохранены, очём появитсясоответствующаяподсказка.
/>
Рис. 4
Программнаямодель предоставляетпользователювозможностьработы с файлами.Для этой целив меню “Файл”необходимовыбрать нужноедействие (Созданиенового программноголиста, открытиеуже существующего, сохранениередактируемого, его закрытие).Здесь такжесуществуетвозможностьвыхода из программы, все в дальнейшемнеобходимыеданные должныбыть предварительносохранены.
В меню “Пуск”отражены команды, управляющиевыполнениеми отладкоймикропроцессорныхпрограмм. Команда“Выполнить”выполняетпрограмму издиалоговогоокна. Команда“Останов”прерываетвыполнениепрограммы.Команда “Ассемблирование”переводитмнемоникукоманд в ассемблерныйкод, которыйтакже отображаетсяв соответствующемокне. Команда“Дизассемблирование”наоборот переводитмашинный кодв мнемонику, понятнуюпользователю.Команда “Трассировка”позволяетвыполнятьпрограмму впошаговомрежиме, чтоможет бытьполезно дляуяснения тонкостейалгоритмавыполненияпрограммы, атакже можетиспользоватьсядля устраненияошибок в программномкоде.
В менютакже существуетпункт “Помощь”, где пользовательсможет найтивсю интересующуюего информациюпо работе программноймодели, устройствумикропроцессораи его системекоманд.
Для облегченияработы, наиболеечасто выполняемыеоперации вынесенына панельинструментов.
6. Применениепрограммноймодели.
Программнаямодель даетширокие и удобныевозможностидля набора иотладки учебныхпрограмм (кпримеру, можетбыть возможенодновременныйпросмотр всехрегистров, памяти, вводкоманд в мнемоническихобозначениях, ассемблированиекоманд и т. д.).
Применениепрограммноймодели даетзначительнуюэкономию времении сил, за счетболее удобнойотладки и наборапрограммы.Посредствомразработаннойпрограммыстудентампредоставляетсявозможностьизучить различныеспособы адресации, систему команди устройствоMC68300.
Примеромпрограммы, предложеннойдля обучения, может служитьпрограммавычислениямаксимальногоэлемента массивазначений, размеромв слово (WORD).
move#10,D0; задаёт размерностьмассива 10->DO
M1:move(a1),d1; загружаетсодержимоеячейки памятипо адр. А1->D1
movead3,A2; загружаетсодержимоерегистра D3->A2
move d1,d3; D3->D1
sub A2,D1 ;D1-A2->D1
SPLMet; если положительныйрезультат, топереход на Met:
move a2,d3; A2-D3
Met: adda #2,a1; A1+2->A1
sub #1,D0 ;D0-1->D0
sneM1; если ненулевойрезультат, топереход на M1
move d3,d0;D3->D0.
Посредствомнаглядногоинтерфейсапользовательможет просмотретьпокомандновыполнениепрограммы (такназываемыйрежим трассировки), содержимоерегистров ифлагов и ихизменение привыполнениикоманд. Существуеттакже возможностьбыстрого выполнениякоманды, чтообеспечиваетвозможностьпочти мгновенногополучениярезультатовобработки.7. Описаниеинтерпретатора
Приразработкепрограммноймодели этаплексическойобработкитекста исходнойпрограммывыделяетсяв отдельныйэтап работыкомпилятора, как с методическимицелями, так ис целью сокращенияобщего временикомпиляциипрограммы.Последнеедостигаетсяза счет того, что исходнаяпрограмма, представленнаяна входе компиляторав виде непрерывнойпоследовательностисимволов, наэтапе лексическойобработкипреобразуетсяк некоторомустандартномувиду, что облегчаетдальнейшийанализ. Приэтом используютсяспециализированныеалгоритмыпреобразования, теория и практикапостроениякоторых в литературепроработанадостаточноглубоко.
Вдальнейшемподлексическиманализом будемпонимать процесспредварительнойобработкиисходной программы, на которомосновные лексическиеединицы
программы- лексемы:ключевые(служебные)слова, идентификаторы, метки, константыприводятсяк единому форматуи заменяютсяусловнымикодамиили ссылкамина соответствующиетаблицы, акомментарииисключаютсяизтекста программы.
Выходамилексическогоанализа являютсяпоток образовлексем-дескрипторови таблицы, впоследниххранятся значениявыделенныхв программелексем.
Дескриптор— этопара вида: (, ),
где— это, как правило, числовой кодкласса лексемы, который означает, что лексемапринадлежитодному из конечногомножестваклассовслов, выделенныхв языке программирования;
— это можетбыть либо начальныйадрес областиосновной памяти, в которой хранитсяадрес этойлексемы, либочисло, адресующееэлементтаблицы, в которойхранится значениеэтой лексемы.
Количествоклассов лексем(т.е. различныхвидов слов) вязыках программированияможет бытьразличным.Наиболеераспространеннымиклассами являются:
— идентификаторы;
— служебные(ключевые) слова;
— разделители;
— константы.
Все они присутствуютв данной программноймодели.
Могутвводиться идругие классы.Это обусловленов первую очередьтой ролью, которуюиграют различныевиды слов принаписанииисходной программыи, соответственно, при переводеее в машиннуюпрограмму. Приэтом наиболеепредпочтительнымявляется разбиениевсего множестваслов, допускаемогов языке программирования, на такие классы, которые бы непересекалисьмежду собой.В этом случаелексическийанализ можновыполнить болееэффективно.В общем случаевсе выделяемыеклассы являютсялибо конечными(ключевые слова, разделителии др.) — классыфиксированныхдля данногоязыкапрограммированияслов, либобесконечнымиили очень большими(идентификаторы, константы, метки) — классыпеременныхдля данногоязыка программированияслов.
С этихпозиций кодыобразов лексем(дескрипторов)из конечныхклассов всегдаодни и те же вразличныхпрограммахдля данногокомпилятора.Коды жеобразов лексемиз бесконечныхклассов различныдля разныхпрограмм иформируютсякаждый раз наэтапе лексическогоанализа.
В ходелексическогоанализа значениялексем из бесконечныхклассов помещаютсяв таблицысоответствующихклассов. Конечностьтаблиц объясняетограничения, существующиев языках программированияна длины(и соответственночисло) используемыхв программеидентификаторови констант.Необходимоотметить, чточисловые константыперед помещениемих в таблицумогут переводитьсяиз внешнегосимвольногововнутреннеемашинноепредставление.Содержимоетаблиц, в особенноститаблицы идентификаторов, в дальнейшемпополняетсяна этапе семантическогоанализа исходнойпрограммы ииспользуетсяна этапе генерацииобъектнойпрограммы.
Первоначальнов тексте исходнойпрограммылексическийанализаторвыделяетпоследовательностьсимволов, котораяпо его предположениюдолжна бытьсловом в программе, т.е. лексемой.Может выделятьсяне вся последовательность, а только одинсимвол, которыйсчитаетсяначалом лексемы.Это наиболееответственнаячасть работылексическогоанализатора.Пользователюнеобходимоучитывать, чтометка (если онаприсутствует)начинается сначала строки(пробелы – еслиони есть – вовнимание непринимаются), и от операцийотделяетсясимволом “:”
Пример:
М: moveq#123,D1;
add D1,D2;
причёмколичествопробелов “:”до, после “:”, между операндами, между командойи операндами(и их наличие)может бытьпроизвольным.Обязательнойявляется “,”между приёмникоми источником.В конце мнемоникикоманды вобязательномпорядке должнастоять “;”, котораяотделяет мнемокодот комментариевпользователя, которые интерпретатором игнорируются.В противномслучае произойдётвыработкаисключительнойситуации, о чёмпоявится наэкран соответствующеесообщение.
Послеэтого проводитсяидентификациялексемы.Она заключаетсяв сборке лексемыиз символов, начиная с выделенногонапредыдущемэтапе, и проверкиправильностизаписи лексемыданного класса.
Идентификациялексемы изконечногокласса выполняетсяпутем сравненияее с эталоннымзначением.Основная проблемаздесь — минимизациявременипоиска эталона.В общем случаеможет понадобитьсяполный переборсловданного класса, в особенностидля случая, когда выделенноедля опознанияслово содержитошибку. Уменьшитьвремя поискаможно, используяразличныеметоды ускоренногопоиска:
— метод линейногосписка;
— метод упорядоченногосписка;
— метод расстановкии другие.
Дляидентификациилексем из бесконечных(очень больших)классов используютсяспециальныеметоды сборкилексем с одновременнойпроверкойправильностинаписаниялексемы. Припостроенииэтих алгоритмовшироко применяетсяформальныйматематическийаппарат — теориярегулярныхязыков, грамматик иконечныхраспознавателей.В данном случае– время поискане актуально, так как оно итак не высокоиз-за не оченьбольшого количествакоманд микропроцессора.
Приуспешнойидентификациизначение лексемыиз бесконечногоклассапомещаетсяв таблицуидентификациилексем данногокласса. Приэтом необходимопредварительнопроверить: нехранится литам уже значениеданнойлексемы, т.е.необходимопроводитьпросмотр элементовтаблицы.Если ее тамнет, то значениепомещаетсяв таблицу. Приэтом таблицадолжна допускатьрасширение.Опять же дляуменьшениявремени доступак элементамтаблицы онадолжна бытьспециальнымобразом организована, при этом должныиспользоватьсяспециальныеметоды ускоренногопоискаэлементов.
Послепроведенияуспешнойидентификациилексемы формируетсяее образ— дескриптор, он помещаетсяв выходнойпоток лексическогоанализатора.В случае неуспешнойидентификацииформируютсясообщения обошибках внаписании словпрограммы.
В ходелексическогоанализа осуществляютсяи другие видылексическогоконтроля, вчастности, проверяетсяпарность скобок, допустимостьи правильностьзаписи способовадресации.
Выходнойпоток с лексическогоанализаторав дальнейшемпоступает навходсинтаксическогоанализатора.Имеется двевозможностиих связи:
— раздельнаясвязь, при которойвыход лексическогоанализатораформируетсяполностью изатем передаетсясинтаксическомуанализатору;
— нераздельнаясвязь, когдасинтаксическомуанализаторутребуетсяочереднойобраз лексемы, он вызываетлексическийанализатор, которыйгенерируеттребуемыйдескриптори возвращаетуправлениесинтаксическомуанализатору.
Второйвариант характерендля однопроходныхтрансляторов, который и реализуетсяв данной модели.Таким образом, процесс лексическогоанализа можетбыть достаточнопростым, но всмыслевремени компиляцииоказываетсядовольно долгим.Больше половинывремени, затрачиваемогокомпиляторомна компиляцию, приходитсяна этап лексическогоанализа. Несмотряна это, данныйспособ позволяетуспешно решатьзадачи, поставленныепользователемперед программой.
Заключение
Цельюданной работыявлялось изучениеорганизации32-разрядногомикропроцессорафирмы Motorola.Данная цельбыла достигнутапосредствомнаписанияпрограммноймодели данногомикропроцессора.
В ходе работыбольшое вниманиеуделено функциональнымособенностямобъекта разработки, способам организации, системе команд, представлениюисходных данныхв различныхсистемах исчисления.Данное программноеизделие можетбыть использованопри обучениистудентов.Наглядныйинтерфейс, простота вработе, широкиевозможностипозволяют лучшепонять структурумикропроцессора.Объектно –ориентированныеметоды написанияпрограммноймодели позволяютв дальнейшемусовершенствоватьеё структуру, превратив темсамым программнуюмодель микропроцессорав программнуюмодель микроЭВМ.
Списокиспользованныхисточников
1. Internet.Сайты, посвящённыемикроэлектронике, в частностиwww.Gaw.ru, раздел посвящённыймикропроцессорам.
2. Жмакин А.П.Курс лекцийпо микропроцессорам.
3. ФароновВ.В. Delphi5. Учебный курс, М., “Knowledge”,2001 год.
4 Юров. В.Assembler., Санкт-Петербург: Питер” 2000 г.
5. ФароновВ. В. Delphi5. Учебный курс.-М.:«Нолидж», 2001. –608с., ил.
6. АрхангельскийА. Я. Программированиев Delphi4 – М.: ЗАО “ИздательствоБИНОМ”, 1999 г. – 768с., ил.
7. ДантеманДжефф, МишелДжим, ТейлорДон. Программированиев среде Delphi: Пер с англ. /ДантеманнДжефф, ТейлорДжон. – К.: НИПФ“ДиаСофтЛтд.”,1995. – 608 с.
8. ФёдоровА. Г. СозданиеWindows– приложенийв среде Delphi:- М.: ТОО фирма“КомпьютерПресс”,1995. – 287 с., с ил.
9. Проектированиеаппаратныхи программныхсредств переработкиинформации./Методическиеуказания длявыполненияработы бакалавра.– КГТУ. Курск.
10. ЛишнерР. Секреты Delphi2: Пер. с англ. –Киев НИФП“ДиаСофтЛтд”,1996. – 800 с.
тип>указатель>типлексемы>