MIPS汇编器内存对齐问题(包括详细代码)

时间:2012-04-29 02:30:51

标签: mips

我正在尝试将我从用户读取的整数存储到数组中,但是当我尝试将其存储到我的数组中时,我的数据变得不对齐。

第一个代码块是我初始化所有数据的地方。 (在1.是我试图存储整数的地方)

'#Constants
P_INT        = 1      #Syscall to print integer(value)
P_STRING     = 4      #Syscall to print a string(addr)
P_CHAR       = 11     #Syscall to print a char(char)
R_INT        = 5      #Syscall to read a integer(none)
EXIT         = 10     #Exit program(none)

'#Data
        .data
newline:
        .asciiz "\n"        

'#Space for the bored.

 1. 
board_rep:
        .space     578

'#The current node to be read in
cur_node:
        .word      0 

'#Size of the bored
size:
        .space     4
'#Plus sign
plus:
        .asciiz "+"
'#dash
dash:
        .asciiz "-"

就在这里它变得不对齐(在2.之后的右边)。奇怪的是,我之后会做同样的事情(在第三个代码块中),除了我将它存储在size数组中。

'#Constants
P_INT        = 1      #Syscall to print integer(value)
P_STRING     = 4      #Syscall to print a string(addr)
P_CHAR       = 11     #Syscall to print a char(char)
R_INT        = 5      #Syscall to read a integer(none)
EXIT         = 10     #Exit program(none)

'#Data
        .data
newline:
        .asciiz "\n"        

'#Space for the bored.

 1. 
board_rep:
        .space     578

'#The current node to be read in
cur_node:
        .word      0 

'#Size of the bored
size:
        .space     4
'#Plus sign
plus:
        .asciiz "+"
'#dash
dash:
        .asciiz "-"

在商店字(在3.下),它以精整整数存储读数。

'#Grabs user input for the bored and stores it
get_board_rep: 


        li       $v0,R_INT     '#Read next node and store it    
        syscall 
2.
        sw       $v0,0($s1)

        addi     $s1,$s1,4    ' #Increment next node addr

        lw       $a0,0($s1)
        j        prnt_node

我想也许这个数组太大了但我把它改成了4(与其他工作的数组大小相同)。但它仍然是未对齐的。

提前致谢。这是一个项目,我知道有些人不喜欢帮助这样的事情。但我做完了我的作业,我无法在任何地方找到答案。

1 个答案:

答案 0 :(得分:1)

这看起来并不符合我,如果我错了,请尝试明确地对齐它。