Я видел файлы .S в различных проектах, таких как ядро Linux, ядро FreeBSD или в некоторых других проектах. Что делают эти файлы и почему у нас нет файлов .C?Что такое файлы .S?
ответ
.S
файлы кода исходные файлы, написанные на ассемблере. Сборка - чрезвычайно низкоуровневая форма программирования. Файлы содержат инструкции по сборке для процессора в последовательном порядке и обычно скомпилированы на основе выбранной архитектуры. Примеры таких файлов часто видны в ядре linux для конкретных архитектур, например. x86, SPARC, ARM и т.д.
Для получения дополнительной информации о языке ассемблера:
- X86 Assembly/GAS syntax
- x86 Instruction list
- TLDP Linux Assembly Howto
- примера в ядре Linux: arch/x86/net/bpf_jit.S
Они assembler code файлов:
язык ассемблера является языком программирования низкого уровня для компьютеров, микропроцессоров, микроконтроллеров и других программируемых устройств, в которых каждое заявление соответствует одной машине инструкция языка , Язык ассемблера специфичен для определенной архитектуры компьютера , в отличие от большинства языков программирования верхнего уровня , которые могут быть более переносимыми.
и поэтому эти файлы не совпадают с файлами кода C.
Отметьте, что C files can be inlined with assembly instructions.
Расширение .S
указывает на assembly language file.
Почему мы не имеем файлы .C?
Поскольку исходный код сырец - будь то человек вошел или ассемблере генерироваться - это сборка, а не С.
.S файлы - это код, написанный на языке ассемблера, т.е. низкий уровень o f программирование. В исходном коде ядра linux .S обычно являются стартовыми файлами, которые ядро запускает при запуске ядра linux (например .:- head.S). Мы пишем это в .S, а не в .C, потому что мы не готовы запускать .C скомпилированный файл .O в это время. Нам нужно работать с регистрами, зависящими от архитектуры, и запускать ядро.
* .S файлы являются сборными файлами. Почему .s & Почему бы и нет .c файлы? Это связано с тем, что аппаратно-зависимый файл/ранняя инициализация, например настройка кеша &, может выполняться только командой уровня сборки, например инструкциями ввода-вывода. Ядро не имеет роскоши библиотеки libc, чтобы заботиться о первоначальной настройке различных ресурсов. И аппаратные ресурсы в любой момент, даже во время выполнения приложений, накладывают системные вызовы, которые вызывают процедуры ввода/вывода, закодированные на языке ассемблера.
.S файлы являются файлами языка ассемблера.Это форма машинного кода. Он находится на низком уровне программирования. Весь машинный код написан на языке ассемблера. Язык ассемблера отличается для разных процессоров.
- 1. Golang Что такое «%! S»
- 2. Что такое `cmd/s`?
- 3. Что такое «sed s _. */_»?
- 4. Что такое «S» в «NPM я -S»
- 5. Что такое архитектура S # arp?
- 6. Что такое «% s» в xpath
- 7. Что такое инверсия «date +% s»?
- 8. Что такое регулярное выражение?/([^ "^ \ s] +) \ s * |" ([^ "] +)" \ s */g
- 9. Что такое файлы конфигурации?
- 10. Что такое _p.h файлы?
- 11. Что такое .onetoc2 файлы?
- 12. Что такое файлы NDF?
- 13. Что такое .jazzignore файлы?
- 14. Что такое файлы jartmp?
- 15. Что такое .axf-файлы?
- 16. Что такое файлы FTL
- 17. Что такое аналог sprintf_s sprintf (newpath, "% s% s", ...)?
- 18. Что такое S-функция в simulink?
- 19. Что такое void ** в S-Function .cpp
- 20. Что такое '$ path = ~ s \/$ ||' делать в perl?
- 21. Что такое NamedPipeServerStream и NamedPipeClientStream (s)?
- 22. Что такое атрибут «s» этого класса?
- 23. Что такое -s switch in if statement?
- 24. Что такое символ^s в C?
- 25. Что такое параметр fileExistsAtPath: isDirectory: 's parameters?
- 26. Что такое эквивалент окна команды «date +% s»
- 27. Что такое суффикс «.s» в инструкциях x86?
- 28. Что такое опция -s в sqlplus?
- 29. Что такое «$ 0 = ~ s!. */!!» значение в perl?
- 30. Что такое файлы символов Parse?
Проверьте эту ссылку ... Его последовательность ARM BOOT ... – user1457958
http://www.linux-arm.org/LinuxBootLoader/MONItor! – user1457958