Como Rodar Assembly dentro do código C++

Um recursos útil para situações extremas.


Como Rodar Assembly dentro do código C++


C++ é uma linguagem de programação abrangente e poderosa, mas existem poucas situações altamente especializadas que ela não consegue resolver.

Para essas situações, C++ oferece uma opção que permite descartar um código Assembly a qualquer momento.

Esta opção é o uso da instrução __asm__() ou somente asm(). Ou seja, a linguagem Assembly pode ser incorporada diretamente no programa C++.


Exemplo básico de uso

Nesse exemplo nota-se que através do código Assembly:

  • Move o valor imediato 3 para o registrador eax
  • Move o valor imediato 6 para registrar ebx
  • O valor adicionado é armazenado em sum para saída

asm.cpp

#include <iostream>

int main() { 
  int sum; 
  __asm__ ( "movl $3, %%eax;"
      "movl $6, %%ebx;"
      "addl %%ebx, %%eax ":"=a"(sum)); 
  std::cout << sum << '\n'; 
  return 0; 
} 

Após compilar e rodar:

g++ asm.cpp
./a.out

A saída será a soma: 9.

Caso queira evitar o uso dos underlines funcionará do mesmo jeito:

#include <iostream>

int main() { 
  int sum; 
  asm("movl $3, %%eax;"
      "movl $6, %%ebx;"
      "addl %%ebx, %%eax ":"=a"(sum)); 
  std::cout << sum << '\n'; 
  return 0; 
} 

O fato de usar assim __asm__ é que o programador tem um maior controle dos recursos nativos do C++.

Para mais informações acesse: https://en.cppreference.com/w/cpp/language/asm.


cpp assembly


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!