Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » 13_Схема работы транслятора с языка Ассемблер

13_Схема работы транслятора с языка Ассемблер (В.Г. Баула - Введение в архитектуру ЭВМ и системы программирования), страница 2

PDF-файл 13_Схема работы транслятора с языка Ассемблер (В.Г. Баула - Введение в архитектуру ЭВМ и системы программирования), страница 2 Практика расчётов на ПЭВМ (37026): Книга - 1 семестр13_Схема работы транслятора с языка Ассемблер (В.Г. Баула - Введение в архитектуру ЭВМ и системы программирования) - PDF, страница 2 (37026) - СтудИзб2019-04-28СтудИзба

Описание файла

Файл "13_Схема работы транслятора с языка Ассемблер" внутри архива находится в папке "В.Г. Баула - Введение в архитектуру ЭВМ и системы программирования". PDF-файл из архива "В.Г. Баула - Введение в архитектуру ЭВМ и системы программирования", который расположен в категории "". Всё это находится в предмете "практика расчётов на пэвм" из 1 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 2 страницы из PDF

13.1 показана таблица имён пользователя, которая построится синтаксическим анализатором при просмотре показанной выше программы до предложенияmov ax,Data1Напоминаем, что если имя пользователя встречается в позиции метки или в параметрах директивыextrn, то это его описание или объявление, а если имя встречается в поле операндов или в коде операции(для имён макрокоманд) – то это использование имени. Все используемые в программном модуле имена пользователя, естественно, должны быть описаны или объявлены в этом же модуле.2Здесь есть небольшая тонкость. Хотя передать управление на команду, помеченную, например, меткой Lв другом сегменте этого же модуля можно только по команде дальнего перехода jmp far ptr L , однакотип этой метки в данном модуле всё равно будет равен near=-1 (т.е.

type L=near ).4включительно. Атрибуты, которые не могут быть у данного имени, отмечены прочерком.ИмяDataSegmentOffsetType–––Valuei16=?Data–––00ABData21––––––CodeX2––––––0i16=?i16=?i16=?-2–––Рис. 13.1. Вид таблица имён модуля после анализапредложения mov ax,Data .Как мы уже знаем, значения атрибутов некоторых имён остаются неизвестными на этапе компиляции, они будут определяться позже во время редактирования внешних связей и загрузки программы на выполнение. Такие значения мы обозначили в нашей таблице как i16=?. Для каждого заносимого в таблицу имени, кроме атрибутов, ещё запоминается и место в предложении, на котором встретилось это имя (т.е. отмечается, что имя уже описано или объявлено, или же только использовано досвоего описания или объявления).Итак, теперь синтаксический анализатор рассматривает предложениеmov cx,RВ этой команде используется имя R, однако, так как этого имени ещё нет в таблице имён.

В этомслучае оно заносится туда (ниже приведена строка таблицы для этого имени) Этого имени не было втаблице потому, что оно ещё не описано и про него ничего неизвестно, поэтому и все поля атрибутовв таблице имеют пока неопределённые значения:R????Соответственно, невозможно определить и точный код операции команды mov cx,R , так каквторой операнд этой команды, вообще говоря, может иметь любой из допустимых для этой командыформатов r16,m16 или i16. На этом примере ярко видна необходимость второго просмотра текста программы: только на втором просмотре, после получения информации об атрибутах имени R,возможно определить правильный формат этой команды (а значит, в частности, определить и длинуэтой команды в байтах).После полного просмотра программы синтаксический анализатор построит таблицу имён, показанную на рис.

13.2.1ИмяDataSegmentOffsetType–––0ValueI16=?AData–––0BData21––––––––––––0I16=?i16=?i16=?-2–––R––––––0-14LCode19-1–––CodeX2Рис. 13.2. Вид таблицы имён после анализа всего модуля.На этапе синтаксического анализа выявляются все синтаксические ошибки в программе, например:mov ax,bl; Несоответствие типовmov ax,L; Несоответствие типовadd A,A+2; Несуществующий формат командыsub cx; Мало операндов1Для простоты изложения мы все имена поместили в одну таблицу. В то же время имена, являющиесявходными точками (public), а также внешние имена модуля (extrn), либо должны иметь соответствующиедополнительные атрибуты, либо помещаться в другую таблицу внешних и входных имён. Информация о такихименах, как мы знаем, помещается компилятором с Ассемблера в паспорт объектного модуля.5и т.д.

Используя таблицу имён, синтаксический анализатор легко обнаруживает ошибки следующеговида:1. Неописанное имя. Имя не является внешним (extrn), но встречается только в позиции использования (в поле операндов) и ни разу не встречается в поле метки.2. Дважды описанное имя. Одно и то же имя дважды (или большее число раз) встретилось в поле метки.13. Описанное, но не используемое имя. Это предупредительное сообщение может выдаватьсянекоторыми "продвинутыми" Ассемблерами, если имя определено в поле метки, но ни разуне встретилось в поле операндов и отсутствует в параметрах директив public (видимо, программист что-то упустил).Кроме того, синтаксический анализатор может обнаружить и ошибки, относящиеся к модулю вцелом, например, превышение максимальной длины некоторого сегмента, отсутствие сегмента стекав головном модуле, использование метки команды (т.е.

имени с двоеточием) в предложении резервирования памяти и т.д.Итак, на втором проходе синтаксический анализатор обнаруживает все ошибки в программноммодуле и однозначно определить формат каждой команды.2 Теперь можно приступать к последнемуэтапу работы транслятора – генерации объектного модуля. На этом этапе все числа преобразуются вовнутреннее машинное представление, выписывается битовое представление всех команд, оформляется паспорт объектного модуля.

Далее полученный объектный модуль записывается в библиотекуобъектных модулей (обычно куда-нибудь в дисковую память).На этом мы завершим наше краткое знакомство со схемой трансляции исходного модуля с языкаАссемблера на объектный язык.Вопросы и упражнения1.2.Что означает, что компилятор с Ассемблера двухпроходный?Какую работу выполняет лексический анализатор транслятора? Приведите примеры лексических ошибок в программе.Что такое таблица лексем, когда она получается и для чего нужна?Как определить, когда в программе некоторое имя используется, а когда – описывается (объявляется)?Какие атрибуты есть у имён пользователя?Что такое таблица имён пользователя?Перечислите случаи, когда использование имени пользователя в позиции метки более одногораза не является ошибкой.Приведите примеры, когда конкретный формат команды может быть определён только на втором проходе компилятора.3.4.5.6.7.8.1Исключением из этого правила, как мы знаем, являются имена сегментов и имена процедур, которыедолжны встретиться в поле метки соответствующих директив ровно два раза, а также имена макроопределений(макроопределение, описанное позже, как мы знаем, переопределяет одноимённое макроопределение, описанное ранее).2Замечание для продвинутых читателей.

Вспомним, что при написании макроопределений мы использовали средства условной генерации для контроля типов переданных параметров и выдавали необходимую диагностику об ошибках использования макрокоманды. Этим мы, по существу, дополняли средства синтаксического анализатора Ассемблера. Таким образом, обычный пользователь-программист, используя макросредства, посуществу способен расширить возможности служебной программы – компилятора..

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5224
Авторов
на СтудИзбе
428
Средний доход
с одного платного файла
Обучение Подробнее