He visto archivos .S en varios proyectos, como en el núcleo de Linux, núcleo de FreeBSD o en algunos otros proyectos. ¿Qué hacen estos archivos y por qué no podemos tener archivos .C en su lugar?¿Qué son los archivos .S?
Respuesta
.S
archivos son archivos de código fuente escrito en el montaje. El montaje es una forma de programación de nivel extremadamente bajo. Los archivos contienen instrucciones de ensamblaje para el procesador en orden secuencial y generalmente se compilan en función de una arquitectura seleccionada. Ejemplos de tales archivos se ven a menudo en el kernel de Linux para arquitecturas específicas, p. x86, SPARC, ARM, etc.
Para obtener más información sobre el lenguaje ensamblador:
- X86 Assembly/GAS syntax
- x86 Instruction list
- TLDP Linux Assembly Howto
- ejemplo en el núcleo de Linux: arch/x86/net/bpf_jit.S
Ellos son assembler code archivos:
un lenguaje ensamblador es un lenguaje de programación de bajo nivel para ordenadores, microprocesadores, microcontroladores y otros dispositivos programables en el que cada declaración corresponde a una instrucción lenguaje sola máquina . Un lenguaje ensamblador es específico de cierta arquitectura de computadora , a diferencia de la mayoría de los lenguajes de programación de alto nivel , que pueden ser más portátiles.
y estos archivos no son lo mismo que los archivos de código C.
Tenga en cuenta que C files can be inlined with assembly instructions.
La extensión .S
indica un assembly language file.
¿Por qué no podemos tener archivos .C en su lugar?
Debido a que el código fuente en bruto - ya sea o ensamblador generado a entrar humana - es el montaje, no C.
Los archivos .S están escritos en lenguaje ensamblador, es decir, nivel bajo o f programación. En el código fuente del kernel de Linux, .S generalmente son los archivos de inicio que el kernel ejecuta cuando el kernel de Linux comienza a arrancar (por ej .:- head.S). Escribimos esto en .S y no en .C porque no estamos listos para ejecutar el archivo .O compilado .C en este momento. Necesitamos trabajar con registros dependientes de la arquitectura e iniciar kernel.
* .S los archivos son archivos de ensamblaje. Por qué .s & ¿por qué no archivos .c? Es porque las cosas dependientes de la máquina/inicialización temprana como la configuración de la memoria caché & solo se pueden hacer a nivel de ensamblaje, como las instrucciones de E/S. El núcleo no tiene el lujo de la biblioteca libc para encargarse de la configuración inicial de varios recursos. Y recursos de hardware en cualquier punto, incluso durante la ejecución de la aplicación llamadas internas llamadas al sistema que llaman rutinas de E/S codificadas en lenguaje ensamblador.
.S los archivos son archivos de lenguaje ensamblador.Son una forma de código de máquina. Está en un nivel bajo de programación. Todo el código dependiente de la máquina está escrito en lenguaje ensamblador. El lenguaje ensamblador es diferente para diferentes procesadores.
- 1. ¿Qué son los archivos NDF?
- 2. ¿Qué son los archivos * .snap en eclipse?
- 3. ¿Qué son los archivos swz en Flash?
- 4. ¿Qué son los archivos .idb de MonoDevelop?
- 5. ¿Qué son los archivos .a y .so?
- 6. XFL - ¿Qué son los archivos ./bin/*.dat?
- 7. ¿Qué son los archivos ODEX en Android?
- 8. ¿Qué son los archivos derivados en Eclipse?
- 9. ¿Qué son los archivos .sln y .vcproj, y qué contienen?
- 10. ¿Qué son los archivos .datasource de Referencia de servicio WCF?
- 11. ¿Por qué los "Archivos de programa" son dos palabras?
- 12. ¿Qué idioma son los archivos conf de nginx?
- 13. git ¿Qué son los archivos sin seguimiento en un repositorio?
- 14. ¿Para qué son los archivos js adicionales del framework Angular.js?
- 15. ¿Qué formatos de archivos gráficos son compatibles con los navegadores?
- 16. ¿Qué son los archivos VSSVER.SCC y puedo eliminarlos?
- 17. ¿Qué tan portátiles son los archivos de haz Erlang?
- 18. ¿Qué son los RFC?
- 19. ¿Qué son los conceptos?
- 20. ¿Qué son los futuros?
- 21. ¿Son inútiles los archivos .lib sin los archivos de encabezado?
- 22. ¿Para qué son todos estos archivos * .FileListAbsolute.txt?
- 23. ¿Qué son los identificadores de formato scanf ("% * s") y scanf ("% * d")?
- 24. E/S de archivos binarios
- 25. ¿Qué son los objetos anclados?
- 26. ¿Qué son los objetos diferidos?
- 27. ¿Qué son los métodos virtuales?
- 28. ¿Qué son los zócalos Async?
- 29. ¿Qué son los operadores levantados?
- 30. ¿Qué son los índices hipotéticos?
Ver este enlace ... Su secuencia ARM BOOT ... – user1457958
http://www.linux-arm.org/LinuxBootLoader/MONItor! – user1457958