Título: [C] Kernel - Contru...ctor Publicado por: Miky Gonzalez en 9 Octubre 2013, 19:26 pm ¡ADVERTENCIA!: Este tema contiene datos de otras páginas. Existe código ensamblador en el código.
Primero de todo, deberían revisar como funciona el ordenador para poder entender la práctica que aquí les pongo. No lo voy a explicar, hay muchos sitios donde se explica el funcionamiento interno de un ordenador. El código fuente de mi Kernel se divide en varios archivos, para mantener el código ensamblador necesario apartado del código C. Empezaré por el primer archivo que debo crear: Código
El próximo archivo que deberiamos crear sería el código C (init.c): Código
Por último necesitamos un enlazador que nos permita enlazar correctamente el código C y el código ensamblador para poder usarlo en nuestro bootloader (yo usaré GRUB2): Código
Hasta ahora, compilando nuestro código y virtualizándolo (por ejemplo yo uso QEMU), nos saldrá la pantalla de como GRUB carga nuestro Kernel, pero... ¿cómo sabemos que lo cargo?. La dirección de memoria de video (estándar - sin paginación) es la dirección 0x8B000. Sabiendo esto y que hay 25 columnas por 80 filas, y que se necesita un valor de color letra, podemos escribir un "Hola mundo" en pantalla: Código
Con esto, desde nuestro código init, podríamos hacer: Código
Esto sería nuestra gran primitiva función printf de C. Podríamos crear una función strlen y usar de esta forma: Código
Eso es todo, intentaré publicar avances y código de mi kernel. [FUENTES]
Saludos, MikyGonzalez Título: Re: [C] Kernel - Contru...ctor Publicado por: Eternal Idol en 9 Octubre 2013, 22:45 pm Si tenes alguna duda podes plantearla, si queres publicar "avances y código" existen recursos idoneos en Internet donde hacerlo.
|