有关编译器的问题
各位老师,我问的问题也许有些幼稚,假如我想对某种语言的编译器进行改动比如C#,JAVA,理论上说,只要有编译器的源代码的应该可以用汇编重写编译器的吧,我应该怎么做呢,如果...
各位老师,我问的问题也许有些幼稚,假如我想对某种语言的编译器进行改动比如C#,JAVA,理论上说,只要有编译器的源代码的应该可以用汇编重写编译器的吧,我应该怎么做呢,如果我能重写,应该怎样测试呢,我用自己的编译器写的程序应该怎样发布给使用者并使之顺利运行呢
展开
2个回答
展开全部
编译器可不是你想象得那么简单的哦:)
很多编译器并不是用汇编语言写的,那样太累了。
编译器涉及非常复杂的词法和语法分析。现在基本上都是采用lex和yacc之类的工具自动生成词法分析程序和语法分析程序。每种语言都有各自不同的词法和语法,你需要提供词法和语法的正则表达式之类的东西给lex和yacc,然后由这两个工具生成词法分析程序和语法分析程序。词法和语法分析程序可以将你设计的语言编写的程序生成中间代码,然后再想办法编程机器可读的机器码就能运行了。
当然你也可以自己手动写词法和语法分析器,不过那个工程太过庞大。
很多编译器并不是用汇编语言写的,那样太累了。
编译器涉及非常复杂的词法和语法分析。现在基本上都是采用lex和yacc之类的工具自动生成词法分析程序和语法分析程序。每种语言都有各自不同的词法和语法,你需要提供词法和语法的正则表达式之类的东西给lex和yacc,然后由这两个工具生成词法分析程序和语法分析程序。词法和语法分析程序可以将你设计的语言编写的程序生成中间代码,然后再想办法编程机器可读的机器码就能运行了。
当然你也可以自己手动写词法和语法分析器,不过那个工程太过庞大。
金山毒霸
2024-10-31 广告
2024-10-31 广告
大部分系统错误,是因为某些DLL文件丢失造成的,比如未安装DirectX9或DirectX 9.0组件已损坏、缺少Visual C ++库、未安装.net库。解决方法如下:一、 手动解决方法1、先确定电脑操作系统是多少位的,现在的电脑一般都...
点击进入详情页
本回答由金山毒霸提供
展开全部
你好!编译器(在windows下,javac.exe)将源代码(java文件)编译为字节码(bytecode),存放在class文件中。
字节码不能直接在机器上执行,而是通过虚拟机(windows下是java.exe)执行。具体的执行方式有两种:
1. 一般情况下解释执行。解释执行并不是“解释为用c++语言写成的程序”,而是jvm把字节码看成脚本,根据字节码中的指令,由JVM去调用实际的本地方法。
2. 在打开了JIT参数的前提下,jvm会把执行过程中发现的热点位置,由jvm内部的即时编译器编译为本地机器码直接执行。
编译器将java文件编译为class文件,解释器将class文件变为机器语言
字节码不能直接在机器上执行,而是通过虚拟机(windows下是java.exe)执行。具体的执行方式有两种:
1. 一般情况下解释执行。解释执行并不是“解释为用c++语言写成的程序”,而是jvm把字节码看成脚本,根据字节码中的指令,由JVM去调用实际的本地方法。
2. 在打开了JIT参数的前提下,jvm会把执行过程中发现的热点位置,由jvm内部的即时编译器编译为本地机器码直接执行。
编译器将java文件编译为class文件,解释器将class文件变为机器语言
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询