The Elements of Computing Systems, second edition (Building a Modern Computer from First Principles)