我的输入文件如下所示。
00 READ 9
01 READ 10
02 WRIT 9
03 LOAD 10
我只能使用5个整数变量(如 - reg1,reg2,reg3,reg4,reg5)并且必须读取每一行并将指令(如READ)转换为相应的代码10。
读入的信息将存储在长度为100的整数数组中。因此,前几行将被读取并转换和存储,如下所示:
0 1 2
1009 1010 1109
最好的方法是什么?
答案 0 :(得分:0)
正如我所看到的,每个助记符都是直接4个字节。您可以简单地分配一个32位整数,并将其地址提供给数据读取例程,以读取4个字节。然后“READ”将变为1145128274,“WRIT” - 1414091351,依此类推。这比字符串更容易比较。
或者相反 - 读取所有输入,然后设置指向助记符的(int *)指针。这样的事情:
char input[]="10 READ 09";
int* opcode = (int*)&input[3];
if( *opcode == 1145128274 ) // then it's READ
答案 1 :(得分:0)
我不知道这是否是解决此问题的最有效方法,但在读取第一个整数作为地址后,我调用了一个函数,该函数执行以下代码将指令转换为相应的整数值。
我使用枚举将指令设置为代码开头的相应值。
getchar();
*reg1 = (int)getchar();
*reg2 = (int)getchar();
*reg3 = (int)getchar();
*reg4 = (int)getchar();
switch( *reg1 ){
case (int)'R':
if( *reg2 == (int)'E' && *reg3 == (int)'E' && *reg4 == (int)'D' ){
*reg4 = READ;
return 1;
}else{
return 0;
}
break;
case (int)'W':
...
}