Что означает Backpatching?
что значит backpatching
в смысле ? Проиллюстрируйте это простым примером.
7 ответов
обратное исправление обычно относится к процессу разрешения прямых ветвей, которые были посажены в коде, например, в операторах "if", когда значение цели становится известным, например, когда встречается закрывающая скобка или соответствие "else".
на промежуточном этапе генерации кода компилятора нам часто нужно выполнять инструкции "перехода" в места в коде, которые еще не существуют. Для работы с такими случаями для этой инструкции вставляется метка назначения. Нетерминальный маркер в производственном правиле вызывает семантическое действие.
Backpaching-это процесс оставления пустых записей для инструкции goto, где целевой адрес не указан в прямой передаче в первом проходе и заполнение этих неизвестных во втором проходе.
Backpatching: Определение синтаксиса может быть реализовано в двух или более проходах (у нас есть как синтезированные атрибуты, так и унаследованные атрибуты).
сначала постройте дерево.
прогулка по дереву в глубине-первый порядок.
основная трудность с генерацией кода за один проход заключается в том, что мы можем не знать цель ветви, когда мы генерируем код для потока управляющих операторов
Backpatching-это техника, чтобы обойти это проблема. Создание инструкций ветви с пустыми целями Когда цель известна, заполните метку инструкции ветви (backpatching).
некоторые операторы, такие как условные операторы, while и т. д. будет представлен как куча синтаксиса" if "и" goto " при генерации промежуточного кода. Проблема в том, что эти инструкции "goto" не имеют действительная ссылка в начале (когда компилятор начинает читать исходный код строка за строкой-A. K. A 1-й проход). Но, прочитав весь исходный код в первый раз,метки и ссылки эти "Гото" указывают, определяются.
проблема в том, что мы можем сделать компилятор способным заполнить X в операторах "goto X" за один проход или нет? Ответ-да.
Если мы не используем backpatching, то это может быть достигано анализом 2 проходов на исходном коде. Но, backpatching позволяет нам создавать и удерживать отдельным списком который предназначен исключительно для операторов" goto". Поскольку это делается только за один проход, первый проход не заполняется X в операторах "goto X", потому что комиплер не знает где X на первый взгляд. Но, это делает магазины X в этом эксклюзивном списке и после прохождения всего кода и нахождения этого X на X заменяется этим адресом или ссылкой.
backpatching-это процесс, в котором поле операнда инструкции, содержащей прямую ссылку, изначально остается пустым. адрес символа прямой ссылки помещается в это поле, когда его определение встречается в программе.
исправление-это деятельность по заполнению неопределенной информации этикеток используя соответствующее семантическое выражение в процессе генерации кода.
Это делается:
- логическое выражение.
- подача заявления управления.