2011-04-05 95 views
0

我使用MARS MIPS模擬器並且有一個特定的任務,用內存中主Ascii字符串中的另一個字符串更改子字符串。但是,模擬器將這3個相鄰的內存放在內存中。當我將主字符串的字符移到右側時(如果第二個字符串比第一個字符串長),它實際上會覆蓋那些子字符串。我能否聽到一些關於如何解決這個問題的想法。MIPS ascii子字符串內存覆蓋

+0

標記爲家庭作業,如果它是作業。 – 2011-04-06 21:39:49

回答

0

在它們之間添加一些空的空間。 ;)

str1:   .asciiz  "I'm string one" 
some_space: .space  40 
str2:   .asciiz  "I'm the second string" 
other_space: .space  40 
str3:   .asciiz  "I'm the last string" 
guess_what: .space  40 

如果你不能做到這一點,與上述.space),你複製你的字符串聲明瞭三個目的緩衝區(總,然後直接進行編輯,。

編輯
可以在兩個緩衝區修改「主」的字符串,你仍然會覆蓋子,但你不必理會,因爲你已經得到了他們的副本別的地方,所以當把這些子。在實踐中,一旦你有了你自己的子串副本,你可以愉快地忘記原來的並覆蓋它們(如果需要的話),用作參考你得到的副本。
也許這是你所能做的。如果你沒有足夠的空間是不可能發明其他的。你必須重寫一些東西。順便說一句,修改'主'字符串後,你可以放置你的副本,所以調用者仍然可以找到子字符串。

+0

其實我正在寫一個子程序,這個子程序是從一些主要調用者調用的,這不是我的工作來解決這個問題。我需要確保不會發生重寫。感謝您的回答,我非常感謝。但是,您能否對這些緩衝區進行更具體的描述? – zmlyglt 2011-04-05 21:47:00