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

在这个MIPS组装程序中,lw和la有什么区别?

  •  -1
  • user366312  · 技术社区  · 6 年前
    #enter a string and show it 
    
    .data 
    prompt: .asciiz "enter a string >"
    input_str: .space 81
    input_sz: .word 80
    
    .text
    
    main:
    
    # display the prompt
    li $v0, 4
    la $a0, prompt
    syscall
    
    # type a string, and save the input
    li $v0, 8 # store the string in $v0
    la $a0, input_str
    lw $a1, input_sz 
    syscall
    
    # display the inputted string
    li $v0, 4
    la $a0, input_str
    syscall
    
    #terminate the program
    li $v0, 10  
    syscall
    

    上面的程序显然运行良好。
    改变 lw la 没什么区别。
    一、 这个程序仍然有效。

    那么,它们之间有什么区别呢 长波 洛杉矶 在这个MIPS组装程序中?

    1 回复  |  直到 6 年前
        1
  •  3
  •   Martin Rosenau    6 年前

    把lw改成la没什么区别。
    一、 这个程序仍然有效。

    ... 但这并不意味着指令具有相同的效果。

    如果你更换 100 通过 10000 fgets(fl,buffer,100) ,程序仍将以高概率工作!

    那么,它们之间有什么区别呢 lw la 在这个MIPS组装程序中?

    长波

    长波 加载存储在特定地址的值。所以呢 lw $a1, input_sz 将值80加载到寄存器中 a1 因为值80存储在标签指定的地址 input_sz .

    洛杉矶

    洛杉矶 将标签本身的地址加载到寄存器中。示例:如果标签 输入\u sz 位于地址100,值100将加载到 按指令注册 la $a1, input_sz .

    在这个地址存储什么并不重要。CPU不会读取它。

    推荐文章