erro: ld returned 1 exit status [RESOLVIDO]

1. erro: ld returned 1 exit status [RESOLVIDO]

cacio jose gazola
CJG-SX

(usa Slackware)

Enviado em 09/08/2012 - 20:49h

Olá a todos. Esta minha primeira postagem, por isso peço desculpas se faltar com a etiqueta do forum.

Meu problema é o seguinte: estou tentando reescrever os exercicos do livro 'Linguagem assembly para IBM PC' de Peter Norton, para assembly NASM/GCC/Linux.

Escrevi o seguinte código, referente ao programa do capitulo 4 do livro: http://pastebin.com/GmW1nyPw. O comando nasm -f elf inb.asm, passa sem problemas, mas quando entro o comando gcc -o inb inb.o retorna o seguinte erro:
inb.o: In function `main':
inb.asm:(.text+0x2f): relocation truncated to fit: R_386_16 against `.bss'
collect2: ld returned 1 exit status

O Mais extranho é que quando pesquisei na WEB sobre o problema, descobri que ele ocorre quando se tenta manipular mais de 2GB de dados. Só que meu buffer tem 8 bytes.

Extranho também é o fato de que quando tentei com um buffer de apenas um byte, o programa compilou normalmente e rodou perfeito. Mas como a sys_write altera o valor de ecx para imprimir na tela, eu achei mais conveniente criar um buffer de oito bytes e chamar a sys_write apenas uma vez, e a partir daí começou a dar o erro.

Grato pela ajuda de todos.


  


2. Re: erro: ld returned 1 exit status [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 10/08/2012 - 20:57h

Olá.

Encontrei seu outro tópico.

O livro do Norton é mais ou menos do ano de 1990.

O modo de escrita de Assembly é todo diferente.

Em DOS usava-se int 21h. Em Linux usa-se algo como int 80h, int 0x80, por exemplo.

Isso quando não se usa syscall.

32 bits e 64 bits são completamente diferentes.

Por isso precisava ver o que você está fazendo porque há coisas do livro do Norton que não fariam sentido hoje.


3. Re: erro: ld returned 1 exit status [RESOLVIDO]

cacio jose gazola
CJG-SX

(usa Slackware)

Enviado em 11/08/2012 - 19:36h

Acho que você não entendeu o que eu disse: eu stou reescrevendo os exercícios do livro (publicado como você disse por volta de 1990, em 1989 na verdade) para a linguagem Assembly NASM/GCC/Linux. Em outras palavras eu estou trocando as int do DOS pelas int do Linux (na verdade todas as 'syscall' do linux são serviços da int 0x80, que é a unica int do linux).

Em fim, o problema doi resolvido com ajuda da osdevbrasil.net. Bastou trocar 'si' por 'esi' e pronto o programa rodou perfeitamente. De certa forma você até que estava certo, pois o problema estava no tamanho do resgistro.

O link para o código corrigido é: http://pastebin.com/YzjG31VL

o link para a osdevbrasil.net com a discussão do do problema é: http://www.osdevbrasil.net/comunidade/index.php/topic,1045.0.html


De toda forma, obrigado pela ajuda.


4. Re: erro: ld returned 1 exit status [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 11/08/2012 - 23:39h

CJG-SX escreveu:

Acho que você não entendeu o que eu disse: eu stou reescrevendo os exercícios do livro (publicado como você disse por volta de 1990, em 1989 na verdade) para a linguagem Assembly NASM/GCC/Linux. Em outras palavras eu estou trocando as int do DOS pelas int do Linux (na verdade todas as 'syscall' do linux são serviços da int 0x80, que é a unica int do linux).

Em fim, o problema doi resolvido com ajuda da osdevbrasil.net. Bastou trocar 'si' por 'esi' e pronto o programa rodou perfeitamente. De certa forma você até que estava certo, pois o problema estava no tamanho do resgistro.

O link para o código corrigido é: http://pastebin.com/YzjG31VL

o link para a osdevbrasil.net com a discussão do do problema é: http://www.osdevbrasil.net/comunidade/index.php/topic,1045.0.html


De toda forma, obrigado pela ajuda.


É. Você tem razão. Eu não entendi.

(Também evito clicar em redirecionamentos). :)

De qualquer modo parabéns por conseguir resolver.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts