Comment Pfff... (Score 0, Redundant) 134
This is completely trivial. You simply have to mark the VM with the architecture of its code. Then each host contains both a virtualization layer (à la vmware) and a multi-platform emulator (à la qemu). If the VM matches the architecture the host is running on, you use the virtualization layer, if it doesn't, you use the emulator.
As for moving between AMD64 and Intel 64 (for example), the VM has to emulate the few instructions that differ and virtualize the rest.
Of course, cross-architecture migration is not that useful since you have an emulation penalty. It is much simpler (and cheaper) to do everything on x64.