Я пишу свою собственную операционную систему (статические адреса), и я изо всех сил стараюсь, чтобы компоновщик всегда помещал мою _start
функцию в желаемое место внутри процессов.Я указываю местоположение с -Ttext 0x10000
в моем файле сборки (скажем, 0x10000 для этого примера).
Обычно это работает , но когда я использую -O2
, компоновщик вместо этого помещает мою функцию main
на этот адрес.
Так, как я могу убедиться, что это _start
, который заканчивается на этом адресе?И возможно ли это без написания сценариев компоновщика?
Функция _start
является общей для всех процессов и должна обеспечивать хороший выход для планировщика в случаях, когда программа возвращается вместо вызова exit()
.В моей голове есть обходное решение, но я бы предпочел, чтобы это работало с компоновщиком.