Исправление alysnix, (текущая версия) :
Это уже не однопроходная в терминологии нашего собеседника, так как есть второй проход для простановки констант.
апдейт прошлых позиций есть в любом случае. например при компиляции булевых выражений.
if ((a > 0 && b == 0) || some_fun(...)) {
...
}
else {
...
}
здесь если a <= 0, должен быть джамп на some_fun(). а если some_fun() == false джамп на else блок.
тут поступают аналогично. ведется список true и false джампов, которые апдейтятся, как только когда становится понятным адрес, куда им прыгать.
Исходная версия alysnix, :
Это уже не однопроходная в терминологии нашего собеседника, так как есть второй проход для простановки констант.
апдейт прошлых позиций есть в любом случае. например при компиляции булевых выражений.
if ((a > 0 && b == 0) || some_fun(…)) { … } else { … }
здесь если a <= 0, должен быть джамп на some_fun(). а если some_fun() == false джамп на else блок.
тут поступают аналогично. ведется список true и false джампов, которые апдейтятся, как только когда становится понятным адрес, куда им прыгать.