3

我的输入文件看起来像这样。

 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

解决此问题的最佳方法是什么?

4

2 回答 2

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
于 2013-05-31T07:32:45.830 回答
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':
        ...

}

于 2013-06-03T15:05:39.873 回答