Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Próxima revisión
Revisión previa
td3:abi64 [2012/08/16 20:21]
mdoallo creado
— (actual)
Línea 1: Línea 1:
-====== Consideraciones para integrar C y Assembler en IA-32e ====== 
- 
-===== En el archivo ASM ===== 
- 
-  * Declaración EXTERN en ASM 
-  * No hace falta la directiva ORG en el ASM 
-  * Se compila con: 
- 
-  nasm -f elf64 $(KERNEL_SRC) -o $(KERNEL_OBJ) 
- 
-===== En el Archivo C ===== 
- 
-  * Se compila con: 
- 
-  gcc -nostdinc -m64 -c -o $(FUNCION_C_OBJ) $(FUNCION_C_SRC) 
- 
-===== Juntando todo ===== 
- 
-Ambas compilaciones generan archivos objetos (.o). 
- 
-Usar luego el linker y se debe especificar el inicio (la directiva ORG ausente en el código ASM), esto se hace con: 
- 
-  sudo ld -m elf_x86_64 --oformat binary -b elf64-x86-64 -Ttext 0x8000 $(KERNEL_OBJ) $(FUNCION_C_OBJ) -o $(KERNEL_BIN) 
- 
-===== Break point en C ===== 
- 
-Se puede apelar al magic break point del bochs aún en lenguaje C, para eso: 
- 
-  __asm__("xchg %bx,%bx");