C语言
woidmm(doublex[][],doubley[][],doublez[][]){
inti,j,k;
for(i=0;i!=32;i=i+1)
for(j=0;j!=32;j=j+1)
for(k=0;k!=32;k=k+1)
x[j]=x[j]+y[k]*z[k][j];
}
汇编
mm:
li$t1,32
li$s0,0
L1:li$s1,0
L2:li$s2,0
sll$t2,$s0,5#$t2=i*25(25为矩阵的行宽)
addu$t2,$t2,$s1#$t2=1*行宽+j
sll$t2,$t2,3t2=元素[j]偏移地址
addu$t2,$a0,$t2#绝对地址
l,d$f4,0($t2)#8个字节长的无素x[j]
给色地方的是问题,为什么T2=i*25呢~~~如果是移5位的话不是应该32吗
第三行~为什么8个字节只要左移3位就行了?是为了每次加一来代表是第几位吗????
第四行绝对地址为什么要加上a0这个参数寄存器????a0中存储的不是X的元素吗???
请大侠帮忙解答一下问题拜谢
分 -->
|