Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly MIPS:运行时异常:地址超出范围_Assembly_Mips - Fatal编程技术网

Assembly MIPS:运行时异常:地址超出范围

Assembly MIPS:运行时异常:地址超出范围,assembly,mips,Assembly,Mips,我正在汇编(MIPS)中编写一个小程序,其中我必须读取11个浮点并将它们存储在一个数组中: .include "../../ac1_macros.h" .eqv size, 11 .data array: .float 0:size str1: .asciiz "Insert 11 numbers: " .text .globl main main: la $t0, array print_str(str1) li $t1

我正在汇编(MIPS)中编写一个小程序,其中我必须读取11个浮点并将它们存储在一个数组中:

    .include "../../ac1_macros.h"
    .eqv size, 11
    .data
array:  .float 0:size
str1:   .asciiz "Insert 11 numbers: "

    .text
    .globl main
main:   la $t0, array   
    print_str(str1)
    li $t1, 1
fill_array:
    sll $t0, $t0, 2
    read_float()
    s.s $f0, ($t0)
    addi $t1, $t1, 1
    bne $t1, 11, fill_array
    jr $ra
我在插入第一个数字时遇到以下异常

0x0040004c处的运行时异常:地址超出范围0x40040000


我做错了什么?这与我没有使用的指令
align
有关吗?提前感谢。

您移动了
$t0,但不返回它,因此它将变得越来越大

没有测试,试试这个

    .include "../../ac1_macros.h"
    .eqv size, 11
    .data
array:  .float 0:size
str1:   .asciiz "Insert 11 numbers: "

    .text
    .globl main
main:   la $t0, array
    print_str(str1)
    li $t1, 1
fill_array:
    read_float()
    s.s $f0, ($t0)
    addi $t1, $t1, 1
    addi $t0, $t0, 4 # proceed to the next element
    bne $t1, 11, fill_array
    jr $ra

顺便说一句,“读取浮点”和“打印浮点”只是宏。他们以前工作过,所以我不认为这是问题所在。转换确实是问题所在,但您的代码没有任何改进。首先,移位在这里没有任何意义:S@JPC这里不应该使用Shift。我更新了代码,假设
float
的长度为4字节。