❶ c语言编译器是用汇编语言写的吗
这个是肯定的。算法优化,首先是逻辑描述的精炼化。至于C,只是计算逻辑到计算机模式的一种映射,而汇编仅是利用特殊计算机指令的一个更深的藕荷。
不过有一点,C语言由于是计算逻辑到计算机模式的映射,所以不单单考虑算法本身,还肩负数据组织的实现。数据流动方式,数据组织方式,对计算性能的影响也很大。这要看是否和计算机组成原理相贴近。其实这块也是侧重逻辑的设计,而不是具体机器指令的实现,因此汇编是无能为力的。
不过在DSP等特殊CPU架构,C语言和编译器无法很好的将上述逻辑转换为机器指令,或者C本身的逻辑无法很好的贴近CPU的特性,那么还是得汇编。一个典型的例子就是如何使用DSP的并行指令(通常的矢量计算)和并发指令集,几个不同的指令(隶属不同处理单元)的同时执行。使用C语言无法描述清楚这些逻辑方式,而编译器又太水,则还是不得不用汇编。此时C语言仅能沦落到大的计算机组织特性的贴近,和整体框架,模块的设计上。细节方面无能为力了。
❷ C语言被编译后是汇编程序吗
当然不是,编译后是OBJ文件,连接后成立可执行代码,是二进制机器码了。
❸ C语言本身是用什么语言开发的汇编
如果问的是C语言编译器的话,第一个C语言的编译器应该是汇编开发的,但是以后就可以用C语言开发C语言编译器了,编译这东西并不存在想当然的“大鱼吃小鱼”的规则,用理论上用JAVA来开发C语言的编译器都是可以的,但是JAVA运行在JVM上而JVM又是C++开发的,绕了一圈,所以用JAVA这种虚拟机语言开发编译器不是一种好选择,据我所知JAVA的编译器JAVAC倒是用JAVA开发的。
在当下很多编译器包括C语言的编译器都用C或者C++或者C/C++混合开发了,连nasm汇编器都是用C/C++开发的,“编译器悖论”
现在90%的编译器都是用C/C++开发的,包括他们自己的编译器
❹ c语言是汇编语言的封装吗
不是,需要有特殊的编译程序将c语言翻译成汇编,然后将汇编再翻译成计算机可执行代码
❺ C语言属于汇编语言吗
两个不同的概念,C语言属于高级语言,里面的INC和LIB文件夹里面有很多API的封装,你可以很方便的调用不同的库函数。
汇编是底层的语言,是最接近机器语言的一种语言。执行效率非常高,所形成的文件大小很小。如果你够犀利,可以用汇编语言去调用C的函数库。
你可以下载masm32的编译器看看,里面的INC和LIB文件夹的内容和C都是一样的
不同的是,汇编只是将C语言里面的INC和LIB里面的内容用汇编语言翻译了一遍而已。
❻ C语言中高级语言通过编译器得到的是汇编语言吗
不是哦,编译得到的结果是二进制可执行文件,要得到汇编源码还需要对其进行反编译
❼ c语言是先翻译为汇编语言吗
通常所说的C语言编译过程是这样的:
先是预编译处理(带#符号的语句都在这个阶段完成处理,包括文件包含、宏定义展开、条件预编译、语法检错等等)->
再是编译阶段。就是将C语言按照合适的语句翻译成汇编语言。->
再就是汇编编译。
就是将上一步的汇编语言翻译成机器码,每个.c文件都得到相应的.obj(目标文件)->
接下来就是连接阶段啦。就是将整个工程的.obj文件以及库函数连接成最终的一个.bin(或者是.hex之类的)可执行文件。
放到合适的环境中,就可以执行这个文件啦。
❽ c语言是用什么语言编写的汇编吗
C语言源自Ken Thompson发明的B语言,而 B语言则源自BCPL语言。
1967年,剑桥大学的Martin Richards对CPL语言进行了简化,于是产生了BCPL(Basic Combined Programming Language)语言。
1972年,美国贝尔实验室的 D.M.Ritchie 在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。
(8)c语言编译后是汇编的吗扩展阅读
C语言编译器:
GCC,GNU组织开发的开源免费的编译器
MinGW,Windows操作系统下的GCC
Clang,开源的BSD协议的基于LLVM的编译器
Visual C++:: cl.exe,Microsoft VC++自带的编译器
C语言集成开发环境:
Code::Blocks,开源免费的C/C++ IDE
CodeLite,开源、跨平台的C/C++集成开发环境
Dev-C++,可移植的C/C++IDE
C-Free
Light Table
Visual Studio系列
❾ 实践,C语言是怎么变成汇编的
c语言未必会经历汇编语言这一环节,准确的说,c语言经历编译器(必须),链接器(某种程度上非必须)的处理,成为可执行代码(一般是二进制代码)。
而汇编也许是目前多数编译器提供的中间环节(vc,vs都提供在调试运行下使用反汇编的功能),因为对于汇编语言来说,进一步编译成机器语言的难度很低,只需查找有限的汇编指令对应的编码,如MOV,ADD等,具体编码与机器有关。
而你说的c语言变成汇编这一过程,正是编译器的核心工作,也是最为困难的。需要对你的程序(本质上是一个超长的字符串)做分割,词法分析,语法分析,最后翻译成汇编。