循环精确模型指针和数组

时间:2013-05-16 18:29:04

标签: c arrays pointers

我目前正在使用流水线为RISC处理器开发循环精确模型。我使用我讲师的一些代码示例编写了管道衬里方法的代码,但它不起作用。我对以下功能感到困惑:

void rf (int RS1, int RS2, int RD, dramcmdT cmd1, dramcmdT cmd2, dramcmdT cmd3, int din, int *dout1, int *dout2) 
{
    static int array[32];

    if (cmd1 == RD) 
        *dout1 = array[RS1];
    if (cmd2 == RD) 
        *dout2 = array[RS2];
    if (cmd3 == WR) 
        array[RD] = din;
}

RS1,RS2,RD是我发送的一些整数值,cmd1和cmd2始终是RD,cmd3始终是WR。所以基本上所有if语句都应该执行,但它们不会。我总是在dout1和dout2中得到零。我问我的讲师是否* dout1 = array [RS1]是一个正确的符号,他说这是正确的,但我不明白它是做什么的,为什么我在dout1和dout2中得到零?是否有人熟悉这种符号?

1 个答案:

答案 0 :(得分:1)

如何在array中设置值?唯一可以写的值是array[RD]。根据您的描述,RD是一个常量。所以,你只能初始化数组的一个元素。

或者,RD不是常量,在这种情况下,cmd1 == RDcmd2 == RD是什么?

RD重复使用作为命令和数组索引是非常不寻常和令人困惑的。

哦,BTW,*dout1 = array[RS1]是正确的表示法。那不是问题。