Virtual Machines and Intermediate Languages