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".
Nenhum comentário foi encontrado.