【发布时间】:2017-04-14 14:14:26
【问题描述】:
我正在使用 bison 构建编译器,但遇到了这个问题。 我需要动态分配内存并存储字符串,然后打印它的内容。
我想过在数据部分保存一个指针,然后分配内存,将地址保存在指针中,分配字符串 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
这将导致火星控制台上的字符 a。 任何想法为什么?
【问题讨论】:
-
尝试使用
.align,因为您使用的word与char不一致