Эмили
Прямая ссылка обычно используется на языке ассемблера. При прямой ссылке на переменную или метку ссылаются до ее объявления. Различные проблемы могут быть решены с помощью одно- или двухпроходной прямой ссылки. В One Pass с прямым обращением к исходной программе программа транслируется инструкция за инструкцией. Ассемблер оставляет адресное пространство для метки, когда на нее ссылаются, и когда ассемблер обнаруживает объявление метки, он использует обратное исправление. Двухпроходное прямое реферирование состоит из двух проходов.
Во время первого прохода таблица символов, таблица кодов операций и таблица меток сохраняются. В таблице кодов операций хранятся размер и адрес инструкции. Этикетка и адрес этикетки хранятся в таблице этикеток. Когда метка встречается, ее имя сохраняется в таблице меток, когда обнаруживается объявление метки, его местоположение также сохраняется в таблице меток.
Во время 2-го прохода выполняется перевод с исходного языка на машинный. Адреса инструкций и адреса меток используются из таблицы символов вместо их имен. Компилятор не знает, где программа будет выполняться в памяти, поэтому компилятор сгенерировал логические адреса вместо абсолютного адреса. Загрузчик также использует константу перемещения для решения проблемы перемещения. Проблема внешних ссылок решается компоновщиком во время компиляции. Линдер связывает объектную программу с кодом стандартных библиотечных функций.