Jadi di MIPS kita bisa mengalokasikan ruang untuk string di bagian .data dari program kita. Namun, ini hanya berfungsi untuk variabel string yang telah ditentukan sebelumnya. Katakanlah seseorang memanggil fungsi sebagai gantinya di suatu tempat dalam kode kita seperti ini:

myFunc("blablabla"); 

Untuk melakukan ini di MIPS kita perlu menyimpan blablabla di memori. Bagaimana kita mengalokasikan memori untuk menyimpan blablabla di segmen .text program kita, bukan di .data?

0
Alk 4 November 2017, 16:28
"Bagaimana kita mengalokasikan memori untuk menyimpan blablabla di segmen .text dari program kita" Itu tidak berbeda dengan menempatkan data di bagian .data, kecuali bahwa Anda harus memastikan bahwa semua instruksi selaras kata. Tetapi kompiler mungkin akan menempatkan string literal itu di salah satu bagian data.
 – 
Michael
4 November 2017, 16:42

2 jawaban

Sudahkah Anda mencoba ini?

li      $v0, 9                  # Code in %v0: 9 -> Allocate heap memory 
li      $a0, 8                  # Allocate 8 bytes
syscall                         # System call for allocating space

Anda dapat mengalokasikan memori dari heap dan menyimpan string. Anda dapat mengubah 8 byte yang saya gunakan misalnya dengan jumlah karakter yang dimiliki string Anda. Pertanyaan tentang cara menghitung karakter telah dijawab.

Setelah syscall register $v0 menyimpan alamat dari ruang yang dialokasikan.

0
Andrew Zacharakis 14 Maret 2018, 18:44

Saya pikir Anda memiliki beberapa kebingungan. Konstanta string Anda tidak perlu berada di bagian teks. Mereka dapat dimasukkan ke dalam bagian data seperti variabel lainnya.

Panggilan fungsi di penghujung hari hanya mengambil alamat string (label yang akan Anda buat di bagian data).

Anda dapat merujuk ini di bagian teks di instruksi pemindahan.

0
Ajay Brahmakshatriya 14 Maret 2018, 18:50