Инструкция - переход - Большая Энциклопедия Нефти и Газа, статья, страница 3
В развитом обществе "слуга народа" семантически равен "властелину народа". Законы Мерфи (еще...)

Инструкция - переход

Cтраница 3


Метки как локальные синтаксические указатели во время трансляции. Простейший подход состоит в том, чтобы ограничить использование меток и инструкций перехода лишь теми ситуациями, когда возможна их непосредственная трансляция в аппаратные конструкции адресов команд и команд перехода. Таким образом, допускается простое и эффективное моделирование структуры меток и инструкций перехода. Чтобы осуществить соответствующее моделирование, транслятор должен иметь возможность приравнять каждой метке ее адрес во время выполнения так, чтобы можно было транслировать инструкции перехода в эквивалентные команды перехода. Обычно при трансляции организуется таблица меток. Во время генерирования выполняемой программы каждой метке в этой таблице сопоставляется эквивалентный ей ( относительный) адрес в выполняемой программе. По окончании трансляции таблица меток уничтожается. Наилучшим примером этого подхода является Фортран. Внутри каждой подпрограммы на Фортране все метки инструкций должны быть различными. Не допускаются ссылки извне подпрограммы на ее внутренние метки; отсутствие внутри подпрограммы метки, на которую есть ссылка из этой подпрограммы, считается ошибкой. В Фортране всегда возможно странслировать метки в относительные машинные адреса еще до начала выполнения программы.  [31]

Инструкции перехода создают неудобства как для программистов, так и для разработчиков транслятора. Что касается программистов, то общепризнано, что широкое использование переходов в программе свидетельствует о плохой ее разработке. Программу, использующую переходы для управления последовательностью действий, трудно отладить, еще труднее понять ее. Основную трудность вызывает прослеживание структуры таких программ. При последовательном анализе программы каждая помеченная инструкция ставит перед нами проблему; действительно, этой инструкции может быть передано управление из любого места программы, а определить, откуда именно, невозможно без полного просмотра программы. Подобно этому, при достижении группы инструкции перехода управление может быть передано по многим направлениям, и нет простого способа выяснить, как соотносятся эти различные направления.  [32]

Структуры, управляющие последовательностью действий, могут быть как неявными, так и явными. Неявными ( подразумеваемыми по умолчанию) называются структуры, которые по определению языка, действуют во всех случаях, когда программист не изменяет их посредством какой-нибудь явной структуры. Например, в большинстве языков определяется, что физическая последовательность инструкций в программе управляет последовательностью выполнения инструкций, если она не изменяется с помощью инструкций явного управления последовательностью действий. Обычно языки определяют также иерархию операций внутри выражения, которая управляет последовательностью выполнения операций в случае отсутствия скобок. Явные структуры управления последовательностью действий - это те структуры, которые программист может использовать по своему желанию для изменения подразумеваемой последовательности операций, определяемой языком. К ним относятся, например, скобки в выражениях а также инструкции перехода ( goto) и метки.  [33]

Чтобы обеспечить такую общность необходимо во время выполнения программы иметь возможность определять для каждой метки соответствующую позицию в программе. Таким образом, нужна таблица меток и адресов в программе, сохраняемая во время выполнения. Типичными языками, придерживающимися этого подхода, являются Снобол 4 и АПЛ. В АПЛ выполняемая форма программы очень похожа на исходную форму, причем каждой инструкции сопоставлен номер строки. Номера строк представляют собой простую таблицу меток, действительную во время выполнения, поэтому вполне естественно использовать эту таблицу для вычисления меток. Метки могут быть только целыми числами, и любое целочисленное выражение можно использовать в инструкции перехода. В языке Снобол 4 наблюдается аналогичное положение, но в нем метки являются цепочками литер.  [34]



Страницы:      1    2    3