小技巧:枚举的最后放置了一个数 NUM_OF_REGISTERS。通过这个数可以获取寄存器的个数,即便你又添加了其它的寄存器。现在我们需要一个数组为寄存器存放数值:
- int registers[NUM_OF_REGISTERS];
接下来你可以读取寄存器内的值:
- printf("%dn", registers[A]); // 打印寄存器A的值
修订
我没有在寄存器花太多心思,但你应该能够写出一些操作寄存器的指令。比如,如果你想实现任何分支跳转,可以通过把指令指针(译者注:或叫程序计数器)和/或栈顶指针存到寄存器里,或者通过实现分支指令。
前者实现起来相对快捷、简单。我们可以这样做,增加代表IP和SP的寄存器:
- typedef enum { A, B, C, D, E, F, PC, SP,
- NUM_OF_REGISTERS } Registers;










