Assembly inline no GCC com sintaxe Intel

Publicado por Diego Ascanio em 11/02/2010

[ Hits: 8.767 ]

 


Assembly inline no GCC com sintaxe Intel



O GCC, por padrão, utiliza a sintaxe AT&T para as linhas inline de Assembly. Eu, particularmente, não estou acostumado à essa sintaxe, pois aprendi a sintaxe Intel e a considero mais fácil.

Então, rodando o Google à procura de alguma solução, descobri nesse site um artigo que ensina a usar a sintaxe Intel no gcc/g++.

É bem simples de ser usada. No seu programa com Assembly inline, para informar ao compilador de Assembly nativo, o gas, de que você usa a sintaxe Intel, adicione a seguinte linha:

asm(".intel_syntax noprefix\n");

Depois, compile o seu fonte com a seguinte switch:

-masm=intel

O comando de compilação ficará mais ou menos assim:

g++ -o executável -masm=intel fonte.cpp

Aqui vai um código de exemplo com Assembly inline para que vocês possam testar:

#include <stdio.h>
char r;
int main (void) {
asm(".intel_syntax noprefix\n");
asm("mov eax, 3\n");
asm("mov ebx, 0\n");
asm("lea ecx, r\n");
asm("mov edx, 1\n");
asm("int 0x80\n");
printf("%c\n", r);
printf("It probably works\n");
return 0;
}

Esse programa implementa uma espécie de getchar, que guarda na variável "r" o primeiro caractere digitado pelo usuário e que sai do getchar quando o usuário tecla enter para, depois, mostrar o caractere guardado na variável e a mensagem "it probably works".

Outras dicas deste autor

Slackware com WEP via iwconfig sem Wicd!

Leitura recomendada

Nemiver - Depurador gráfico (GDB) de C/C++

Porque fgets() ao invés de gets()

movfuscator - Compilador de uma única instrução Assembly

Medindo o tempo de execução do seu programa com o gprof

Conversão de tipos de dados em C/C++

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts