自己可以编写编译器
㈠ 怎么用c#编写一个cs编译器
C#本身(或说.net本身)是带代码编译器的。你可以使用C#编写C#代码,然后在内存中运行,或生成另外的DLL等。
一般分两种,一种是编写C#代码,然后编译这些代码。
一种是编写il代码,这个最快,可直接运行。
可以参考CSharpCodeProvider、ILGenerator等相关技术关键字。
㈡ 汇编语言编译器是怎么编写的
编译器自举!搜索这个关键字
程序都是编译器编译的。这个是肯定的
至于第一款X语言编译器是不是直接1010101010自己写的那就不知道啦
一般开发编译器的话。有两条路选择
1.利用yacc(或者其变种)&lex(词法分析)-等工具自己生成语法模板
词法语法都可以使用这些工具自己生成
然后自己编写生成的中间码和生成的机器码就可以了
一般做编译原理类似试验都是如此的。许多编译器也的确是这样
2.自己写词法分析和语法分析。可以参考一些开源的编译器
lcc-这个是ANSI C99标准的编译器是开源的
或者nasm,watcom等编译器到www.sf.net上不少开源的编译器
总的来说。高级语言编译器比较难写
如果想快速写出一个的话
可以采用第一种做法。利用工具生成语法词法模板
先写一个简单的汇编编译器比较简单
开源的有nasm,jwasm(支持masm语法开源的编译器)
http://www.japheth.de/JWasm.html
fasm(这款编译器是自举的.就是自己可以编译自己),
http://flatassembler.net/
剩下的就是自己做好语言规则关键字map
引用高手的话。语言map做好了你的编译器也做好一半了
剩下的都是机械性的工作了。
生成x86或者arm指令。
优化工作这个很难解释.根据你所需要的做吧
毕竟可以做出一个无错,又XX的编译器已经很难得
你可以选择使用现有的编译器开发自己的编译器
然后等到你的编译器支持相当数量指令和成熟度的时候
使用自己的语法重新写一遍编译器.
这样你就可以用自己的编译器开发自己的编译器了(是不是很邪恶?)
另外举几个例子
Delphi的编译器是C++ Builder开发的。
而C++ Builder的IDE是Delphi开发的
C++ Builder的编译器是C++ Builder开发的-这个就是编译器自举了。。Delphi和C++ Builder共享一个后端化优化器。
Delphi 早期的版本的编译器是tasm直接编译的。可见Anders的汇编功力多强悍(Anders也就是后来VJ++,C#,.NET工程的核心架构师.最关键的灵魂级人物)
VC++的编译器是VC++开发的。很明显这都说明了编译器自举
自己开发自己。如果一个编译器可以做到自己编译自己。那基本上就可以实现任何功能了。
关于编译器开发的书籍可以看一下
龙书《编译原理(第二版)》
虎书《现代编译原理-C语言描述》
鲸书《高级编译器设计与实现》
建议从鲸书看起。然后是龙书
再来是虎书--虎书里面描述了许多现代编译器(正如其名)技术
例如面向对象啦,优化,垃圾回收等等.
鲸书看完基本上就可以实现一个简单的Tiny C编译器了
然后在龙书巩固,读一下语言规范,自己看一些开源的汇编编译器代码
自己就可以尝试做一个汇编语言编译器了.等到技术提高了
在尝试做一些高级语法识别,参考LCC代码做一下ANSI C99的
C语言编译器。再来就看你自己的兴趣和领悟度拉
如果想支持C++的话就得要对编译器做许多方便的研究
类似Java那种跨平台或者Ruby,Python等动态语言
虎书中也有描述。当然看自己功力了
㈢ 如何编写自己的编译器
我晕,你们老师真NB,你学的什么语言啊?是c吗?上来就让你做个编译器,你们老师吃错药了吧?
我大学同学毕业设计才是做个编译器,那会那俩人合作做的,还都是我们系公认的c最强的两个,合作还做了半年,你认为大一刚上来就做这个?!
㈣ 如何用c++做一个编译器
1、编译器有很多种,每一种的使用方式不尽相同。常用编译器:
Visual C++
GNU C++
Inter C++
Sun C++
clang
2、一般编译过程:源文件→预处理→编译→汇编→链接→可执行文件
下面以GCC示例:
预处理(Pre-Processing):根据预处理命令(#开头)修改源文件
# gcc -o hello.i -E hello.c or # cpp -o hello.i hello.c
编译(Compiling):语法检查,并将源文件翻译成汇编文件
# gcc -o hello.s -S hello.i or # cc1 -o hello.s hello.i
汇编(Assembling):将汇编文件转换为目标文件(二进制)
# gcc -o hello.o -c hello.s or # as -o hello.o hello.s
链接(Linking):编址和符号链接,生成可执行文件
# gcc -o hello hello.o or # ld -o hello hello.o
㈤ 如何编写编译器
编译器可以说是最复杂的程序之一,必须对算法和机器结构精通才行。
㈥ 制作一个简单的编译器
还能编译汇编。。。
我晕。。。
我想这个不是一般人可以做到的,祝你好运!
如果你仅仅针对文本编辑器的话就好办了。
㈦ 在线笔试时,编写代码可以用自己的编译器吗
不可以,你是提交代码到服务端,在服务端编译并运行的,编译器是服务端自己的编译器。
㈧ 我自己编写了一个程序,但要求带有编译器,如何实现
自己写编译器啊,你可以去图书馆借本《龙书》《鲸书》《虎书》,通读。
然后用C\C++编写词法分析器、语法分析器、语义分析器、以及中间代码生成器
学习汇编语言,学会后,用C\C++和汇编编写目标代码生成器和代码优化器。
这样你就能成功编写一个编译器了。以你现在的水平,至少半年或者一年吧……
其实这玩意做出来可以当毕业设计了,并且可能还能拿优。
你确定你们老师是让你写个编译器?还是写个makefile...
㈨ 如何写一个简单的编译器
如果你想写一个简单的编译器,那么首先你要有写软件的才能,或者是你要会有变形软件这方面的技术。那么你就可以很简单的编写一个编译器。或者你可以叫我别人帮你写一个编译器
㈩ 易语言怎么制作编译器
易语言制作的软件不能编译出新的软件,你可以用易语言制作两个软件,用一个软件输出另一个来达到目的,目前易语言制作的软件生成器就是这个原理