Enviado em 18/10/2018 - 11:49h
Estava testando um "brinquedinho" enquanto aguardava o almoço e resolvi compartilhar.
//-------------------------------------------------------------------
//
// ASM Expr X86( 32 bits ):
//
// ARQUIVO:
// expr.c
//
// COMPILE:
// gcc expr.c -o expr -Wall -m32
//
//-------------------------------------------------------------------
//
#include <stdio.h>
#define REG_MAX 6
enum {
EAX = 0,
ECX,
EDX,
EBX,
ESI,
EDI
};
static char *REGISTER[REG_MAX] = { "%eax", "%ecx", "%edx", "%ebx", "%esi", "%edi" };
static int stack;
void push (void) {
if (stack < REG_MAX)
stack++;
}
void pop (void) {
if (stack)
stack--;
}
void push_number (int i) {
push();
printf ("mov $%d, %s\n", i, REGISTER[stack]);
}
void add (void) {
printf ("add %s, %s\n", REGISTER[stack], REGISTER[stack-1]);
pop();
}
void imul (void) {
printf ("imul %s, %s\n", REGISTER[stack], REGISTER[stack-1]);
pop();
}
void print_stack(void) {
printf ("Stack(%s) = %d\n",REGISTER[stack], stack);
}
int main (void) {
//----------------------------
//
// Expression:
// 10 * 20 + 3 * 5;
//
// Result: ecx = 215
//
//----------------------------
//
push_number(10);
push_number(20);
imul();
push_number(3);
push_number(5);
imul();
add();
print_stack();
return 0;
}
Atualizando o Passado: Linux no Lenovo G460 em 2025
aaPanel - Um Painel de Hospedagem Gratuito e Poderoso
O macete do Warsaw no Linux Mint e cia
Visualizar arquivos em formato markdown (ex.: README.md) pelo terminal
Dando - teoricamente - um gás no Gnome-Shell do Arch Linux
Como instalar o Google Cloud CLI no Ubuntu/Debian
Mantenha seu Sistema Leve e Rápido com a Limpeza do APT!
Procurando vídeos de YouTube pelo terminal e assistindo via mpv (2025)
Jogos baixados na Central de Aplicativos mas que não abrem (1)
debian com wayland, configuracao de teclado. Mudou Tudo! [RESOLVIDO] (1)
Iinstalar o Scanner Kodak i940 no Linux Mint 19/20? (3)
Pastas da raiz foram para a área de trabalho [RESOLVIDO] (11)