C++ 如何在c+中模拟5级管线+;?
我试图模拟管道的5级。我已将所有指令保存到结构中。 (基本上在lixcal分析阶段完成) 例如: 现在如果C++ 如何在c+中模拟5级管线+;?,c++,c,pipeline,instruction-set,C++,C,Pipeline,Instruction Set,我试图模拟管道的5级。我已将所有指令保存到结构中。 (基本上在lixcal分析阶段完成) 例如: 现在如果p[i]是管道的一个阶段,(p[1]可以是pc=pc+1; I[I]是指令,(I[1]可以是addr1r2r3) 我想做的是 at t=1 : p[1] = I[1] at t=2 :p[2] = I[1], p[1] = I[2] at t=3 :p[3] = I[1], p[2] = I[2], p[1] = I[3] at t=4 :p[4] = I[1], p[3] = I[2
p[i]
是管道的一个阶段,(p[1]
可以是pc=pc+1
;
I[I]
是指令,(I[1]
可以是addr1r2r3
)
我想做的是
at t=1 : p[1] = I[1]
at t=2 :p[2] = I[1], p[1] = I[2]
at t=3 :p[3] = I[1], p[2] = I[2], p[1] = I[3]
at t=4 :p[4] = I[1], p[3] = I[2], p[2] = I[3], p[1] = I[4]
…就这样
我现在使用C++。在C++中,任何人都能代表这个循环?< p>看起来你只想在每个时间步在数组的前面添加一个元素,从而将已经存在的数组元素移到右边。你可以避免做<代码> O(n** 2)< /COD>这样的OP> < /P>
int& p_at_time(int index, int time_moment) {
return &p[time_moment-index+1];
}
- 在t=1时:p_在时间(1,1)=I[1]
- 在t=2时:p_at_time(1,2)=I[2],(p_at_time(2,2)已经是
)==I[1]
- 在t=3时:p_at_time(1,3)=I[3],(p_at_time(2,3)和p_at_time(3,3)的值为I[2] 和I[1]分别)
换句话说,你想创建一个像手臂一样的虚拟机?@ KytoFoe:是的,我不理解你的问题。你在你的问题中描述了算法,那么你需要什么?如何在C++中表示上面的循环。
int& p_at_time(int index, int time_moment) {
return &p[time_moment-index+1];
}