Jump to content

criar .o de um codigo assembly x86 32 bits para rodar um computador 64 bit

 Read less than a minute

Recommended Posts

 Read less than a minute

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

Edited by Aurea Matsumura
correction
Link to post
Share on other sites
 Read less than a minute

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 to post
Share on other sites
 Read less than a minute

É 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 to post
Share on other sites
 Read less than a minute
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 to post
Share on other sites
 Read less than a minute
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 to post
Share on other sites
 Read less than a minute
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 to post
Share on other sites
 Read less than a minute
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 to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...