Jump to content

crt0

(Перенаправлено из глобального конструктора )

crt0 (также известный как c0 ) — это набор подпрограмм запуска выполнения, связанных с программой C программы , который выполняет любую работу по инициализации, необходимую перед вызовом основной функции . После завершения основной функции управление возвращается к crt0, который вызывает библиотечную функцию exit(0) для завершения процесса.

Форма и использование

[ редактировать ]

Crt0 обычно принимает форму объектного файла с именем crt0.o , часто написанный на языке ассемблера , который автоматически включается компоновщиком в каждый создаваемый им исполняемый файл . [1]

crt0 содержит самые основные части библиотеки времени выполнения . Таким образом, точная работа, которую он выполняет, зависит от компилятора программы, операционной системы и стандартной библиотеки C. реализации [1] Помимо работ по инициализации, требуемых средой и набором инструментов , crt0 может выполнять дополнительные операции, определенные программистом, такие как выполнение C++ глобальных конструкторов и функций C, несущих GCC . ((конструктор)) Атрибут [2] [3]

«crt» означает «время выполнения C», а ноль означает «самое начало». Однако, когда программы компилируются с использованием GCC, он также используется для языков, отличных от C. Альтернативные версии crt0 доступны для особых сценариев использования; например, чтобы включить профилирование с помощью gprof , программы должны быть скомпилированы с помощью вместо этого gcrt0 . [4]

Пример crt0.s

[ редактировать ]

Этот пример предназначен для Linux x86-64 с синтаксисом AT&T , без фактической среды выполнения C.

.text

.globl _start

_start: # _start is the entry point known to the linker
    xor %ebp, %ebp            # effectively RBP := 0, mark the end of stack frames
    mov (%rsp), %edi          # get argc from the stack (implicitly zero-extended to 64-bit)
    lea 8(%rsp), %rsi         # take the address of argv from the stack
    lea 16(%rsp,%rdi,8), %rdx # take the address of envp from the stack
    xor %eax, %eax            # per ABI and compatibility with icc
    call main                 # %edi, %rsi, %rdx are the three args (of which first two are C standard) to main

    mov %eax, %edi    # transfer the return of main to the first argument of _exit
    xor %eax, %eax    # per ABI and compatibility with icc
    call _exit        # terminate the program

См. также

[ редактировать ]
  1. ^ Перейти обратно: а б «Инициализация среды выполнения C, crt0.o» . embecosm.com . 2010 . Проверено 30 декабря 2013 г.
  2. ^ «Инициализация программы: Создание библиотеки C» . osdev.org . 25 февраля 2014 г. Проверено 21 апреля 2014 г.
  3. ^ «Вызов глобальных конструкторов» . osdev.org . 08.04.2014 . Проверено 21 апреля 2014 г.
  4. ^ «Компиляция программы для профилирования: GNU gprof» . исходное программное обеспечение.org . Проверено 30 декабря 2013 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: a8431cf93152d80566bc496b658cee75__1721296080
URL1:https://arc.ask3.ru/arc/aa/a8/75/a8431cf93152d80566bc496b658cee75.html
Заголовок, (Title) документа по адресу, URL1:
crt0 - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)