Sometimes, we may care less about the end result in rax and more about what sorts of things happened along the way to get there. I think an alternate form of execution could allow progressive inspection of the interpreter state. This could be useful for (e.g.) checking student implementations at a deeper level than just checking their outputs.