well, if i remember my compiler teachings well, thats not how it works. what happens is (and once again, i am shakey on this so if im wrong correct me) the assembly code generated doesnt have an a variable. instead it associates it with a register and pushes the value 5 onto that register
Identifiers are not stored inside an executable. Identifiers are translated into addresses in memory during compilation based on the host OS's architecture. A piece of data, however, is stored in memory (when loaded from the HDD or given as input during the program's run-time).
Identifiers exists until linking has been completed. Before linking, the identifiers are mangled (C++ only). Once linking has finished, identifiers are stripped.