我的任务是用Flex实现类汇编语言的解释器。
有如下命令:
将x y z相加,(z = x + y)
次x y z,(z = x - y)
穆尔x y z,(z = x * y)
div x y z,(z = x / y)
设x为10,(x = 10)
移动x y(y = x)
使用Flex实现这些命令的解释器非常容易。
我一直坚持实现JMP line, (current line = line)
指令。我不知道如何重置Flex当前解析行或类似的东西。
我的任务是用Flex实现类汇编语言的解释器。
有如下命令:
将x y z相加,(z = x + y)
次x y z,(z = x - y)
穆尔x y z,(z = x * y)
div x y z,(z = x / y)
设x为10,(x = 10)
移动x y(y = x)
使用Flex实现这些命令的解释器非常容易。
我一直坚持实现JMP line, (current line = line)
指令。我不知道如何重置Flex当前解析行或类似的东西。
1条答案
按热度按时间6mw9ycah1#
JMP
instruction只是用目标指令的地址修改program counter。因此,您正在生成的这个VM需要一个PC寄存器。事实上就是这么简单。不要想太多。记住,半个世纪前,他们就用vacuum tubes创建了JMP指令。这对复杂性提出了严格的限制。