① 我想做一个C语言编译器……
没什么可不可取的,弄出来的话你的编程水平会有很大的提升,没弄出来也会,除非你一开始就放弃.
首先不建议你搞x86架构的,当然想挑战自己也行,因为x86架构的指令格式十分的操蛋.
建议写arm架构的编译器,因为指令结构简单,而且你学了之后做嵌入式方向很有用
工作量相当的大,给你说一下你要点的技能点吧
*数据结构(编程必修)
*编译原理(理论知识,没有他你没法下手)
*了解一种架构的汇编语言(不会的话你不知道怎么该让cpu去处理c的语句)
*了解你学的那种架构的汇编语言的指令格式(不翻译成机器指令cpu咋跑)
*了解一种可执行文件的格式(windows就搜PE文件的格式,linux就搜elf文件的格式,不把编译出来的东西组织成os能识别的格式咋运行)
*还有需要一定的英文阅读能力(因为有的资料没有中文)
还有一定要丢掉老掉牙的vc 6.0和tc,这俩家伙用来应付考试还行,用他来实际开发你就找虐吧.
② 正常编写的c语言程序编译器会自动进行针对特定指令集用汇编语言优化吗
这个要看你使用什么编译器了。查看编译器的帮助文档,它会告诉你它支持那些指令集,并且做哪些可能的优化。
不同的编译器,是不一样的。
补充:GCC 不太清楚,你连VC++的版本都不说。汗,VC6是不支持SSE的,需要安装VC6SP5。
VS2005 和 VS2008 都支持 SSE。对 SSE/MMX 指令集优化得最好的,还是 Intel 的 c++ 编译器。
对并行和高性能计算,Fortran 的优势比较大。特别是 Fortran2003 的新特征,为并行计算做了很多专门的设定。Intel 也有 Fortran 的编译器。
③ c++编译器都能编译C吗
可以的! 但是部分字符串方面需要转换,还有宏的定义等 C++编译器一般用VC6.0,就是Visual studio 2005 现在可能用2010了吧
④ C++编译器可以编译C程序吗
为什么不早说是VC++2010,用它编译C语言程序的方法如下:
File->New->Project
在打开的New Project对话框中最左侧一栏中选择Visual C++下面的CLR,之后在其右侧的区域中选择CLR Empty Application
并在下面的三个文本框中填入工程名称(Name),工程位置(Location)以及解决方案名称(Solution Name)
之后单击OK
然后可以解决方案浏览器中看到刚才新建的工程,右击工程名,选择Properties(属性),在打开的对话框中选择Configuration Properties(配置属性)下面的General(一般),然后将右边对话框中的Common Language Runtime Support(CLR支持)改为"No Common Language Runtime Support",然后点击确定退出
接下来右击工程中的Source Files,选择Add->New Item...,在打开的对话框中选择“C++ File(.cpp)",并在下方输入一个以.c结尾的文件名,之后点击Add,之后就可以在这个文件中加入C语言代码,按F5就可以调试运行了。
⑤ C语言编写好代码后,怎么编译,最后生成可执行文件
材料/工具:vc6.0
1、打开c语言编辑工具,在工具中写入程序的源代码。
⑥ 什么是c编译器有什么用,可以用它来写C语言吗
所谓c语言编译器,就是把编程得到的文件,比如.c,.h的文件,进行读取,并对内容进行分析,按照c语言的规则,将其转换成系统可以执行的二进制文件。
其本质在于对文件的读入,分析,及处理。这些操作,c语言都是可以实现的。
所以用c语言来做c语言的编译器是完全可行的。
但是,历史上的第一个c语言编译器,肯定不是c语言写的,因为在没有编译器时,无法把c语言转换成可执行文件。
只要有了第一版其它语言的编译器,就可以用c语言写编译器了。
事实上,目前大多数的c语言编译器,都是用c语言写的。
⑦ c++编译器都有什么,怎么可以用命令行编译c++,怎样学习c++,c++和vc++的区别是什么
c++的编译器常见的有 微软的, GCC(linux下最常用的,也有windows版本,叫mingw) 和 intel的(intel有不少好东西,对性能要求高的话可以考虑)
但是集成开发环境就多了 微软的 visual studio (VC6 VC2005 VC2008)系列,也可以把intel的编译器挂到VS下面,取代微软的编译器,dev-c++ 和 codeblocks 这两个用的都是用的GCC的编译器。
windows下 ,最好不用命令行编译很麻烦的,大一点的项目还要写makefile来管理,linux下 g++ -o file file.cc 然后 ./file 就能执行刚才的程序了
学C++ 多练 多写代码 找本好的参考书 比如 c++ primer ,教材随便找本就行了 网上可以下到电子书的
c++是一门语言 而VC++通常指的是微软为了开发windows下的图形界面程序,而给出的一些API函数,以及封装了这些API函数的MFC库,它们的语法是C++的语法。C++在linux下可以照常使用,但VC++到了linux下就没法用了,因为linux下没有MFC库,当然它也有自己的一些图形库
⑧ C++程序进行编译后会生成C语言代码还是汇编代码
不是汇编输出,更不是机器代码,而是链接器输出
当然不是机器代码,否则这个程序就可以在无操作系统环境下跑,或是在windows下编译出的exe能够在unix上跑,这当然是不对的。
(当然有直接生成机器码的编译器,不过不是我们常见的)
实际上编译出的程序是操作系统相关的,那是因为不同的操作系统的函数库是不相同的。编译器就是将程序与操作系统的函数库链接(比如屏幕的显示,键盘的输入等)。当然只会有少量机器码。
⑨ c语言的编译与处理器的指令集有关吗一定要CISC吗RISC可不可以
C语言只是用于描述问题和算法的一种语言,而在实际机器上真实运行的却是各处理器自己的机器指令。编译器的工作就是将C语言翻译为机器指令。对你的问题答复如下:1. C语言与指令系统没有关系,但是编译器翻译的指令与指令系统有关系;2.无论CISC还是RISC,编译器都可以将C语言翻译为对应的机器指令。
⑩ 相同的c语言代码,在不同的编译器,不同的操作系统上面生成的指令是不是不同的
不同的CPU生成的指令不一样、不同的编译器C语言实现方式不一样、不同的操作系统API不一样。使用C语言只能做到源代码级别的跨平台和跨编译器。