2012-02-25 40 views
0

我是相當新的MIPS,我需要這個MIPS代碼轉換成C:MIPS轉換到C,sltiu特別

addi $t0, $t0, 0 
sltiu $t1, $t0, 1000 
beq $t1, $0, 7 
sll $t1, $1, 2 

之後,它進入一些操作,但是這是款我無法翻譯。我認爲它是沿(以下不是實際的代碼)線的東西:

if (condition) 
    go 7 lines down 

但我對1000的sltiu困惑,以及如何設置的。如果有人能幫助我,我會很感激。謝謝!

回答

1
addi $t0, $t0, 0 
    #t0 = t0 + 0; 
sltiu $t1, $t0, 1000 
    #t1 = (t0 < 1000) ? 1 : 0; 
beq $t1, $0, 7 
    #if (t1 == 0) 
    # goto foo; /* label foo is 28 bytes down the program counter */ 
sll $t1, $1, 2 
    #t1 = $at << 2; 

可以簡化代碼:

if ($t0 >= 1000) 
    goto foo; /* label foo is 28 bytes down the program counter */ 
+0

哦,我想我現在看到的。 (剛剛看到你的回覆,並幫助我很多) – rfmas3 2012-02-25 08:46:29

+0

如果($ t0 <1000)sltiu設置$ t1爲1,否則爲0.如果t1爲零,則檢查beq。因此:我們真的在檢查($ t0> = 1000){ – Wiz 2012-02-25 08:48:21