当前位置:首页 » 编程软件 » c语言执行需要译码器和编译器吗

c语言执行需要译码器和编译器吗

发布时间: 2023-01-29 03:00:42

c语言运行需要什么环境

需要一台电脑和一个编译器,你就能用C语言编写程序了。wintc也行,vc6.0也行,vs2010也行,建议你用vs2010学习版。毕竟你初学,用旗舰版的还不会搞。

Ⅱ C语言和编译器的关系

c语言,只是一个程序设计语言。不是理论,不是思想,不是体系结构。只是语言。
C语言的语法不一致并不是编译器导致的。而是语言自然发展导致的。编译器只是支持某种标准的c语言。
并且c语言现在也有标准了,ansi c。不同语法的问题可以不用关心。因为你基本上接触不到另外一种语法。而且越新的编译器,支持越好。

Ⅲ C语言这么厉害,它自身又是用什么语言写的编写过程被称为自举

来自一个小白的提问: “C语言本身用什么语言写的?”

换个角度来问,其实是:C语言在运行之前,得编译才行,那C语言的编译器从哪里来?用什么语言来写的?如果是用C语言本身来写的,到底是先有蛋还是先有鸡?

我们假设世界上不存在任何编译器, 先从机器语言说起,看看怎么办。

机器语言可以直接被CPU执行,不需要编译器。

然后是汇编语言, 汇编语言虽然只是机器语言的助记符,但是也需要编译成机器语言才能执行,没办法只能用机器语言来写这第一个编译器了(以后就不用了)。

汇编语言的问题解决了,就往前迈进了一大步,这时候就可以用汇编语言去写C语言的编译器,我们说这是C编译器的老祖宗。

有了这个老祖宗,就可以编译任意的C语言程序了,那是不是可以用C语言本身写一个编译器?只要用老祖宗编译一下就可以了。

OK, 这么一层层上来,终于得到了一个用C语言写的编译器, 真是够麻烦的。

到这个时候,之前那个汇编写的C语言编译器就可以抛弃了。

当然,如果在C语言之前,已经出现了别的高级语言,例如Pascal,那就可以用Pascal来写一个C语言的编译器。

第一个Pascal的编译器据说使用Fortran写的。而作为第一个高级语言的Fortran,它的编译器应该是汇编语言写的。

关于编译器,这里边有个有趣的传说:

传说Unix 发明人之一的 Ken Thompson在贝尔实验室,大摇大摆的走到任何一台Unix机器前,输入自己的用户名和密码,就能以root的方式登录!

贝尔实验室人才济济,另外一些大牛发誓要把这个漏洞找出来,他们通读了Unix的C源码,终于找到了登录的后门, 清理后门以后编译Unix , 运行, 可是Thompson 还是能够登录进去。

有人觉得可能是编译器中有问题,在编译Unix的时候植入了后门, 于是他们又用C语言重新写了一个编译器,用新的编译器再次编译了Unix, 这下总算天下太平了吧。

可是仍然不管用, Thompson 依然可以用root登录,真是让人崩溃!

后来Thompson 本人解开了秘密,是第一个C 语言编译器有问题, 这个编译器在编译Unix源码的时候,当然会植入后门, 这还不够,更牛的是,如果你用C 语言写了一个新编译器,肯定也需要编译成二进制代码啊,用什么来编译,只有用Thompson写的那第一个编译器来编译,好了, 你写的这个编译器就会被污染了,你的编译器再去编译Unix , 也会植入后门 :-)

说到这里我就想起了几年前的XcodeGhost 事件,简单来说就是在Xcode(非官方渠道下载的)中植入了木马,这样XCode编译出的ios app都被污染了,这些app就可以被黑客利用做非法之事。

虽然这个XCodeGhost和Thompson的后面相比差得远,但是提醒我们,下载软件的时候要走正规渠道,从官方网站下载,认准网站的HTTPS标准,甚至可以验证一下checksum。

可能有人问:我用汇编写一段Hello World都很麻烦,居然有人可以用它写复杂的编译器?这可能吗?

当然可能,在开发第一代Unix的时候,连C语言都没有, Ken Thompson 和 Dennis Ritchie 可是用汇编一行行把Unix敲出来的。 WPS第一版是求伯君用汇编写出来的, Turbo Pascal 的编译器也是Anders 用汇编写出来的,大神们的能力不是普通人能想象得到的。

对于编译器来说,还可以采用“滚雪球”的方式来开发:

还是以C语言为例,第一个版本可以先选择C语言的一个子集,例如只支持基本的数据类型,流程控制语句,函数调用...... 我们把这个子集称为C0。

