2017-02-13 87 views
0

我有這種類型的MIPS代碼相同的結果,我想將其轉換爲C.我可以轉換成給定的MIPS彙編代碼轉換爲C編程語言到底有

.data 
str1: .asciiz "hello" 
.text 
main: 
li $t1,0 
la, $t0, str1 
Loop: 
lb $a0, 0($t0) 
addi $t1,$t1,1 
addi $t0,$t0,1 
bne $a0,0 Loop 

的C轉換必須有作爲變量的mips寄存器的名稱,並且必須包含變量聲明。我怎樣才能做到這一點?

我想這樣做,但我不知道如何在C.

聲明變量我想這一點:

int t1=0 
char str1[] 
char to 

它是正確的嗎? 我該如何繼續?

+3

「我該如何繼續?」 - 學習C語言。 – Olaf

+1

您可能會得到相同的最終結果,但最終可能得不到完全相同的代碼,具體取決於編譯器等。 – AntonH

+0

你能舉一個c代碼的例子嗎? – CodeL

回答

0

我在您的MIPS代碼上添加了一些註釋並在MARS上運行它,輸出爲hello

.data 
str1: .asciiz "hello" 
.text 
main: 


    li  $t1,0  # i = 0 
    la  $t0, str1 # $t0 = str1 

Loop: 
    lb  $a0, 0($t0) # $a0 = str1[i] 
    li  $v0,11 
    syscall 
    addi $t1,$t1,1 # i = i+1 
    addi $t0,$t0,1 # $t0 = $t0 +1 
    bne  $a0,0 Loop # if str1[i] != 0 
stop: j stop 
    nop 

建議可能的C代碼如下。

#include <stdio.h> 
int main(void){ 

char str1[] = "hello"; 
int i; 
for(i = 0; i < str1[i]; i++) 
printf("%c\n" ,str1[i]); 
}