¿Cómo compilar un programa C en una válida ELF formato (o RAW) para que pueda ser ejecutado directamente desde la memoria RAM sin ningún OS? Supongamos que existe un gestor de arranque que es capaz de cargar el código en cualquier ubicación de la RAM y comenzar la ejecución en esa dirección. Para ser precisos, ¿cuál debería ser el compilador (GCC) flags? ¿Hay una necesidad de un archivo de mapa?ejecución sin OS
Una aplicación de ejemplo holamundo sería muy bienvenida :)
Sólo para elaborar mi punto,
dejar que el método main() sea un infinito vacío mientras bucle para garantizar que no OS llamadas específicas o estándar de la biblioteca son usados. El o/p deseado es un cuelgue. Con las opciones habituales de GCC, el gestor de arranque definitivamente no cargará el ejecutable diciendo que no es válido formato ELF. Sin embargo, al pasar -dN la opción del enlazador lo convertirá en ELF válido. ¡Se necesitan más opciones de compilador/enlazador para que se cuelgue y no se cuelgue! ¿Qué son exactamente esas opciones de compilación?
file.c:
int main()
{
while(1);
}
Compilación
gcc -c opciones -nostdinc file.c -fno-incorporado
ld -dn -nostdlib file.o
cargas cargador de arranque a.out a la RAM y se ejecuta.
Gracias ... Los enlaces eran muy útiles :) – AIB