Enviado em 29/06/2014 - 09:49h
Olá pessoal !
Tenho este código:
Gostaria que a multiplicação sete (%esp) igual a adicao:
#include <stdio.h>
int i;
//
// i = 10 * 20 + 3 * 5; // igual = 215
//
void funcao (void)
{
// push 2 valores:
//
asm ("push $10");
asm ("push $20");
// MULTIPLICA:
asm ("pop %eax");
asm ("imul (%esp), %eax"); // resultado: %eax
asm ("mov %eax, (%esp)"); // copia %EAX para (%ESP)
// push 2 valores:
//
asm ("push $3");
asm ("push $5");
// MULTIPLICA:
asm ("pop %eax");
asm ("imul (%esp), %eax"); // resultado: %eax
asm ("mov %eax, (%esp)"); // copia %EAX para (%ESP)
// SOMA:
asm ("pop %eax");
asm ("add %eax, (%esp)"); // resultado: (%esp) ---- EXCELENTE RESULTADO
#ifdef _WIN32
asm ("pop _i");
#endif
#ifdef __linux__
asm ("pop i");
#endif
}
int main (void)
{
funcao();
printf("\nresult( 10 * 20 + 3 * 5 ) = %d\n", i); // 215
return 0;
}
Uma adicao, ok:
-------------------------------------------------
asm ("add %eax, (%esp)"); // resultado: (%esp) ---- EXCELENTE RESULTADO
-------------------------------------------------
Gostaria de fazer algo assim ... mas não funciona:
-------------------------------------------------
asm ("imul %eax, (%esp)); // resultado: (%esp) ... ASSIM NAO EH POSSIVEL
-------------------------------------------------
Alguém saberia como fazer para conseguir isso ...
OBS: parece que isso será impossível( eu acho )... ;)
Grato !