• Miércoles 6 de Noviembre de 2024, 04:44

Autor Tema:  Compilar Un Binario  (Leído 5143 veces)

jaumegs

  • Miembro MUY activo
  • ***
  • Mensajes: 110
    • Ver Perfil
Compilar Un Binario
« en: Martes 17 de Enero de 2006, 23:58 »
0
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

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Compilar Un Binario
« Respuesta #1 en: Miércoles 18 de Enero de 2006, 08:33 »
0
¿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.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

jaumegs

  • Miembro MUY activo
  • ***
  • Mensajes: 110
    • Ver Perfil
Re: Compilar Un Binario
« Respuesta #2 en: Miércoles 18 de Enero de 2006, 15:49 »
0
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

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Compilar Un Binario
« Respuesta #3 en: Miércoles 18 de Enero de 2006, 16:07 »
0
Citar
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.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Compilar Un Binario
« Respuesta #4 en: Miércoles 18 de Enero de 2006, 16:23 »
0
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.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

bob esponja

  • Miembro MUY activo
  • ***
  • Mensajes: 411
    • Ver Perfil
    • http://marianoguerra.blogspot.com
Re: Compilar Un Binario
« Respuesta #5 en: Miércoles 18 de Enero de 2006, 17:48 »
0
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

bob esponja

  • Miembro MUY activo
  • ***
  • Mensajes: 411
    • Ver Perfil
    • http://marianoguerra.blogspot.com
Re: Compilar Un Binario
« Respuesta #6 en: Miércoles 18 de Enero de 2006, 17:50 »
0
eso si ni se te ocurra usar ningun include de librerias que no hayas escrito vos....

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Compilar Un Binario
« Respuesta #7 en: Miércoles 18 de Enero de 2006, 18:20 »
0
Cita de: "bob esponja"
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?

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

bob esponja

  • Miembro MUY activo
  • ***
  • Mensajes: 411
    • Ver Perfil
    • http://marianoguerra.blogspot.com
Re: Compilar Un Binario
« Respuesta #8 en: Miércoles 18 de Enero de 2006, 18:23 »
0
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 )

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Compilar Un Binario
« Respuesta #9 en: Miércoles 18 de Enero de 2006, 18:33 »
0
Cita de: "bob esponja"
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:

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

bob esponja

  • Miembro MUY activo
  • ***
  • Mensajes: 411
    • Ver Perfil
    • http://marianoguerra.blogspot.com
Re: Compilar Un Binario
« Respuesta #10 en: Miércoles 18 de Enero de 2006, 18:36 »
0
eternal te queria contar que lei tus links de real programers... muy interesantes, esos si que son programadores  :smartass:

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Compilar Un Binario
« Respuesta #11 en: Miércoles 18 de Enero de 2006, 18:40 »
0
Cita de: "bob esponja"
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  ;)

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.