Недавно я пытался отладить некоторую работу низкого уровня, и я не мог найти crt0.S
для компилятора (avr-gcc), но я действительно находил a crt1.S
(и то же с соответствием .o
файлы).
Каково различие между этими двумя файлами? crt1
что-то совершенно другое или что? Они оба, кажется, имеют отношение к чему-то для 'начальной загрузки' (установка stack frame
и такой), но почему различие?
Оба crt0 / crt1 делают одно и то же, в основном делают то, что необходимо перед вызовом main () (например, инициализируют стек, устанавливают irqs и т. Д.). Вы должны установить связь с одним или другим, но не с обоими. На самом деле это не библиотеки, а действительно встроенный код сборки.
Насколько я понимаю, crt бывает двух видов