A Programmer's View of Computer Architecture: With Assembly Language Examples from the MIPS RISC Architecture