2013-07-24 136 views
0

我正在嘗試使用緩衝區和內存分配來確定輸入字符串的長度。所以可以說我分配了一些內存並讀取一個字符串並將其存儲到緩衝區中。那我怎麼知道這個字符串有多長?確定MIPS32中字符串的長度

+0

什麼語言? ASM/C/C++? – Geoffrey

+0

我道歉,我想我已經提到它應該是MIPS32。 –

+0

MIPS32 = CPU架構,而不是語言,我想你的意思是MIPS32彙編器。 – Geoffrey

回答

1

從開始計數直到找到空字符(0)。

喜歡的東西:

la $t0 string 

loop: 
    lb $t1 0($t0) 
    beq $t1 $zero end 

    addi $t0 $t0 1 
    j loop 

end: 

la $t1 string 
sub $t3 $t0 $t1 #$t3 now contains the length of the string 
+0

直到你減去纔有意義。不t0已經包含字符串的長度?當你找到一個空字符時,$ t0停止增加。所以$ t0現在包含字符串的長度吧?那麼爲什麼我們需要從$ t1中減去$ t0? –

+0

@SlyCooper我實際上倒退了。我會編輯它說sub $ t3 $ t0 $ t1。但減法仍然是必要的,因爲這些是地址,而不是偏移量 –