Главная » Просмотр файлов » Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002)

Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801), страница 21

Файл №1160801 Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002)) 21 страницаТ. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801) страница 212019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Различие заключается в том, что хост-компьютер в этом случае специально конструируется для микропрограммированпя н способен обеспечить скорость выполнения программ на моделируемом компьютере, сравнимую со скоростью работы соответствующей аппаратной реализации. Микропрограммируемое моделирование компьютера иногда называется эмуляцией. Получившийся в результате компьютер называется виртуальным компьютером, поскольку он смоделирован микропрограммой, без которой он бы просто не существовал. 2.1.3. Трансляторы и виртуальная архитектура Теоретически возможно создать аппаратный илн программно-аппаратный компьютер, на котором непосредственно выполнялись бы программы, написанные на любом избранном языке программирования. Таким образом получился бы компьютер с соответствующим машинным языком, например С, Рго1оя, 1.1ЯР и т.

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

Для этой задачи существует два основных решения. 1. Трансляция (компиляция). Можно сконструировать транслятор, который будет переводить программы, написанные на языках высокого уровня, в эквивалентные программы на машинном языке используемого компьютера. Затем интерпретатор и простейшие операции, встроенные в аппаратную часть компьютера, непосредственно выполняют оттранслированную в машинный код программу. Общий термин транслятор используется для обозначения любого языкового процессора, который воспринимает программы на некотором исходном языке в качестве входных данных (этот исходный язык может быть как высокого, так и низкого уровня), а на выходе выдает эквивалентные по своей функциональности программы, но уже на другом, так называемом обьектном языке (который также может быть произвольного уровня). Существуют термины для обозначения некоторых специальных типов трансляторов: + Ассемблер — это транслятор, у которого объектный язык представляет собой некую разновидность машинного языка какого-либо реального компьютера, а исходный язык, называемый языком ассемблера, или просто ассемблером, — это, как правило, символическое представление объектного машинного кода.

В большинстве слу ~аев каждая инструкция на исходном языке переводится в одну команду на объектном языке. 74 Глава 2. Влияние машинной архитектуры + Компилятор — это транслятор, для которого исходным является язык высокого уровня. Объектный язык близок к машинному языку реального компьютера — это либо язык ассемблера, либо какой-нибудь вариант машинного языка. Например, программы на языке С компилируются, как правило, в программы на языке ассемблера, которые затем транслируются ассемблером в машинный язык. + Загрузчик, или редактор связей, — это транслятор, у которого объектный язык состоит из готовых к выполнению машинных команд, а исходный язык почти идентичен объектному. Обычно он состоит из программ на машинном языке в перемев1авмой форме и таблиц данных, указывающих те точки, в которых перемещаемый код должен быть модифицирован, чтобы стать действительно выполняемым.

Например, некоторая подпрограмма Р может быть откомпилирована таким образом, что она должна размещаться и использовать область памяти с адресами от О до 999, а подпрограмма Π— область памяти с адресами от О до 1999. Помимо того, эти подпрограммы могут использовать библиотечные функции, для которых определены адреса памяти от О до 4999. Задачей загрузчика является создание единой выполняемой программы, в которой используются согласованные адреса, как показано в следую1цей таблице. Выполняемая программа устроена как единая программа с используемыми адресами от О до 7999.

Подпрограмма Адреоа после компиляции Адреоа в выполняемой программе 0-999 0-1999 0-4999 Р 0 Библиотека 0-999 1000-2999 3000-7999 + Препроцессор, или макропроцессор, — это транслятор, исходный язык которого является расширенной формой какого-либо языка высокого уровня (например,зача или С.Р-Р), а объектный язык — стандартной версией этого языка. Объектная программа, созданная препроцессором, готова к трансляции и выполнению обычными процессорами исходного стандартного языка.

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

Более того, сама фаза компиляции может включать в себя несколько последовательных этапов, каждый из которых соответствует определенной промежуточной форме программы, прежде чем получится конечная объектная программа. 2.1. Структура и принципы работы компьютера 75 2.

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

Другими словами, при помощи программ, выполняемых на хост-компьютере, создается (мелел ируется) компьютер с машинным языком высокого уровня; этот компьютер мог бы быть создан и аппаратным способом. Подобный метод называется программной имитацией (или программной интерпретацией) компьютера с машинным языком высокого уровня на хост-компьютере. Для моделируемой машины входными данными являк>тся программы на языке высокого уровня.

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

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

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

Но чистая трансляция и чистая интерпретация — это две крайности; на практике обычно эти технологии используются вместе, лополняя друг друга. Чистая трансляция используется достаточно редко. Это происходит, как правило, если исходный язык достаточно близок к машинному языку, как в случае с ассемблером. Так же редки случаи использования чистой интерпретации — она применяется для интерактивных языков и для языков управления операционными системами.

Чаще всего для реализации языка на компьютере используется комбинированный подход, как показано на рис. 2.3. Сначала программа транслируется из своей исход- 76 Глааа 2. Влияние машинной архитектуры ной формы я форму, более удобную для выполнения. Обычно это делается с помощью нескольких независилтых частей программы, называемых процедурами или подл)тограммаии. На этапе загрузки эти независимые части объединяются с набором программ поддержки выполнения (гпп-Гппе зпррогс гоцс)пез), реализутощих программно-моделируемые операции, что приводит к созданию выполняемой формы программы, операторы которой декодируются и выполняются посредством их интерпретации.

Исходная Транслятор программа (прттграмма) , Выполняемая программа Библиотека ) поддержки выполнения, Виртуальный компьютер (полностью или частично программно смоделированный) Сообщение об ошибках трансляции Компоновщик Выходные данные Исходная Транслятор программа 1поогоамма) Объектные программы Сообщение об ошибках данные, трансляции необходимые дпя выполнения программ Сообщение об ошибках ТРАНСЛЯЦИЯ ЗАГРУЗКА ВЫПОЛНЕНИЕ Рис. 2.3. Структура типичной реализации языка программирования При реализации языка программирования и трансляция, и интерпретация имеют свои преимущества.

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

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

Список файлов книги

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