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