Подтвердить что ты не робот

На каком языке написаны стандартные библиотеки C и С++?

C и С++ сами по себе не могут ничего делать, им нужны библиотеки для работы. Итак, как были созданы библиотеки? Язык ассемблера?

4b9b3361

Ответ 1

Библиотеки C и С++ почти повсеместно написаны на C и С++, как и компиляторы C и С++. На самом деле, многие компиляторы даже используются для компиляции!

Как это возможно? Ну, очевидно, первый компилятор C не мог быть первоначально разработан на C. Однако, как только компилятор C существует, он может быть использован для компиляции другого компилятора. И по мере разработки компилятора, так же как и исходный код. Возможно развитие как бок о бок. Поскольку большинство компиляторов улучшают свои предшественники, они часто используются для компиляции лучших версий самих себя.

Однако, что касается библиотеки, это легко: C действительно может что-то сделать. Хотя некоторые низкоуровневые процедуры могут быть написаны на ассемблере, подавляющее большинство может быть написано на C или С++.

Ответ 3

Стандартные библиотеки обычно записываются на C и С++, используя минимальный код сборки для взаимодействия с функциональными возможностями, предоставляемыми операционной системой, и большинство операционных систем написаны на C, а также сочетание сборки для несколько вещей, которые невозможно сделать непосредственно в C.

Более конкретный пример...

В GNU/Linux написаны стандартные библиотеки и C и С++. Для различных вещей, требующих использования ядра, в конечном счете есть вызов syscall, который предоставляет небольшой бит кода сборки для перехода в ядро, где код, написанный в сочетании C и сборки, обрабатывает вызов.

Ответ 4

Они написаны на своем хост-языке по той простой причине, что им необходимо взаимодействовать с операционной системой для выполнения операций, которые они не могут выполнять самостоятельно, они будут делать это с помощью API, предоставленного операционной системой.

Стандартная библиотека С++ написана на С++, потому что большая часть ее реализации использует шаблоны.

Ответ 5

В типичном случае стандартная библиотека C написана в основном в C и стандартной библиотеке С++ в основном на С++.

Чтобы дать некоторые конкретные номера, стандартная библиотека Microsoft имеет файлы ~ 1050 C и С++ и 37 файлов ассемблерного языка. Просто взглянув на них, я бы сказал, что по крайней мере половина этих файлов сборки может быть написана на C или С++; они на языке ассемблера ради оптимизации, а не по необходимости.

Ответ 6

Здесь есть небольшое недоразумение: компилятор отвечает за перевод C или С++ (или что-то еще) в машинный код. Сами библиотеки могут быть написаны на C, там нет проблем. Более того, даже сам компилятор может быть написан на C, если существует хотя бы один компилятор C для его компиляции. (Большая шутка заключается в том, что "правильно" установить gcc на linux, вам нужно gcc, чтобы скомпилировать его из источника.)

Вы могли бы спросить "что было первым компилятором C, написанным в", возможно.

Ответ 7

Большинство компиляторов для C и С++ написаны на C и С++. Это возможно из-за самозагрузки компилятора. Существует связанный с этим вопрос Stackoverflow по теме:

Загрузочный компилятор: почему?

Кроме того, вам может понравиться Ken Thompson Отражение в Trusting Trust. В этой статье Томпсон рассказывает о трудностях, связанных с доверенным скомпилированным кодом.