Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Топ:
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного хозяйства...
Методика измерений сопротивления растеканию тока анодного заземления: Анодный заземлитель (анод) – проводник, погруженный в электролитическую среду (грунт, раствор электролита) и подключенный к положительному...
Оценка эффективности инструментов коммуникационной политики: Внешние коммуникации - обмен информацией между организацией и её внешней средой...
Интересное:
Уполаживание и террасирование склонов: Если глубина оврага более 5 м необходимо устройство берм. Варианты использования оврагов для градостроительных целей...
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Средства для ингаляционного наркоза: Наркоз наступает в результате вдыхания (ингаляции) средств, которое осуществляют или с помощью маски...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Пусть в качестве машинного языка выступает язык программирования Бейсик. Его особенностью является обязательная нумерация строк и отсутствие символьных меток. Поэтому в операторах перехода в качестве меток используют номера строк, на которые нужно передать управление.
Для построения МП-автомата по переводу ОПЗ в машинные коды и его семантических процедур введем ряд внутренних переменных:
| P | - | счетчик вспомогательных переменных; |
| STR | - | счетчик строк (этот счетчик вводится ввиду специфики выбранного выходного языка - Бейсика, где обязательна нумерация строк; при трансляции в другие выходные (машинные) языки этот счетчик не нужен); |
Кроме того, организуем таблицу меток, которая реализует отображение символьных меток исходного языка в номера строк машинного языка:
| Метка | Номер строки |
Эта таблица потребуется в дальнейшем для замены символьных меток на номера строк, что также является особенностью Бейсика как выходного языка.
Рассмотрим работу МП-автомата.
1. Если элемент входной строки ‑ идентификатор или константа, то он заносится в стек (в исходном виде, т.е. не условное обозначение, а имя из таблицы идентификаторов или константа из таблицы констант); вспомогательные переменные и константы переносятся без изменения.
2. Для каждой операции и оператора определяется арность, т.е. количество операндов, и соответствующая семантическая процедура.
3. После выполнения каждой семантической процедуры в выходную строку заносится символ <ВК>, счетчик строк STR наращивается на единицу и заносится в начало новой строки.
Семантические процедуры для операторов и операций приведены в табл. 3.1.
Таблица 3.1
| Лексема | Действия |
| НП | Извлечь из стека два элемента, занести в выходную строку текст "REM Начало процедуры арг2, арг1" |
| КП | Занести в выходную строку текст "REM Конец процедуры" |
| DFD BFD DFT CHAR | Извлечь из стека арг1 - число переменных k; извлечь из стека k аргументов; занести в выходную строку текст "REM Вещественные переменные арг1, арг2,..,аргk" |
| КО | Извлечь из стека два аргумента |
| УПЛ | Извлечь из стека два аргумента, занести в выходную строку текст " IF NOT(арг2) THEN GOTO арг1" |
| БП | Извлечь из стека один аргумент, занести в выходную строку текст "GOTO арг1" |
| : | Извлечь из стека один аргумент, занести в таблицу меток арг1 и значение счетчика STR |
| + * > < | Извлечь из стека два аргумента, нарастить счетчик вспомогательных переменных Р, занести в выходную строку текст "Rp = арг2 <операция> арг1", занести в стек Rp. |
| := | Извлечь из стека 2 аргумента и занести в выходную строку текст " арг2 = арг1 " |
В стеке арг1 – это элемент, находящийся в вершине стека. Увеличение номера аргумента показывает его удаление от вершины стека и обратно порядку занесения элементов в стек.
Для арифметических выражений в целях уменьшения количества операторов присваивания и временных переменных возможен вариант формирования строки "(арг2 <операция> арг1)" и занесение ее в стек как единого аргумента для последующих операций и операторов. Недостатком такого подхода является избыточность круглых скобок в выражениях.
В языке Бейсик символьных меток не существует, поэтому необходим дополнительный просмотр сгенерированного текста с целью замены в нем символьных меток на номера строк в соответствии с построенной таблицей меток.
3.3 Комплексный пример перевода ОПЗ исходной программы в машинный код
Рассмотрим комплексный пример генерации машинного кода на языке Бейсик по ОПЗ исходной программы, которая была построена в примере, рассмотренном в лабораторной работе № 2.
MAIN 1 1 НП A1 A2 2 DFD 1 1 КО A1 378:= A2.73:= CALC2 2 НП
SUM MULT 2 BFD 2 2 КО A1 A2 + 3.2 > M1 УПЛ P БП М1: SUM A2 A1 +:=
P: MULT A1 A2 SUM + *:= КП КП
Последовательность действий МП-автомата изобразим в виде таблицы (табл. 3.2), в строке которой будем записывать состояние стека, счетчика переменных P, счетчика строк STR после обработки элемента ОПЗ, а также сформированный фрагмент машинного кода.
Таблица 3.2
| Шаг | Элемент ОПЗ | Стек | P | STR | Машинный код |
| 0. | ‑ | ‑ | |||
| 1. | MAIN | MAIN | |||
| 2. | 1 MAIN | ||||
| 3. | 1 1 MAIN | ||||
| 4. | НП | ‑ | 1 REM Начало процедуры MAIN | ||
| 5. | A1 | A1 | |||
| 6. | A2 | A2 A1 | |||
| 7. | 2 A2 A1 | ||||
| 8. | DFD | ‑ | 2 REM Вещественные переменные А1, А2 | ||
| 9. | |||||
| 10. | 1 1 | ||||
| 11. | КО | ‑ | |||
| 12. | A1 | A1 | |||
| 13. | 378 A1 | ||||
| 14. | := | ‑ | 3 A1=378 | ||
| 15. | A2 | A2 | |||
| 16. | .73 | .73 A2 | |||
| 17. | := | ‑ | 4 А2=.73 | ||
| 18. | CALC | CALC | |||
| 19. | 2 CALC | ||||
| 20. | 2 2 CALC | ||||
| 21. | НП | ‑ | 5 REM Начало процедуры CALC | ||
| 22. | SUM | SUM | |||
| 23. | MULT | MULT SUM | |||
| 24. | 2 MULT SUM | ||||
| 25. | BFD | ‑ | 6 REM Вещественные переменные SUM, MULT | ||
| 26. | |||||
| 27. | 2 2 | ||||
| 28. | КО | ‑ | |||
| 29. | A1 | A1 | |||
| 30. | A2 | A2 A1 | |||
| 31. | + | R1 | 7 R1=A1+A2 | ||
| 32. | 3.2 | 3.2 R1 | |||
| 33. | > | R2 | 8 R2=R1>3.2 | ||
| 34. | M1 | M1 R2 | |||
| 35. | УПЛ | ‑ | 9 IF NOT(R2) GOTO M1 | ||
| 36. | P | P | |||
| 37. | БП | ‑ | 10 GOTO P | ||
| 38. | М1 | M1 | |||
| 39. | : | ‑ | Занести в таблицу меток пару M1, 11 | ||
| 40. | SUM | SUM | |||
| 41. | A2 | A2 SUM | |||
| 42. | A1 | A1 A2 SUM | |||
| 43. | + | R1 SUM | 11 R1=A2+A1 | ||
| 44. | := | ‑ | 12 SUM=R1 | ||
| 45. | P | P | |||
| 46. | : | ‑ | Занести в таблицу меток пару P, 13 | ||
| 47. | MULT | MULT | |||
| 48. | A1 | A1 MULT | |||
| 49. | A2 | A2 A1 MULT | |||
| 50. | SUM | SUM A2 A1 MULT | |||
| 51. | + | R1 A1 MULT | 13 R1=A2+SUM | ||
| 52. | * | R1 MULT | 14 R1=A1*R1 | ||
| 53. | := | ‑ | 15 MULT=R1 | ||
| 54. | КП | ‑ | 16 REM Конец процедуры | ||
| 55. | КП | ‑ | 17 REM Конец процедуры |
После замены символьных меток на числовые получим следующий машинный код
1 REM Начало процедуры MAIN
2 REM Вещественные переменные А1, А2
3 A1=378
4 А2=.73
5 REM Начало процедуры CALC
6 REM Вещественные переменные SUM, MULT
7 R1=A1+A2
8 R2=R1>3.2
9 IF NOT(R2) GOTO 11
10 GOTO 13
11 R1=A2+A1
12 SUM=R1
13 R1=A2+SUM
14 R1=A1*R1
15 MULT=R1
16 REM Конец процедуры
17 REM Конец процедуры
Полученный текст на машинном языке соответствует всем требованиям языка Бейсик.
|
|
|
История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!