This paper addresses two of the lowest-level issues arising in the development of embedded systems: ROMing information and working with memory-mapped IO. It focuses on how these issues can be addressed in systems implemented in C++, identifying how C++ approaches differ from C, and especially how C++’s greater expressiveness can be used to develop models of memory-mapped IO that are more natural, more concise, and safer than C, yet offer performance as good or better than C.