一年前我参加了计算机组织课程,现在我将其作为“计算机体系结构”进行跟进,我正在使用 John Hennessy 的《计算机体系结构的定量方法》一书的第三版,我通过了 MIPS ISA但仍需要一些帮助,你能更详细地解释一下这行代码吗?
源代码:
for(i=1000; i>0; i--)
x[i] = x[i] + s;
汇编代码:
Loop: L.D F0, 0(R1) ; F0 = array element
ADD.D F4, F0, F2 ; add scalar
S.D F4, 0(R1) ; store result
DADDUI R1, R1,# -8 ; decrement address pointer
BNE R1, R2, Loop ; branch if R1 != R2
这是作为循环展开以利用 ILP 的示例给出的,我有一些疑问。我确实知道数组从 Mem[0+R1] 开始并向后直到 Mem[R+8](如文中给出) ,这是什么原因,或者他们只是随机取了这个位置?
另外,当我们添加有符号数 (-8) 时,为什么要使用 DADDUI (unsigned ) ?
请对此进行详细概述,以便我可以关注其余主题。谢谢