西西河

主题:【原创】语言编译器等请教 -- 中国农民

共:💬62 🌺30
分页树展主题 · 全看首页 上页
/ 5
下页 末页
    • 家园 十分感谢各位

      非计算机出身的能学会用现成的编译器吗?

      • 家园 我建议你研究一下FASM/NASM

        特别是FASM是一个免费的宏汇编语言,而且有原代码,可以作为参考.

        我不是计算机专业的,我也有跟你一样的疑问.

      • 家园 这个要看你怎么“使用”了

        如果对编译结果有严格要求,比如说要做特定的优化、多种编程语言混合、甚至是要做交叉编译,具备一定的计算机知识会有很大帮助。

        另外,如果你的工作涉及到检查编译过程和结果,那你可能还得懂一些编程,起码要学会报告编译错误。现在的C++程序,如果编译出错了,编译器可能会给你弄出几十屏错误信息来。

      • 家园 这个不用学,每个高级语言程序都有相应的运行环境,就像我们

        用普通应用软件一样,可以用这个软件随意运行调试您自己编写的高级语言程序。对于编译,您只要点菜单里的一个编译命令就可以完成编译过程。很多年前是这样的。

        • 家园 老农是想自己试着弄一个语言出来
          • 家园 噢,原来这样啊。我想可能会很麻烦吧,你要搜集很多这方面的

            知识。不同的高级语言程序编译也是不同的,要选哪种语言,再有人家已经有了完善的编译程序,你又要如何改进。

            我在想,如果你想研究一下原理,不如选个语言程序,反汇编看一下程序中编译这段的源程序,可能会明白一些原理。

            • 家园 这可不算个好主意

              不如选个语言程序,反汇编看一下程序中编译这段的源程序,可能会明白一些原理。

              现在的编译器,大部分的代码应该是在优化上。如果对那些能编译C/C++的编译器进行反汇编,出来的汇编代码我估计得超过上千兆。要从这里找出有关编译的部分,大海捞针。对于要学习编译原理,C和C++的语言定义也太复杂了。

              其实,如果真要这么做,有现成的源代码:GCC。不过,据说GCC的源代码也不容易读懂。

              • 家园 俺那时连C++都还没出现呢,嘿嘿,俺就估计这法子该被淘汰了

                俺学的知识已经陈旧了。不过当时我们想了解一段程序的时候,我们会选择这样做的。

                计算机科学技术的知识总是更新很快,让人疲于跟在后面不断学习。俺已经落伍了。

          • 家园 真有兴趣的话

            可以从lex和yacc以及Flex之类的工具入手。

    • 家园 俺当时就是学C语言、PASCAL语言。

      后来感觉PASCAL语言没用到。但是C语言应用很广,我记得我们学C语言编程,就可以演示一个字母从键盘怎样输入一直到由显示器输出的整个过程是怎样的。牵扯到汇编语言的知识也比较多。做完了这个,就会明白显示器上显示的字符颜色大小等等是怎样来的了。

      我们用C语言写的高级语言程序,一般由C语言编译程序,编译、连接最后成可执行文件。

      编译过程都是点一下编译就完成了,还真没注意这编译程序是怎么一回事。

    • 家园 N多N多年前

      我写过一个小编译器,完全是用C语言搞定。原来是准备用UNIX下的YACC来搞的,但是不符合导师的意思,他要一个可以给计算机系的高年级的学编译的学生演示编译器全工作过程的系统,还要每一步都可以拆开,这样在给学生指定PROJECT的时候,就可以要求他们去实现那个被抽掉的功能。

      我们用的最早的C编译器有CC1,CC2,LINK等过程,我觉得按照这个路子走不错,依次进行语法、语义的分析,然后转化成一个类似汇编语言的中间代码,最后一步是把这个中间语言对应到相应机器的汇编语言,对PC机而言,就是宏汇编,然后用微软的MASM汇编编译器来编译就可以运行了。

      • 家园 这又让俺想起泰让兄给俺留的作业: 逆波兰算法

        这又让俺想起泰让兄给俺留的作业: 逆波兰算法。

        可惜这个算法趣味性不强,至今没有想写的冲动。

      • 家园 很酷啊,多讲讲。你的编译器进去的是什么语言?

        要能把你用到的数据结构、算法什么的都给大家过一遍就好了。

分页树展主题 · 全看首页 上页
/ 5
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河