Você já tem seu arquivo de objeto (gerado, como você supôs corretamente, usando as -gstabs -o ex71.o ex71.s
), então, para vinculá-lo, você deve estar usando:
gcc -o ex71 ex71.o
Veja, por exemplo, este SO pergunta .
O undefined reference to main
do GCC é porque espera uma função main
quando instruído a criar um executável. Pelo que entendi (posso estar errado, nunca fiz programação em linguagem assembly), você precisa de uma função _start
(caso em que você usaria ld
) ou uma função main
(nesse caso, você usaria o GCC). Então, substitua f
por _start
e faça:
ld -o ex71 ex71.o
Ou substitua f
por main
e faça:
gcc -o ex71 ex71.o
Depois disso, obtenho um segfault, mas cabe a você depurar. Minha compreensão disso termina aqui. :)