Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如示例所示,添加寄存器四次的原因是什么?_Arrays_Mips - Fatal编程技术网

Arrays 如示例所示,添加寄存器四次的原因是什么?

Arrays 如示例所示,添加寄存器四次的原因是什么?,arrays,mips,Arrays,Mips,我刚刚开始学习MIPS,这个特殊的例子让我感到困惑。特别是添加寄存器四次 下面是我正在谈论的一个例子: 添加$t0、$s1、$s1的目的是什么 然后添加$t0、$t0、$t0,这样您就有了int k的四倍?它用于从int数组索引(代码)到字节数组索引(内存)的转换 k是代码中int数组的索引。整数的大小是4字节。要从内存中的字节数组加载值,请转到字节位置k*4。添加恰好是实现这一点的最简单操作。它用于从int数组索引(代码)到字节数组索引(内存)的转换 k是代码中int数组的索引。整数的大小是

我刚刚开始学习MIPS,这个特殊的例子让我感到困惑。特别是添加寄存器四次

下面是我正在谈论的一个例子:

添加$t0、$s1、$s1的目的是什么


然后添加$t0、$t0、$t0,这样您就有了int k的四倍?

它用于从int数组索引(代码)到字节数组索引(内存)的转换


k
是代码中int数组的索引。整数的大小是4字节。要从内存中的字节数组加载值,请转到字节位置
k*4
。添加恰好是实现这一点的最简单操作。

它用于从int数组索引(代码)到字节数组索引(内存)的转换


k
是代码中int数组的索引。整数的大小是4字节。要从内存中的字节数组加载值,请转到字节位置
k*4
。添加恰好是实现这一点的最简单操作。

它用于从int数组索引(代码)到字节数组索引(内存)的转换


k
是代码中int数组的索引。整数的大小是4字节。要从内存中的字节数组加载值,请转到字节位置
k*4
。添加恰好是实现这一点的最简单操作。

它用于从int数组索引(代码)到字节数组索引(内存)的转换


k
是代码中int数组的索引。整数的大小是4字节。要从内存中的字节数组加载值,请转到字节位置
k*4
。添加恰好是实现这一点的最简单的操作。

但从我的角度来看,它看起来像是在处理k原来是什么,并将其设为28(k是7,它是4*k),而且由于数组的大小只有12,这难道不意味着它正在访问超出范围的内存吗?数组有12个元素,但每个元素都是一个字,这是4个字节。所以数组的字节大小是12*4=48。@Michael哦,好的,现在我明白了。@Michael,好的,假设你没有添加寄存器,所以你可以有4*k,所以你有v+k,而不是v+4k。会发生什么?您是访问不允许访问的内存位置,还是访问数组中的某个元素,但它不是您想要的位置?您可以访问该位置,但该位置不正确。您可以获得另一个数组索引值(如果k可被4整除),或者获得由两个相邻数组元素的字节组成的值。例如,如果k=1,您将得到第一个int的最后3个字节,第二个int的第一个字节,这4个字节将被解释为您的结果。但从我的角度来看,它看起来像是在处理k原来是什么,并将其设为28(k是7,它是4*k),因为数组的大小只有12,这难道不意味着它正在访问超出范围的内存吗?数组有12个元素,但每个元素是一个字,即4个字节。所以数组的字节大小是12*4=48。@Michael哦,好的,现在我明白了。@Michael,好的,假设你没有添加寄存器,所以你可以有4*k,所以你有v+k,而不是v+4k。会发生什么?您是访问不允许访问的内存位置,还是访问数组中的某个元素,但它不是您想要的位置?您可以访问该位置,但该位置不正确。您可以获得另一个数组索引值(如果k可被4整除),或者获得由两个相邻数组元素的字节组成的值。例如,如果k=1,您将得到第一个int的最后3个字节,第二个int的第一个字节,这4个字节将被解释为您的结果。但从我的角度来看,它看起来像是在处理k原来是什么,并将其设为28(k是7,它是4*k),因为数组的大小只有12,这难道不意味着它正在访问超出范围的内存吗?数组有12个元素,但每个元素是一个字,即4个字节。所以数组的字节大小是12*4=48。@Michael哦,好的,现在我明白了。@Michael,好的,假设你没有添加寄存器,所以你可以有4*k,所以你有v+k,而不是v+4k。会发生什么?您是访问不允许访问的内存位置,还是访问数组中的某个元素,但它不是您想要的位置?您可以访问该位置,但该位置不正确。您可以获得另一个数组索引值(如果k可被4整除),或者获得由两个相邻数组元素的字节组成的值。例如,如果k=1,您将得到第一个int的最后3个字节,第二个int的第一个字节,这4个字节将被解释为您的结果。但从我的角度来看,它看起来像是在处理k原来是什么,并将其设为28(k是7,它是4*k),因为数组的大小只有12,这难道不意味着它正在访问超出范围的内存吗?数组有12个元素,但每个元素是一个字,即4个字节。所以数组的字节大小是12*4=48。@Michael哦,好的,现在我明白了。@Michael,好的,假设你没有添加寄存器,所以你可以有4*k,所以你有v+k,而不是v+4k。会发生什么?您是访问不允许访问的内存位置,还是访问数组中的某个元素,但它不是您想要的位置?您可以访问该位置,但该位置不正确。您可以获得另一个数组索引值(如果k可被4整除),或者获得由两个相邻数组元素的字节组成的值。例如,如果k=1,您将获得第一个int的最后3个字节,即第一个int