簡體   English   中英

需要幫助解決此MIPS(裝配體)中的循環

[英]Need help solving this loop in MIPS(assembly)

我在MIPS(assembly)中有一個循環,如下所示:

LOOP: 
      slt $t2, $0, $t1
      beq $t2, $0, DONE
      subi $t1, $t1, 1
      addi $s2, $s2, 2
      j LOOP
DONE:

如果開始時將$t1的值設置為10,如果開始時將$s2設置$s2那么$s2的值是多少?

我試圖解決問題的答案,但結果卻是20。但是,解決方案手冊說它是200。有人可以告訴我這里缺少什么嗎? $t1為0之前, $s2不會一直增加2嗎?

我同意@Joe Farrell,此循環基本上等效於此C樣式循環:

while(t1 > 0)
{
  --t1;
  s2 += 2;
}

看來您正在研究“計算機組織和設計:硬件/軟件接口”這本書,但我只設法找到了第三版和第四版的勘誤表,但我都沒有看到任何錯別字。 您正在使用哪個版本?

答案將是22。因為如果u重復循環直到t1 = -1,則s2將為22,並且當循環再次開始時,t2變為0,這導致打印DONE(循環退出的地方)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM