[英]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.