• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

能否讲讲编译器原理

请输入用户名 2018-12-08 浏览量:541

就说下我认为的程序有单片机这种程序,有的也称下位机;有嵌入式芯片的程序,有操作系统上的应用程序,最常见的就是WINDOWS下的应用程序。

那问题是:

1、单片机的程序都是在IDE下开发(绝大部分都是),那编译器是不是就包含在IDE里面,但实际上IDE和编译器不是一回事,是相对独立的?

     我可不可以理解编译器是个程序,也可以不通过IDE来编译单片机代码。比如我在编辑软件里写了个代码,保存一个格式,然后我可以在命令行下调用编译器,按照编译器的命令格式去编译这个保存的文档?编译器对文档格式类型有要求吗。

2、嵌入式芯片的程序,看好像是需要交叉编译器,这个编译器原理和编译单片机程序的编译器是一样吗?工作流程是什么。

3、WINDOWS下开发应用程序一般也是IDE下开发,是不是也在IDE里内嵌了编译器?这又是什么工作原理呢。

请各位大佬赐教,知道有这么个东西,但是不明白原理是什么,怎么运行编译器也不懂。

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 1,IDE 是个全家桶,包括了编辑器,编译器,调试器,代码检查,自动补全,工程代码组织等等很多功能,编译器算是全家桶里面的一个东西

    2,交叉编译,意思是编译的程序,在不同架构的芯片上运行。比如用 x86 编译,编译出来的程序在 arm 上运行,x86  arm 是两个不同架构,所以叫交叉。

    工作流程,编译分两步,语法语义词法解析,翻译,高级语言 C 解析都一样,翻译的时候,翻译成 x86 的机器语言就能在 win 下运行,也可以翻译成 arm 的机器语言就可以在 arm 上运行。

    3,win 下 IDE 内嵌编译器,任何全家桶都内嵌编译器,编译器工作原理:编译分两步,语法语义词法解析,翻译,高级语言 C 不管在哪里解析都一样,翻译的时候,翻译成 x86 的机器语言 win nt 内核的。就是在 win 下运行的程序


    • 发布于 2018-12-09
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:10
  • 你的理解是正确的

    IDE可以分三个功能:编辑器、调试器和编译器

    有的IDE这三个功能都使用第三方的,它仅仅是把三者有机的整合在一起。比如Qt的编译器就是使用VS或mingw。

    编译器,是把代码转换成计算机或单片机能够执行的机器码。我们知道,计算机的CPU和单片机的指令几乎是完全不同的。

    所以在用于计算机编程的编译器不能编译单片机程序,反之亦然。

    我们把在计算机上编译出单片机程序的编译器叫做交叉编译器。

    • 发布于2018-12-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 其实就是把程序C语言的内容转成机械可以识别的代码的功能,内部的细节只有深入学习了编译原理才可以知道的

    平时 使用基本不用

    • 发布于2018-12-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 其实常说的编译是

    编译和链接 两个过程。

    • 发布于2018-12-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 其实IDE就像个盒子,里面装满了工具,但是有的IDE功能更加强大,比如同步debug的~
    • 发布于2018-12-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 编译 是从源代码(通常为高级语言)到能直接被计算机或虚拟机执行的目标代码(通常为低级语言或机器语言)的翻译过程。然而,也存在从低级语言到高级语言的编译器,这类编译器中用来从由高级语言生成的低级语言代码重新生成高级语言代码的又被叫做反编译器。也有从一种高级语言生成另一种高级语言的编译器,或者生成一种需要进一步处理的的中间代码的编译器(又叫级联)。
    典型的编译器输出是由包含入口点的名字和地址, 以及外部调用(到不在这个目标文件中的函数调用)的机器代码所组成的目标文件。一组目标文件,不必是同一编译器产生,但使用的编译器必需采用同样的输出格式,可以链接在一起并生成可以由用户直接执行的EXE。
    • 发布于2018-12-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 没错,你的想法是对的,IDE只是提供了一个写代码的环境给你而已,真正工作的是编译器,如果你愿意的话,完全可以用记事本txt写好代码,通过命令行敲指令用编译器编译生成可执行文件,而MDK这个开发环境集成度比较高,它集成了自己的ARM编译器在IDE里面。

    • 发布于2018-12-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 总共分成两个部分,就是编译与连接,并产生机械码
    • 发布于2018-12-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 1、IDE里面自带一个编译器

    2、是一样的,所有的IDE,包括X86和ARM的开发软件,都用的GCC,不过X86的是X86-GCC,ARM的是ARM-GCC

    • 发布于2019-01-06
    • 举报
    • 评论 0
    • 0
    • 0

  • 编译器的原理就是根据你的代码然后找出对应的机器码,再把语言转换成机器码
    • 发布于2019-01-15
    • 举报
    • 评论 0
    • 0
    • 0

  • IDE大部分都是通过不同的语言的特征来识别机器码编译的
    • 发布于2019-01-18
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

能否讲讲编译器原理