В секции данных создается пробел с размером int, со значением 5, закодированным в нем, и глобальный нефункциональный символ с именем 'aglobal' добавляется в таблицу символов, указывающую на него. Ссылки на aglobal превращаются в перемещения, которые разрешаются во время соединения, чтобы указывать на этот блок данных, поэтому в полностью связанных изображениях инструкции будут загружаться непосредственно из той точки памяти, которая содержит значение 5
Например, сборка (x86) может выглядеть примерно так:
.data
.globl aglobal
aglobal: .long 5
.text
main:
mov eax, aglobal
В объектном файле инструкция mov преобразуется в mov eax, 0
с перемещением R_386_32 aglobal+0
, поскольку объектный файл не знает наверняка, где будет находиться секция данных в памяти.
В полностью связанном изображении это может быть что-то вроде:
mov eax, 0x804a010
Теперь фактический адрес 4 байтов в разделе данных известен, поэтому он указывается напрямую