Título: Compilacion de codigo en C a un binario puro. Publicado por: Usuario887 en 1 Noviembre 2021, 17:44 pm Hola,
Queria saber si alguien sabe como (mas bien enlazar) codigo de C a un binario puro, me explico: Código
Watcom C puede producir un .COM del viejo MS-DOS a partir de este codigo y lo compila a algo asi: Código
Hasta aqui todo bien. Tengo dos problemas: El codigo que genera Watcom C es precisamente para correr en MS-DOS y me estoy jalando los cabellos modificandolo para que termine en un binario puro, entre referencias al segmento de datos y etcetera... Mi pregunta concreta es: Imaginese que tengo el codigo anteriormente mencionado en C, y su respectivo archivo .OBJ ¿Como enlazo este .OBJ de forma tal que pueda especificar el ORGigen del programa (obviamente diferente a 100h) a, por ejemplo, 7c00h en el caso de un bootstrap? O lo que sea... ¿Como hago esto? Gracias por adelantado. [EDIT] Lo que he descubierto hasta ahora es que puedo utilizar el comando ld.exe que viene con GCC para esto: Citar ld --oformat binary La cuestion es que no se como. :xD No se como especificar ni relocalizaciones ni nada. [EDIT 2] Tambien se que las opciones respecto a relocalizaciones para ld.exe son: Citar -q, --emit-relocs Generate relocations in final output -r, -i, --relocatable Generate relocatable output --embedded-relocs Generate embedded relocs --split-by-reloc [=COUNT] Split output sections every COUNT relocs --base_file <basefile> Generate a base file for relocatable DLLs --enable-runtime-pseudo-reloc Work around auto-import limitations by adding pseudo-relocations resolved at --disable-runtime-pseudo-reloc Do not add runtime pseudo-relocations for --dynamicbase Image base address may be relocated using --base_file <basefile> Generate a base file for relocatable DLLs --enable-runtime-pseudo-reloc Work around auto-import limitations by adding pseudo-relocations resolved at --disable-runtime-pseudo-reloc Do not add runtime pseudo-relocations for --dynamicbase Image base address may be relocated using Sincera y apenadamente no se cual usar. Despues de un millon de años lo logre: Primer paso: Compilar el codigo a codigo objeto Segundo paso: Convertir el codigo objeto a codigo ensamblador Tercer paso: Hacer las modificaciones respectivas al ensamblador resultante Cuarto paso: Ensamblar Quinto paso: Enjoy |