SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: jaumegs en Martes 17 de Enero de 2006, 23:58
-
Cómo puedo compilar un archivo binario "puro"?, es decir, que no saque un .exe, sino un .bin o sin extensión y que se comporte como tal.
Un archivo de este tipo puede ser ejecutado, por ejemplo, como un programa de arranque? Me refiero a si crearia conflictos al no encontrar las interrupciones. Imagino que si, pero, sería posible compilar desde el GCC (por ejemplo) archivos binarios que no utilicen interrupciones ni características específicas de un SO?
SALUDOS
-
¿Como se comportba un .bin? Supongo que haciendo nada ...
Que yo sepa gcc es un compilador de 32 bits con lo cual no podrias arrancar la maquina con su codigo generado.
-
Chico, eres muy borde, si te parece absurda mi pregunta simplemente no me respondas.
Si te parece que está mal propuesta, dilo y punto.
Es posible que no me exprese con mucha claridad.
Un archivo binario es sencillo de obtener. Yo quiero saber si es posible que un compilador de C, uno cualquiera... (he especificado uno, alomejor se puede hacer, nose...) compile un código pero sin basarse ningún formato, simplemente que la entrada del programa esté al inicio del archivo, y que no haga uso de ninguna función ni ninguna interrupción de ningun sistema operativo.
No se si existe, por algo lo pregunto, y el google no me da grandes respuestas, y menos si uno no sabe que busca exactamente.
Imagino que debe exister, mas que nada es por que si hay sistemas operativos creados en C, imagino que de alguna forma se debió compilar su nucleo y sus funciones mas básicas.
SALUDOS
-
Imagino que debe exister, mas que nada es por que si hay sistemas operativos creados en C, imagino que de alguna forma se debió compilar su nucleo y sus funciones mas básicas.
No es del todo tan cierto.
pues antes de poder crear un programa en C para un sistema operativo, el sistema operativo tienen soportada su propia libc (o equivalente) hecha en assembler, sino no te compilaria ningun programa hecho en C pues no encontraria muchas de las funciones que usa.
Podrias probar haciendo cosas con un compilador de 16 bits.. no se podia ser algo asi como turbo c 3.0 , pero aun asi la cantidad de funciones del lenguaje que podrias usar seria muy limitada.
Hablar de nu archivo bin es subjetivo, de hecho puedo crear un archivo word y cambiarle la extencion a bin y listo.
La extencion de un archivo es solo un adorno, pero asumo a que te refieres es a como crear un programa que para su ejecucion no dependa de un sistema operativo, la respuesta es que debes generar codigo de 16 bit con un ensamblador y/o compilador segun el lenguaje que uses,. pero debes tener presente que no encontraras algunas de las funciones que estas habituado a manejar por ejemplo en lenguaje C ya que estas estan implmentadas usando componentes del sistema operativo.
Si oo que quieres es arrancar la maquina hasta un codigo asm de 16 bit y listo, es muy facil de hacer , aca en el foro de asm ebncontraras varios post que hablan al respecto.
-
Como ya te respondieron no existe ningun formato BIN. ¿Queres un archivo de codigo? Genera un .COM y lo tendras.
¿No te gustan mis respuestas? Ignorame, me da lo mismo. Seguis siendo el mismo ridiculo que quiere mandar un cohete a la luna y todavia no sabe mandar un coche a la esquina.
-
GCC -c my_kernel.c
LD my_kernel.o -o kernel.bin -oformat binary -Ttext 0x100000
genera un archivo totalmente binario sin dependencia de ningun sistema operativo ni libc, pero antes de cargarlo tenes que entrar en modo protegido y esa es la parte dificil
-
eso si ni se te ocurra usar ningun include de librerias que no hayas escrito vos....
-
GCC -c my_kernel.c
LD my_kernel.o -o kernel.bin -oformat binary -Ttext 0x100000
genera un archivo totalmente binario sin dependencia de ningun sistema operativo ni libc, pero antes de cargarlo tenes que entrar en modo protegido y esa es la parte dificil
Interesante, por el ultimo parrafo deduzco que el codigo generado es de 32 bits como habia dicho anteriormente. ¿Verdad?
-
si es de 32 bits y funciona en modo protegido asi que hay que hacer varias cosas antes de poder hacer andar eso pero son cosas que uno tiene que hacer si desea hacer un sistema operativo ( entrar en modo protegido setear las tablas gdt idt, cargar el binario y ejecutarlo )
(es como un .COM de 32 bits :P )
-
si es de 32 bits y funciona en modo protegido asi que hay que hacer varias cosas antes de poder hacer andar eso pero son cosas que uno tiene que hacer si desea hacer un sistema operativo ( entrar en modo protegido setear las tablas gdt idt, cargar el binario y ejecutarlo )
(es como un .COM de 32 bits :P )
Sip, era lo que me habia imaginado :devil:
-
eternal te queria contar que lei tus links de real programers... muy interesantes, esos si que son programadores :smartass:
-
eternal te queria contar que lei tus links de real programers... muy interesantes, esos si que son programadores :smartass:
Totalmente, Mel es un idolo inconmensurable ;)