Intanto faresti bene a calmarti, sia perche' nessuno ti ha preso per "scemo", sia perche' del fatto che ti "incavoli" non mi importa veramente nulla.
Detto questo, quel "pezzo di codice assembler" non l'ho trovato (ma non dico che mi prendi in giro ...) ma lo ha generato il compilatore (VC2003, v. 7.1.3088, progetto Win32 Console, modalità Release, senza ottimizzazioni, switch /Od). Per la precisione, tutto il main e' il seguente
codice:
_main PROC NEAR
; 8 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 08 sub esp, 8
; 9 : const int a = 10;
00006 c7 45 fc 0a 00
00 00 mov DWORD PTR _a$[ebp], 10 ; 0000000aH
; 10 : int *pa;
; 11 :
; 12 : printf ("a = %d\n", a);
0000d 6a 0a push 10 ; 0000000aH
0000f 68 00 00 00 00 push OFFSET FLAT:$SG9623
00014 e8 00 00 00 00 call _printf
00019 83 c4 08 add esp, 8
; 13 :
; 14 : pa = (int*) &a;
0001c 8d 45 fc lea eax, DWORD PTR _a$[ebp]
0001f 89 45 f8 mov DWORD PTR _pa$[ebp], eax
; 15 :
; 16 : *pa = 20;
00022 8b 4d f8 mov ecx, DWORD PTR _pa$[ebp]
00025 c7 01 14 00 00
00 mov DWORD PTR [ecx], 20 ; 00000014H
; 17 : printf ("a = %d\n", a);
0002b 6a 0a push 10 ; 0000000aH
0002d 68 00 00 00 00 push OFFSET FLAT:$SG9625
00032 e8 00 00 00 00 call _printf
00037 83 c4 08 add esp, 8
; 18 :
; 19 : return 0;
0003a 33 c0 xor eax, eax
; 20 : }
0003c 8b e5 mov esp, ebp
0003e 5d pop ebp
0003f c3 ret 0
_main ENDP
Dato che a me interessa fare dei confronti tra compilatori, sarebbe interessante capire con quale versione di VC2003 stai operando tu e quale codice assembler viene generato nel caso in cui il "trucco" funzioni ...
Ma tutto questo "civilmente", altrimenti, non interessa neanche a me.