2012-02-25 80 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