Ver Mensaje Individual
  #4 (permalink)  
Antiguo 12/05/2011, 11:52
_Ruben_
 
Fecha de Ingreso: enero-2008
Mensajes: 201
Antigüedad: 16 años, 4 meses
Puntos: 39
Respuesta: Crear programa booteable

Aquí tienes un código de un programa que abre un fichero, lo lee, lo muestra por pantalla y lo cierra:
Código C:
Ver original
  1. void main(void){
  2.         int fda;
  3.         char car;
  4.  
  5.         /* Apertura en modo lectura */
  6.         printf(" Abrir fichero.txt=%d; ",fda=open("fichero.txt",0));
  7.        
  8.         printf("\nContenido fichero.txt:\n");
  9.  
  10.                 /* Imprimirlo byte a byte:*/
  11.         while(read(fda,&car,1)==1) {
  12.             printf("%c",car);
  13.         }
  14.  
  15.         printf("\nCerrar fichero.txt %d = %d; ",fda,close(fda));
  16. }

Este es un ejemplo muy simple de un programa en modo consola en C. ¿No parece difícil verdad? Lo difícil no es eso, sino lo que voy a comentar a continuación.

¿Qué proceso sigue el código de un programa C? (Como es este caso)
Se compila y al final acaba traduciéndose a instrucciones máquina (ASM). En ellas se hacen las llamadas a printf, open, read y close. ¿Cómo es eso en código ASM? Mediante llamadas al sistema (al sistema operativo).

PROBLEMA: No hay sistema operativo por lo que las funciones printf, open, read y close ¡¡no existen!!

SOLUCIÓN: Debes implementarlas tú.

La función printf puede ser más o menos fácil de implementar aunque larga. Las funciones open y close son más cortas, pero la función read te garantizo que es un autentico infierno implementarla (y eso que solo lees 1 byte).

Si tienes alguna duda puedo explicártelo con más detalle. Yo no te aconsejo hacer un programa que no necesite del sistema operativo para ejecutarse, al final acabarías implementando tu propio sistema operativo (más o menos).