一句话,就是无论如何都从RAM里取,忽略任何优化
不用volatile
//main.c
#include <stdio.h>
int main()
{
int i=10;
int now=i;
printf("now= %d\n",now);
__asm
{
mov dword ptr [ebp-4],20h
}
now=i;
printf("now= %d\n",now);
return 0;
}
>cl /Ox main.c
>main
>now=10
>now=10
用volatile
//main.c
#include <stdio.h>
int main()
{
volatile int i=10;
int now=i;
printf("now= %d\n",now);
__asm
{
mov dword ptr [ebp-4],20h
}
now=i;
printf("now= %d\n",now);
return 0;
}
>cl /Ox main.c
>main
>now=10
>now=32
//main.c
#include <stdio.h>
int main()
{
volatile int i=10;
int now=i;
printf("now= %d\n",now);
__asm
{
mov dword ptr [ebp-4],20h
}
now=i;
printf("now= %d\n",now);
return 0;
}
>cl /Ox main.c
>main
>now=10
>now=32