2012-04-23 33 views
38

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

41

.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:

5

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.

4

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.

2

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.

9

* .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.

+0

Ver este enlace ... Su secuencia ARM BOOT ... – user1457958

+0

http://www.linux-arm.org/LinuxBootLoader/MONItor! – user1457958

4

.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.

Cuestiones relacionadas