Fundamentals of Embedded Software, Where C and Assembly Meet