Главная » Просмотр файлов » Virt N. Algoritmy struktury dannyh = programmy (ru)(T)(410s)

Virt N. Algoritmy struktury dannyh = programmy (ru)(T)(410s) (522393), страница 62

Файл №522393 Virt N. Algoritmy struktury dannyh = programmy (ru)(T)(410s) (Алгоритмы + структуры данных = программы) 62 страницаVirt N. Algoritmy struktury dannyh = programmy (ru)(T)(410s) (522393) страница 622013-09-14СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 62)

Интерпретатор должен добавлять к этому так называемому смеи(гнию базовый адрес соответствующего сегмента данных. Если переменная локальна и процедуре, интерпретируемой в данный момент, то этот базовый адрес задается регистром В. В противном случае его можно получить, спускаясь по цепочке сегментов данных. Однако транслятору может быть известна только статическая глубина пути доступа к переменной, тогда как динамическая цепочка (цепочка динамических связок) отражает динамическую истори>о обращений к процедурам. К сожалеишо, эти два пути доступа нс обязательно одинаковы. Например, пусть процедура Л обращается к процедуре В, описанной как локальная в Л, процсдура В вызывает С, опК. зло.

гтрачессар тта710 санную как локальная в В, а С вызывает В рекурсивно. Мы говорим, что А описана на уровне 1,  — на уровне 2, С вЂ” на уровне 3 (см. рпс. 5.7). Если в В имеется обращение к переменной о, описанной как локальная в А, то транслятору известно, что между А и В супцествует разница уровней, равная 1. Однако один шзг по динамической цепочке приводит ь переменной, локальной в С! оь нА яь Рис.

5.7. Стек иашииы дхя Гхгцо. Поэтому ясно, что нужно иметь вторую цепочку связей, которая связывает сегменты данных таким способом, чтобы транслятор мог правильно воспринимать ситуацию. Мы назовем элементы этой цепочки статической связкой 81., Итак, адреса формируются в виде пар чисел, указывающих статическую разность уровней и относительное смещение внутри сегмента данных. Мы счятаем, что каждая ячейка памяти может содержать адрес илн целое число. Множество команд машины ПЛ/О приспособлено к требованиям языка ПЛ/О. Оно содсрлсит такие команды: 1. Засылки чисел (констант) в стек (Е1Т), 2. Считывания переменных в вершину стека (ЕОР).

3. Записи значения, находящегося в вершине стека (ЬТО), (Соответствует оператору присваивания.) 4. Команда актпвашш подпрограммы, соответствующая об- ращению к процедуре (СЛь), 376 Ю. Структура языков и трансляторы 5. Выделение памяти для стека путем увеличения указателя стека Т (15)Т). 6. Команды условной и безусловной передачи управления, ис. пользуемые в условных операторах и циклах ()Л1Р, )РС), 7. Команда, выполняющая арифметические действия и сравнения (ОРК). Так как в команду должны входить трп компоненты, то она имеет следующий формат (см, рис.

5.8). Здесь присут- Ряс. 6.8. Формат команды. ствуют код операции ()) и параметр, состоящий из одной или двух частей (а и Ь либо только п)*). В случае команды ОРЙ, выполняющей некоторое действие, параметр а задает это действие; в других случаях это либо число (1.1Т, 15)Т), либо адрес в программе ()Л1Р, )РС, СА1.), либо адрес данных (1.ОТ), ЯТО).

