Compiler Design: Virtual Machines