This paper presents several design patterns for constructing virtual machines for embedded systems. It captures properties of microcomputer architecture to design and implement the abstractions. The paper also shows how these patterns were captured and denoted (in UML) and implemented (in Java and/or C) to execute the virtual machine code generated by a small object-based JavaScript-like compiler on an objectoriented virtual machine.