Ir para conteúdo
Fórum Script Brasil
  • 0

Assembly inline C


LuKaum

Pergunta

alguém poderia me ajudar com assembly inline C

tipo...como eu chamo uma funcao assembly com retorno para alguma variavel em C...

apenas sei usar o codigo asm mas toh com problema na execucao...

se eu uso

asm ("mov ax, 2") ele fala q o comando mov é irreconhecido...tendiii naummm...

kkkkkkkkk'

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Movendo: Outras Linguagens de Programação --> C, C++.

Como a dúvida não é de Assembly especificamente, e sim de como chamar instruções em C/C++, movendo à área adequada.

Não sei lá muita coisa de Assembly, mas acho que dá pra passar um exemplo:

int funcao();


int main(int argc, char*argv[])
{
        //Mostra o valor
    printf("%d",funcao());
    //Retorna sucesso
    return 0;
}

int funcao(){
    _asm{
        mov eax,5;
    }
    return; //Retorna 5
}

Obs.:

Compilei com o VS, aqui tem que usar "_asm", não sei se com outros compiladores é diferente.

Edit:

Nem tinha visto o post do Jhonas, vou ver se leio os tutoriais para me aprofundar mais em assembly.

Link para o comentário
Compartilhar em outros sites

  • 0

De qualquer forma, creio que esteja programando em C++, pois em C é possível deixar uma função sem tipo de retorno explícito (obviamente, será retornado o que estiver no eax). Só que, pelo menos no VS, quando você utiliza assembly, o compilador ignora isso (mesmo em C++). Afinal, como o código é traduzido para Assembly, é possível que o programador tenha mexido no registrador eax e, por isso, não quis especificar diretamente o retorno da função.

Tente então substituir:

int funcao(){
    _asm{
        mov eax,5;
    }
    return; //Retorna 5
}
Por:
int funcao(){
    asm("mov eax,5")
    return; //Retorna 5
}

Mas isso depende de seu compilador. Qual está utilizando ?

Link para o comentário
Compartilhar em outros sites

  • 0

Não entendi o que tu,quer...

Seria chamar a função em ASM , com C?

Más antes de usar a função que está movendo 5 para EAX,tu tem que buscar o valor de EAX de antes,ou com um call.

Ou essa função está errada,você não pode simplismente mover um valor pra outro sem ter o valor anterior.

É melhor mexer em assembly no arquivo depois de compilado,utitilizando um Dbg.

Olha sua base,compilada,e vai alterando na source,tenho nivel mediano em ASM,se precisar de ajuda estamos ai.

Att Felipe Barros.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...