【问题标题】:MIPS Data DirectivesMIPS 数据指令
【发布时间】:2013-07-28 04:05:35
【问题描述】:

我是 MIPS 的新手,正在尝试使用 this 书籍自学。我正在尝试学习数据指令,这三个指令有什么区别:

list:   .word 0:3
list:   .word 3
list:   .word

但我没有找到任何明确的文档/参考。

谢谢。

【问题讨论】:

    标签: assembly mips


    【解决方案1】:
    list:   .word 0:3
    

    将保留 3 个单词并将每个单词设置为值 0。这类似于:

    int list[3] = {0, 0, 0};
    

    或者

    list:   .space 12
    

    (在这种情况下,该值隐式为 0)。

    “0:3”中的 0 很可能是任何其他值。例如:

    list:   .word 'X':3
    # or
    list:   .word 88:3
    

    当缺少元素个数时,简直就是单词的值

    list:   .word 3
    

    类似于

    int list = 3;
    

    最后一个,

    list:   .word
    

    可能会导致汇编程序抱怨缺少操作数。

    【讨论】:

    • 谢谢你和完美的答案。但还有一个问题:list: .word 0:3 是动态内存分配还是静态?堆栈指针 ($sp) 怎么样?
    • @Hooman 那是静态的。事实上,这一切都是静态的。 .data 或 .rdata 主要用于程序启动时的静态数据设置。就像在任何函数之外时 C 的 static 关键字一样。动态内存,通常通过newmalloc() 通常通过系统调用分配(查找syscall)。在堆栈上分配的内存是典型的 C 自动变量。例如void foo() { int x; } 这里的 x 是一个自动变量,将在堆栈上分配。
    猜你喜欢
    • 2011-09-01
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 2019-04-26
    • 2012-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多