add variable_table

to hide the difference between the variables allocated in register and
allocated in memory.
use emplace() instead of insert()