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
Gcc gnu汇编程序指令的文档_Gcc_Assembly_Mips_Directive_Gnu Assembler - Fatal编程技术网

Gcc gnu汇编程序指令的文档

Gcc gnu汇编程序指令的文档,gcc,assembly,mips,directive,gnu-assembler,Gcc,Assembly,Mips,Directive,Gnu Assembler,我现在正在努力学习mips汇编。为此,我写了一个非常简单的c程序 int main(){} …并在mips计算机上使用-S选项对gcc进行编译以生成汇编代码。以下是主函数的开头: .ent main main: .frame $fp,8,$31 .mask 0x40000000,-8 .fmask 0x00000000,0 新界北总区 主要内容: .帧$fp,8,$31 .掩码0x40000000,-8 .fmask 0x00000000,0 然后我试图通过查看来

我现在正在努力学习mips汇编。为此,我写了一个非常简单的c程序

int main(){}
…并在mips计算机上使用-S选项对gcc进行编译以生成汇编代码。以下是主函数的开头:

.ent main main: .frame $fp,8,$31 .mask 0x40000000,-8 .fmask 0x00000000,0 新界北总区 主要内容: .帧$fp,8,$31 .掩码0x40000000,-8 .fmask 0x00000000,0
然后我试图通过查看来了解这一切意味着什么,但我在那里找不到任何这些指令。那他们是什么意思?我在哪里可以找到更多信息?

我知道我的答案有点晚了。迟做总比不做好

编译程序集文件时,代码中可能会显示两种指令

  • 一种是汇编程序支持的指令,在您的情况下,它是GNU as指令

  • 另一种取决于您的汇编语言,因为您显然在这里使用mips汇编,
    .ent
    实际上是一个
    mips汇编
    指令

  • 在这里可以找到
    .ent.frame.fmask.mask
    指令:它们都是mips汇编指令。或者您可以
    谷歌MIPS汇编语言程序员指南
    。导航到
    第8章,伪操作码
    ,您将获得所需的一切

    您可能想知道
    GNU as
    如何支持
    mips指令
    ?键入
    信息作为
    ,导航到章节
    机器相关功能
    ,然后导航到子章节
    MIPS相关
    。但仍然无法在此处找到
    .ent
    指令,也无法找到
    .frame.fmask.mask
    。这是因为
    info as
    不是mips汇编指南,也不能太全面


    顺便说一句,
    nasm
    ,许多程序员都熟悉的汇编程序,有自己的指令和语法(英特尔风格),不同于
    GNU as
    (源自古老的AT&T风格)。类似地,不同的汇编语言可能有自己独特的指令(但不是语法),这些指令也可以由汇编程序支持。这就是为什么程序集文件中可能会出现两个指令源。现在,GNU as汇编程序甚至可以支持英特尔语法。此外,还有一些工具可以在AT&T和Intel语法之间进行转换。但是,您应该记住,指令与语法不同。坦率地说,我对此也感到困惑。

    也许您的gcc副本配置为使用其他汇编程序(而不是gas)?上面写的是什么“gcc-c-Wa,-version-xc-.ent
    .frame
    等是什么会很好。感谢您的回答