Enviado em 01/07/2014 - 11:42h
/*
**-------------------------------------------------------------------
**
** COMPILE:
** gcc prog.c -o prog -Wall
**
**-------------------------------------------------------------------
*/
#include <stdio.h>
int i;
//
// i = 20 / 5; // 4
//
void funcao (void)
{
asm ("push $20"); // primeiro numero MAIOR
asm ("push $5"); // agora numero menor
//---------------------------------
//
// troca: (%esp), 4(%esp)
//
//---------------------------------
asm ("mov (%esp), %eax");
asm ("mov 4(%esp), %edx");
asm ("mov %eax, 4(%esp)");
asm ("mov %edx, (%esp)");
//---------------------------------
asm ("pop %eax");
asm ("cltd");
asm ("idivl (%esp)");
asm ("mov %eax,(%esp)");
#ifdef _WIN32
asm ("pop _i");
#endif
#ifdef __linux__
asm ("pop i");
#endif
}
int main (void)
{
funcao();
printf ("\nresult i: %d\n", i); // 4
return 0;
}
asm ("fxch %st(1)");
Comparação entre os escalonadores BFQ e MQ-Deadline (acesso a disco) no Arch e Debian
Conciliando o uso da ZRAM e SWAP em disco na sua máquina
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Como instalar o Telegram Desktop no Ubuntu 24.04
Overclocking Permanente para Drastic no Miyoo Mini Plus
Problemas de chaves (/usr/share/keyrings) no Debian
Converter os repositórios Debian para o novo formato com as chaves