Я видел файлы .S в различных проектах, таких как ядро Linux, ядро FreeBSD или в некоторых других проектах. Что делают эти файлы и почему у нас нет файлов .C?
Что такое файлы .S?
Ответ 1
.S
файлы - это файлы исходного кода, записанные в сборке. Сборка - чрезвычайно низкоуровневая форма программирования. Файлы содержат инструкции по сборке для процессора в последовательном порядке и обычно скомпилированы на основе выбранной архитектуры. Примеры таких файлов часто видны в ядре linux для конкретных архитектур, например. x86, sparc, ARM и т.д.
Подробнее о языке ассемблера:
Ответ 2
*. Файлы S - это файлы сборки. Почему .s и почему нет .c файлов? Это связано с тем, что аппаратно-зависимые элементы/ранняя инициализация, такие как настройка кеша и памяти, могут выполняться только командой уровня сборки, например инструкциями ввода-вывода. Ядро не имеет роскоши библиотеки libc, чтобы позаботиться о первоначальной настройке различных ресурсов. И аппаратные ресурсы в любой момент, даже во время выполнения приложения, ставят системные вызовы, которые вызывают процедуры ввода/вывода, закодированные на языке ассемблера.
Ответ 3
Они файлы ассемблера:
Язык ассемблера - это низкоуровневый язык программирования для компьютеры, микропроцессоры, микроконтроллеры и другие программируемые устройства, в которых каждый оператор соответствует одной машине языковая инструкция. Язык ассемблера специфичен для определенного компьютерная архитектура, в отличие от большинства высокоуровневых программ языки, которые могут быть более портативными.
и поэтому эти файлы не совпадают с файлами кода C.
Обратите внимание, что C файлы могут быть встроены в инструкции по сборке.
Ответ 4
Расширение .S
указывает файл языка ассемблера.
Почему мы не имеем .C файлы?
Потому что исходный исходный код - будь он человеческий или сгенерированный ассемблером - является сборкой, а не C.
Ответ 5
.S файлы - это файлы языка ассемблера. Это форма машинного кода. Он находится на низком уровне программирования. Весь машинный код написан на языке ассемблера. Язык ассемблера отличается для разных процессоров.
Ответ 6
.S файлы - это код, написанный на языке ассемблера, т.е. низкий уровень программирования. В исходном коде ядра linux.S обычно являются стартовыми файлами, которые ядро запускает при запуске ядра linux (например.:- head.S). Мы пишем это в .S, а не в .C, потому что мы не готовы запускать .C скомпилированный файл .O в это время. Нам нужно работать с регистрами, зависящими от архитектуры, и запускать ядро.