代码之家  ›  专栏  ›  技术社区  ›  cdpp

程序集分支:简单循环中的程序计数器无效?为什么?

  •  0
  • cdpp  · 技术社区  · 4 年前

    所以我对MIPS程序集不太熟悉;这段代码运行,但它以“invalid program counter”错误结尾,分支如何扰乱程序计数?

    main:
        addi $a0, $0, 0xff
        jal func1
    
    func1:
        addi $sp,$sp,-4     
        sw $ra,0($sp)       # save return address
        addi $t1, $0, 3     # if it detects 0xff, loop three times
        beq $a0, 0xff, loop1
        bnez $t1, func_end
    
    loop1:
        subi $t1, $t1, 1
        bnez $t1, loop1
        
    func1_end:
        lw $ra, 0($sp)      # restore previous value of 0x($ra)
        addi $sp, $sp, 4    
        jr $ra
    
    li $v0, 10 
    syscall
    
    0 回复  |  直到 4 年前
    推荐文章