对装配答案的反馈

时间:2013-08-12 20:53:39

标签: unix assembly grep mips

我被要求提供以下问题的解决方案;

1.A)在MIPS汇编中,有许多方法只使用一条指令将一个寄存器的内容复制到另一个寄存器中。写出五条单个指令,每条指令将$s0的内容复制到$s1。您不能使用MIPS伪指令。

我已经制定了以下解决方案,但是我无法找到“标记”它们的方法,所以如果有“更简单”的方式或者如果您认为以下任何一种方法有误,请回复;

add $s1, $s0, $zero
addi $s1, $s0, 0
sub $s1, $s0, $zero
lw $s1, 0($s0)
and $s1, $s0, $zero

作为另一点,我也有以下问题,这完全抛弃了我,主要是因为涉及双^;

1.B)如果我们执行以下grep命令:

grep -E "^[^a][bc].*"

以下哪一行(在控制台上输入)将匹配?

abc
AbX
Zc
ZcHello
aBNo
bb
bDbc
bca
cba
bbbbb

当然,非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

5分中有4分看起来很好。

然而操作:

lw $s1, 0($s0)

没有做你想要的。 X(REG)语法执行间接寻址。假设$ s0包含1165.在这种情况下,lw $s1, 0($s0)会将存储在内存地址1165的值放入$ s1。lw $s1, 4($s0)会将内存地址1169的值放入$ s0。

希望这很清楚。如果没有,你可以谷歌间接寻址,或者询问,我会尝试更好地解释它。

如果你想测试MIPS代码,有一个优秀的基于Java的MIPS模拟器,可以让你“检查”cpu的状态,逐步执行程序等:

http://courses.missouristate.edu/kenvollmar/mars/

不幸的是我不是grep专家所以我无法帮助你。与任何UNIX程序一样,请查看联机帮助页和帮助消息:

手册页:

man grep

帮助信息:

grep --help

希望这有帮助!