Hola a todos, soy nuevo en este foro. La pregunta es por qué es necesario enlazar códigos que no tienen ninguna referencia externa (es puro nasm). Estoy trabajando bajo linux, y este es el código que he empleado:
section .text
global _start
_start:
mov edx,len
mov ecx,msg
mov ebx,1
mov eax,4
int 0x80
mov eax,1
int 0x80
section .data
msg db 'Hello, world!',0xA
len equ $ - msg
El comando que utilizo para ensamblar un objeto es el siguiente:
nasm -f eof main.asm
El código que utilizo para enlazar es el siguiente:
ld -s -o main main.o
Nota: Cabe destacar que si hago esto directamente no funciona:
nasm main.asm
Es cierto que me entrega un archivo, pero este no puede ser ejecutado.
Muchas gracias
Que casualidad otro nuevo usuario preguntando por NASM :rolleyes:
Al enlazar no solo se resuelven las referencias externas, tambien se crea el formato de ejecutable (ya sea MZ, PE, COFF, ELF o lo que sea) y salvo algo muy primitivo o de bajo nivel, como los ejecutables .COM de MS-DOS o un sector de booteo, necesita ser enlazado.
¿Qué quieres decir con que casualidad? Bueno, gracias por la respuesta, aunque siento decir que ya la habia averiguado investigando mucho (llevaba mucho sin entenderlo bien)