我正在编写一个JAVA程序来模拟汇编程序(作为我大学的作业)。
我有一个汇编程序,作为这个汇编程序的输入。
汇编代码中每个语句的一般格式如下:
[Label] OPCODE OPERAND1 [OPERAND2]
(每个词用空格分隔)
Label
和OPERAND2
是可选部分,因此在某些声明中可能无法使用这些部分。
在我的java代码中,我读取每一行,然后使用StringTokenizer
将4个部分用空格分隔。
我的问题是,只要Label
和/或OPERAND2
不可用,我如何才能发现StringTokenizer
返回的第一个值实际为OPCODE
值,同样第二个值值是OPERAND1值?这样做的最佳方式是什么?
非常感谢
答案 0 :(得分:2)
如果
Label
永远不能是OPCODE
,OPCODE
个值,你可能只是创建一个方法isOpcode(String s)
并在令牌化后测试第一部分。如果通过,Label
必定已丢失。如果失败,则Label
必须存在。
根据该测试的结果,您可以计算其余部分以确定是否存在OPERAND2
。
答案 1 :(得分:0)
解析该行并将其放入ArrayList中。 如果ArrayList.size()是4而不是4。 如果它是测试ArrayList.get(0),如果它是Op而不是标签不可用,如果它不是操作数2不可用。 如果size为2,则标签和操作数2都不可用。 我建议你为每种格式制作一个课程(I格式,R格式......)