Assembly inline no GCC com sintaxe Intel

Publicado por Diego Ascanio em 11/02/2010

[ Hits: 9.614 ]

 


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++

C++ vs Java

Livro de programação de jogos Linux de graça

Porque fgets() ou gets()??

Compilando em um Cluster Linux

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts