Что означает 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.
  • поток управляющего оператора.