了解此 C++ 代码的 MIPS 等价物
Understanding the MIPS equivalent of this C++ code
你会如何复制:
int* a;
b = a[2];
在 MIPS 中,不使用 .data
?
我对此的回答是:lw $t1, 4($t0)
,其中 $t0
是 a,$t1
是 b-- 但这是不正确的。
同样,你将如何复制:
char* a;
a[4] = b;
再一次,我对此的回答是 lb 4($s0), $t0
,其中 $t0
是 b,$s0
是 a——但这也是不正确的。
复制
int* a;
b = a[2];
a[2]
是 a
指向的内容之后的 2 个元素,所以 lh $t1, 4($t0)
如果 int
是 2 字节长,lw $t1, 8($t0)
如果 int
是 4 个字节长。
复制
char* a;
a[4] = b;
将 1 字节值写入内存的指令是 sb
,而不是 lb
。因此,sb $t0, 4($s0)
应该假设 char
是 1 个字节长。
你会如何复制:
int* a;
b = a[2];
在 MIPS 中,不使用 .data
?
我对此的回答是:lw $t1, 4($t0)
,其中 $t0
是 a,$t1
是 b-- 但这是不正确的。
同样,你将如何复制:
char* a;
a[4] = b;
再一次,我对此的回答是 lb 4($s0), $t0
,其中 $t0
是 b,$s0
是 a——但这也是不正确的。
复制
int* a;
b = a[2];
a[2]
是 a
指向的内容之后的 2 个元素,所以 lh $t1, 4($t0)
如果 int
是 2 字节长,lw $t1, 8($t0)
如果 int
是 4 个字节长。
复制
char* a;
a[4] = b;
将 1 字节值写入内存的指令是 sb
,而不是 lb
。因此,sb $t0, 4($s0)
应该假设 char
是 1 个字节长。