我正在用bison構建一個編譯器並遇到這個問題。 我需要動態分配內存並存儲字符串,然後打印它的內容。Mips動態內存分配和指針
我考慮過在數據部分保存一個指針,然後分配內存保存指針中的地址,然後分配字符串val然後打印它。 我的問題是當我試圖打印字符串時,它只打印第一個字符。 這裏是一個代碼示例。
.data
p: .word 0 # pointer to save the allocated memory first address.
.text
li $v0,9 #allocate instruction
li $a0,64 # allocate 64 byte
syscall
sw $v0,p #save the first memory address to pointer p
li $t0,'a' #write the first byte 'a' cahr
sw $t0,0($v0)
li $t0,'b' #write the first byte 'a' cahr
sw $t0,4($v0)
li $v0,4 #print instruction
lw $a0,p
syscall
這將導致火星在火星控制檯上。 有什麼想法爲什麼?
嘗試使用'.align',因爲您使用的是與'char'不匹配的'word' – Adam