Скажем, у меня есть следующий код сборки:
.section .text
.globl _start
_start:
Если бы я создал исполняемый файл, используя следующие команды:
as 1.s -o 1.o
ld 1.o -o 1
Добавит ли ассемблер GNU свою собственную точку входа в мой исполняемый файл, который вызывает _start
, или _start
будет фактической точкой входа?
Дополнительные сведения см. в этом вопросе.
_start
. С другой стороны, когда ему говорят связать исполняемый файл, он связывается со средой выполнения C (crt1.o
), которая среди прочего объявляет функцию_start
, которая является точкой входа по умолчанию. Поскольку вы объявляете это сами, вам придется запретить компоновщику пытаться связать во время выполнения C из-за ошибки. В качестве альтернативы GNUld
позволяет вам выбрать другую точку входа с опцией-e
. - person Iwillnotexist Idonotexist   schedule 12.01.2015