Aurea Matsumura Postado Outubro 10, 2020 em 20:55 Compartilhar Postado Outubro 10, 2020 em 20:55 Ola. Podem me ajudar ? Tenho dois arquivos: teste.c(que contem main() e uma chamada para função check()), e um arquivo check_asm.s que contem o codigo assembly 32bits. para gerar os check_asm.o e teste.o uso os comandos porem surge erro no nasm " a arquitetura 386 do arquivo de entrada "check_asm.o é incompatível com a saída de i386:x86-64" alguém sabe como corrigir o erro ? muito obrigada Link para o comentário Compartilhar em outros sites More sharing options...
fredericopissarra Postado Outubro 10, 2020 em 21:30 Compartilhar Postado Outubro 10, 2020 em 21:30 Tente a opção -m32 no GCC. Link para o comentário Compartilhar em outros sites More sharing options...
Aurea Matsumura Postado Outubro 10, 2020 em 22:41 Autor Compartilhar Postado Outubro 10, 2020 em 22:41 Oi. Tentei com a opção -m32 mas tb não funciona...o ´únco jeito que achei de funcionar foi trocando os registradores para os de 64-bits, mas a proposta que tenho é que obrigatoriamente deve ser em assembly-32. Tem alguma outra ideia ? Obrigada pela ajuda !!1 Link para o comentário Compartilhar em outros sites More sharing options...
Aurea Matsumura Postado Outubro 10, 2020 em 22:48 Autor Compartilhar Postado Outubro 10, 2020 em 22:48 em um computador de 32-bits o makefile roda e consigo gerar o executavel, porem a proposta que tenho é que esses arquivos serão compilados em uma maquina 64-bits e o executável será testado na maquina de 64-bits Link para o comentário Compartilhar em outros sites More sharing options...
Fernando Mercês Postado Outubro 10, 2020 em 23:05 Compartilhar Postado Outubro 10, 2020 em 23:05 É um Linux de 64-bits esse ambiente em que está tentando compilar? Se sim, qual distro? Para usar a opção que o Frederico sugeriu, em geral tem que instalar o pacote gcc-multilib: sudo apt install gcc-multilib Depois: nasm -felf32 check_asm.s gcc -m32 -c teste.c -o teste.o gcc -m32 teste.o check_asm.o -o teste_final Se não funcionar, copia e cola a linha de comando que você digitou e o erro exato aqui pra gente. ? Abraço. Link para o comentário Compartilhar em outros sites More sharing options...
Aurea Matsumura Postado Outubro 11, 2020 em 01:21 Autor Compartilhar Postado Outubro 11, 2020 em 01:21 4 horas atrás, Fernando Mercês disse: É um Linux de 64-bits esse ambiente em que está tentando compilar? Se sim, qual distro? Para usar a opção que o Frederico sugeriu, em geral tem que instalar o pacote gcc-multilib: sudo apt install gcc-multilib Depois: nasm -felf32 check_asm.s gcc -m32 -c teste.c -o teste.o gcc -m32 teste.o check_asm.o -o teste_final Se não funcionar, copia e cola a linha de comando que você digitou e o erro exato aqui pra gente. ? Abraço. ufaaa! Fernado, funcionou !! obrigada Fernando !!! Obrigada Frederico !! Poderiam me ajudar com outra dúvida ? codifiquei um _start que so prepara os argumentos argc e argv, define o alinhamento da pilha e chama main(), depois encerra com exit, mas o comando nasm _start.s -felf32 dá msg "_start.s:9 : error invalid combination of opmode and operands." section .text global _start extern main _start: xor ebp,epb pop esi mov esp,ecx and 0xfffffff0, esp push eax push esp push edx push ecx push esi call main mov eax int 0x80 sabem o que pode ser ? Link para o comentário Compartilhar em outros sites More sharing options...
Aurea Matsumura Postado Outubro 11, 2020 em 04:04 Autor Compartilhar Postado Outubro 11, 2020 em 04:04 ok. Funcionou !! obrigada Link para o comentário Compartilhar em outros sites More sharing options...
Fernando Mercês Postado Outubro 11, 2020 em 04:07 Compartilhar Postado Outubro 11, 2020 em 04:07 Desocultei suas mensagens para a thread fazer sentido. ? Bom, você já deve ter percebido que os operadores estão na ordem inversa no AND no teu código e que tem um MOV EAX solto ali na penúltima instrução. Valeu. Link para o comentário Compartilhar em outros sites More sharing options...
Aurea Matsumura Postado Outubro 11, 2020 em 04:08 Autor Compartilhar Postado Outubro 11, 2020 em 04:08 1 minute ago, Fernando Mercês said: Desocultei suas mensagens para a thread fazer sentido. ? Bom, você já deve ter percebido que os operadores estão na ordem inversa no AND no teu código e que tem um MOV EAX solto ali na penúltima instrução. Valeu. obrigada !!! Link para o comentário Compartilhar em outros sites More sharing options...
Aurea Matsumura Postado Outubro 11, 2020 em 04:15 Autor Compartilhar Postado Outubro 11, 2020 em 04:15 o move eax eu retirei. o and eu fiz para limpar os últimos 4 bits do endereço da ESP. É necessario mesmo ? seria and 0xffffff0, esp ? Obriagada Link para o comentário Compartilhar em outros sites More sharing options...
fredericopissarra Postado Outubro 11, 2020 em 09:37 Compartilhar Postado Outubro 11, 2020 em 09:37 5 horas atrás, Fernando Mercês disse: Desocultei suas mensagens para a thread fazer sentido. ? Bom, você já deve ter percebido que os operadores estão na ordem inversa no AND no teu código e que tem um MOV EAX solto ali na penúltima instrução. Valeu. Para mim parece ainda estar "oculto", já que não vejo nenhuma referência à código fonte por aqui. Link para o comentário Compartilhar em outros sites More sharing options...
Fernando Mercês Postado Outubro 11, 2020 em 14:19 Compartilhar Postado Outubro 11, 2020 em 14:19 4 horas atrás, fredericopissarra disse: Para mim parece ainda estar "oculto", já que não vejo nenhuma referência à código fonte por aqui. Acho que ela ocultou de novo, mas já pus pra mostar. @Aurea Matsumura acho que você tá "desaprovando" seus posts e isso faz com que a gente não veja o código. Você tá fazendo de propósito? Abraços! Link para o comentário Compartilhar em outros sites More sharing options...
Aurea Matsumura Postado Outubro 11, 2020 em 15:20 Autor Compartilhar Postado Outubro 11, 2020 em 15:20 ola. desculpem-se. Consegui resolver o problema. muito obrigada pela ajuda Link para o comentário Compartilhar em outros sites More sharing options...
fredericopissarra Postado Outubro 11, 2020 em 21:04 Compartilhar Postado Outubro 11, 2020 em 21:04 5 horas atrás, Aurea Matsumura disse: ola. desculpem-se. Consegui resolver o problema. muito obrigada pela ajuda Tá.. eu me desculpo... pelo quê? ? Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados
Arquivado
Este tópico foi arquivado e está fechado para novas respostas.