На каких языках написаны стандартные библиотеки C и C ++? Где их исходный код? - PullRequest
1 голос
/ 15 июня 2011

Мне всегда интересно, на каком языке написаны среда выполнения C / C ++ и стандартная библиотека. Сначала я подумал, что это случайный язык C / C ++, но для разговора с машиной я сомневаюсь, что C / C ++ достаточно.Поэтому я думаю, что это может быть ассемблер.Если это язык C / C ++ или asm, то почему я не вижу летающих исходников?или, может быть, мне не хватает навыков поиска ...

Ответы [ 4 ]

4 голосов
/ 15 июня 2011

Как правило, они написаны на C с некоторыми смешанными сборками. Visual Studio поставляется с большими кусками исходного кода для CRT (C RunTime), если не все. Linux glibc явно с открытым исходным кодом: http://ftp.gnu.org/gnu/glibc/

4 голосов
/ 15 июня 2011

Как правило, они написаны на языке хоста, взаимодействуя с API операционной системы, чтобы получить то, что не может быть получено изначально.Многие функции написаны на чистом языке - например, раздел «контейнеры и алгоритмы» стандартной библиотеки C ++ в значительной степени должен быть написан на C ++.Фактически, почти вся библиотека C ++ Standard должна быть написана на C ++, потому что она шаблонная.Я не знаю, почему вы не нашли никакого источника - источник Microsoft CRT доступен для любого разработчика, я думаю, я наверняка видел здесь вопросы о публикации источника CRT, а GNU libc ++ является открытым исходным кодом, яЯ совершенно уверен.

4 голосов
/ 15 июня 2011

Все библиотеки времени выполнения и стандартные библиотеки написаны на C / C ++. Большинство поставщиков поставляют исходный код.

1 голос
/ 15 июня 2011

Большая часть времени выполнения написана на C или C ++, но есть важное исключение, и это код, который вызывает ядро. В большинстве операционных систем это выполняется путем генерации программного прерывания с использованием специальной инструкции (SWI или SVC) на руке. Этого нет эквивалента в C или C ++, и поэтому будет использоваться ассемблер. Ассемблер также обычно используется для реализации высокооптимизированных memcpy, memmove, memcmp и других подобных функций.

...