Подробно работа машины ПЛ/О определяется процедурой, называемой (пгегртег, которая является частью программы 5.6, объединяющей законченный транслятор с интерпретаторам в систему, которая транслирует, а затем выполняет программы на ПЛ/О. Л(ы предлагаем в качестве упражнения модифицировать эту программу, чтобы она формировала рабочую программу для какого-либо существующего процессора.

Необходимое для этого увеличение йрограммы можно считать мерой того, насколько выбранная вычислительная машина подходит для поставленной задачи. Безусловно, представленную вычислительную машину ПЛ/О можно было бы организовать более искусно, с тем чтобы некоторые операпии выполнялись эффективнее. Например, можно было бы улучшить механизм адресации. Принятая схема была выбрана нз-за ее простоты, а также потому, что все усовершенствования должны фактически основываться на ней и из нее выводиться. ЗЛИ ФОРМИРОВАНИЕ КОМАНД Чтобы транслятор мог сформировать команду, ему должны быть известны ее код операции и параметр, который представляет собой либо число (саму константу), либо адрес. Эти значения транслятор связывает с соответствующими иденти- ") Поле у в команде (или параметре) всволвзустся для указююя уровня (зеве)).— Прим. ред, 5.11.

Формирование команд 377 фнкаторамн при обработке описаний констант, переменных н процедур. Для этой цели таблица идентификаторов дополнена атрибутами, присущими каждому идентификатору. Если идентификатор обозначает константу, то его атрибутом является значение этой константы, если идентификатор обозна~ает переменную, то его атрибутом является ее адрес, состояший из смещения и уровня, а если он обозначает процедуру, то его атрибутами являются адрес входа в эту процедуру и ее уровень. Расширенное соответствующим образом описание переменной 1иЫе («таблица») показано в программе 5.6.

Это наглядный пример поэтапного уточнення (или дополнения) описания данных, происходящего одновременно с уточнением операторной части программы. В то время как значения констант задаются в тексте программы, определять адреса транслятор должен самостоятельно. Язык ПЛ/О достаточно прост, поэтому переменные и команды размещаются в памяти последовательно. Следовательно, кагкдое описание переменной сопровождается увеличением индекса размещенпя данных на 1 (так как каждая переменная по определению машины ПЛ/О занимает ровно одну ячейку памяти). 1Лндекс размещения данных г(х должен инициироваться в начале трансляции любой процедуры, поскольку ее сегмент данных первоначально пуст, [В действительности г)х получает начальное значение 3, так как каждый сегмент данных содержит по крайней мере три внутренние переменные 1(А, 111., 5( (см.

предыдущий раздел).[ Соответствующие вычисления, позволяющие определить атрибуты идентификатора, включены в процедуру еи1ег, которая добавляет в таблицу новые идентификаторы, При наличии этой информации об операндах команды формируются довольно просто. Благодаря стековой организации машины ПЛ/О существует практически однозначное соответствие между операндами н операциямн исходного языка, с одноп стороны, и командами раоочсй программы, с другой стороньь['гранслятор лишь должен вйючпить необходимое преобразование в погггдикеную форму~Достфнксная форма означает, что знаки операции всегда следуют за своими операндами, а нс гставляются между ними, как в обычной инфиксной Форме. Постфнксную форму иногда также называют польской записью (так как ее «изобрел» поляк Лукасевнч) нлн бесскобонной записью, так как она делает скобки излишними.

Примеры соответствия между иификсной и постфиксной формами записи выражений приведены в табл. 5.4 (см. также разд, 4.4.2). (Очень простой способ выполнения такого преобразования: описан в процедурах ехргезз(ои и 1егт из программы 5.6. Он состоит в том, что передача знака арифметической операции 878 5. Структура нвиков и трансляторы Таблица 5.4. Выражения в инфиксноя и постфиксной элвисах просто задерживаетси.,",В этот момент читатель должен убедиться, что взацмная связь процедур грамматического разбора учитывает соответствующую интерпретацию принятыс правял приоритета различных операций, ' Трансляция условных операторов и циклов несколько менее тривиальна. В этом случае нужно формировать команды перехода, для которых сам адрес перехода иногда еще неизвестен.

Если обязательно, чтобы формируемые команды располагались строго последовательно в виде выходного файла, то необходима двупроходная схема транслятора. На втором проходе неполные команды перехода дополняются адресами. Друтое решение, реализованное в данном трансляторе, — это помещение команды в массив, т. е. в память с непосредственным доступом, что позволяе~ вставлять недостающие адреса, как только онн становятся известны. Такую операцию иногда называют фиксацией фхир). Единственное дополнптельное действие, которое нужно выполнять при формировании такого перехода вперед, — это запоминание его местоположения, т.

е. индекса в памяти для программы. Затем во время фиксации этот адрес используется для нахождения неполной команды. Детали опять можно видеть в программе 5.6 (см. процедуры, обрабатывающие операторы условия и цикла). Команды, соответствующие этим операторам, формируются па следующему шаблону (1.1 и 1.2 означают адреса команд): ИСИэеп5 1.1: команды для С 3РС Е2 команды для Я 2МР 1.1 1.2:... Для удобства вводи~ся вспомогательная процедура, называемая йеп.

Ей задаются три параметра, из которых она формирует команду. При этом автоматически увеличивается индекс сх, указывающий место, куда помещается очередная команда. 5.77. Формированив команд 879 Ниже в мнемонической форме приведена программа, полученная при трансляции процедуры умножения (5.14). Комментарии с правой стороны добавлены лишь для пояснения, 1нт 0,5 видеяияь линять дмг е8лввквлвкальньм ле~еменльгл 3 1.00 1,3 х 4 8ТО 03 а 5 йоо 14 у б ЗТО 04 Ь 7 ЫТ 00 0 8 ЗТО 1,5 9 ЬОО 04 Ь 1О ИТ 00 О !1 Орн 0,12 12 ЗРС О 29 13 100 04 Ь 14 ОРН 0,7 не«влгкд 15 ЗРС 0 20 16 1.00 1,5 17 1.00 0,3 , 18 ОРИ 0,2 ' 19 ЗТО 1,5 20 ЫТ 0,2 21 1.00 0,3 22 ОРЯ 04 23 8ТО 0,3 24 1.00 0,4 25 й17 0,2 26 ОРЯ 0,5 27 8ТО 0,4 28 ЗМР 09 29 ори о,о ддздрьгл7 Рабочаа программа, соотаотстпуюгцаа процедуре ПЛ!О (5.14).

Характеристики

Тип файла
DJVU-файл
Размер
9,82 Mb
Тип материала
Высшее учебное заведение

Список файлов учебной работы

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