При выполнении программа начнет работать с виртуального адреса 0x80482c0. Этот адрес не указывает на нашу процедуру main()
, а на процедуру с именем _start
, которая создается компоновщиком.
Мое исследование Google до сих пор просто привело меня к некоторым (неопределенным) историческим спекуляциям вроде этого:
Существует фольклор, в котором 0x08048000 был STACK_TOP (т.е. стек вырос вниз от 0x08048000 до 0) в порту от * NIX до i386, который был обнародован группой из Санта-Крус, штат Калифорния. Это было тогда, когда 128 МБ ОЗУ были дорогими, и 4 ГБ ОЗУ немыслимо.
Кто-нибудь может подтвердить или опровергнуть это?