Нет особого значения для адреса 0x8048080
, но есть значение для адреса 0x08048000
.
Последний адрес является адресом по умолчанию, с которого ld
запускает первый сегмент PT_LOAD
в Linux / x86. В Linux / x86_64 значением по умолчанию является 0x400000
, и вы можете изменить значение по умолчанию с помощью «настраиваемого» сценария компоновщика. Вы также можете изменить место, где раздел .text
начинается с флага -Wl,-Ttext,0xNNNNNNNN
.
После того, как ld
начинается с 0x08048000
, он добавляет пространство для заголовков программы и продолжает связывать остальную часть исполняемого файла в соответствии со встроенным сценарием компоновщика, который вы можете увидеть, если передать -Wl,--verbose
Ваша ссылка.
Для вашей программы размер заголовков программы всегда равен 0x80
, поэтому ваш раздел .text
всегда начинается с 0x8048080
, но это отнюдь не универсально.
Когда я связываю тривиальную int main() { return 0; }
программу, я получаю &_start == &.text
при 0x8048300
, 0x8048178
или 0x8048360
, в зависимости от того, какой компилятор я использую.