Added checkpointing mechanism (only support int32 variables for the moment)
- Added instructions to save/restore the variable promoted to NVM before/after each checkpoint
- Added the relocation of the memory target from NVM to VM for the instruction accessing promoted variables.
- Added a call to the restore function before the program start
- Created a variable @SRAM to handle memory operations to SRAM since the llvm ir doesn't accept absolute addressing (expect through inttoptr)
- Moved the addition of the checkpoint call from my_transformation.py to code_transformation.py
- Modified the test data generation