然后用汇编语言写个编译器,只搞定这个语言的子集C0,这样写起来就容易不少。

C0这个语言可以工作了,然后我们扩展这个子集,例如添加struct,指针...... ,把新的语言称为C1。

那C1这个语言的编译器由谁来写? 自然是C0。

等到C1可以工作了,再次扩展语言特性,用C1写编译器,得到C2。

然后是C3, C4...... 最后得到完整的C语言。

这个过程被称为bootstraping , 中文叫做自举。

对于热爱编程的人来说,有一群一起学习一起解答的小伙伴很重要!

这里有一个 C/C++编程学习交流俱乐部 (群),私信我【01】进入!

还有编程学习文件(源码,零基础教程,项目实战教学视频),欢迎初学者和正在进阶中的小伙伴们!

Ⅳ 计算机能不能直接执行用C语言编写的源程序

不能。

C语言也属于高级语言的范畴,即人可以阅读。但是计算机不理解“如果”和“for”是什么意思,所以编译器需要把高级语言命令翻译成计算机可以理解的0和1指令,这样计算机就可以执行它们。

用高级语言编写的程序称为“源程序”。

用二进制代码表示的程序称为“目标程序”。

用汇编语言编写的程序称为汇编程序。

可执行文件是漂浮在操作系统存储空间中的二进制可执行文件。

它可以被加载到内存中,由操作系统加载和执行。

对于计算机本身,它只能接收和处理由0到1的代码组成的二进制指令和数据。

也就是说,计算机能够识别的程序就是“目标程序”。

计算可以直接执行的程序是可执行文件,即一个带有extension.exe的文件。

(4)c语言执行需要译码器和编译器吗扩展阅读:

程序运行

为了让计算机程序运行,计算机需要加载代码和数据。在电脑的底部,

这是通过将高级语言(如Java、C/c++、c#等)代码翻译成CPU能够理解并加载的机器语言来实现的。

如果您的计算机满足大多数需求,操作系统(如Windows、Linux等)会加载和执行很多程序

序列,其中每个程序是一个单独的映射,并不是所有的可执行程序在计算机上。

它是一系列编码指令,可以由信息处理设备(如计算机)执行,以获得结果

它可以自动转换成符号化指令序列或符号化语句序列的编码指令序列。同样的计算机程序

源程序和目标程序是相同的工作。

Ⅳ 什么是c编译器有什么用,可以用它来写C语言吗

c编译器就是把你写的c语言程序转换成机器能理解及执行的代码

Ⅵ c语言为何需要编译和连接才能运行

的文件(也称为源代码)而已,需要经过1定的处理才能转换成机器上可运行的可履行文件。
我们将对C语言的这类处理进程称为编译与链接。

Ⅶ C语言编写好代码后,怎么编译,最后生成可执行文件

材料/工具:vc6.0

1、打开c语言编辑工具,在工具中写入程序的源代码。

Ⅷ 用C语言编程时需不需要编译器

需要。要不.c文件不可能运行。许多C开发工具都带了编译器了,如TuboC什么的,不是有编译的按钮吗

Ⅸ maplab用C语言编写程序需要C编译器那么mplab如果用汇编语言编写还需要编译器吗

C语言与汇编语言都是高级语言,都需要经过编译器编译为机器语言。常用的C编译器有有CCS,HITECH,picc18,picc30等。另外汇编编译器mplab已经绑定安装了不需要另外安装。

—————————来自Just_Engineer的解答,希望可以帮到你。————————————

Ⅹ C语言的源程序必须通过什么和什么才能被计算机执行

编译和链接。

每一个C语言程序必须要经过编译和链接才能被计算机执行,编译是将C源码翻译成机器码,链接是将将二进制目标文件装配成一个具有特定格式的二进制可执行文件,比如Windows平台上是PE格式,一般以.exe为扩展名。

一个C语言程序从源码到计算机系统可以执行,更细致的划分为:预处理——编译——汇编——链接。预处理是对C语言源码进行文本处理,编译阶断是将C源码经C编译器生成汇编代码,汇编阶断是将汇编代码经汇编器生成二进制机器码文件。这两个合拢起来,笼统的可以叫做编译阶断。

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:710
制作脚本网站 发布:2025-10-20 08:17:34 浏览:973
python中的init方法 发布:2025-10-20 08:17:33 浏览:684
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:836
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:742
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1083
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:313
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:193
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:881
python股票数据获取 发布:2025-10-20 07:39:44 浏览:839