我正在用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