An embedded virtual machine (EVM) is software that interprets the instruction set of a high-level language. This paper explains the architecture and the memory model of an EVM dedicated for small footprint embedded systems and designed to be easily implemented and ported to 8- or 16-bit microcontrollers. The EVM instruction set promotes modularity (object-based), encapsulation, safety, and multithreading to improve the quality of embedded software constrained environments. The B# (be-sharp) open-source project is used as the driving example.