所有的编程语言最后会编译成C,再编译成汇编,最后落实到硬件操作上吗?

解释型的不编译直接运行

编译型也不用编译成C,直接编译成机器代码运行就行

还有像JAVA,C#这种编译成中间语言,用虚拟机运行


这取决于用什么编译器


并不需要编译成C,但最终都是编译成机器码,即ISA指令集,由ISA操控CPU,而CPU控制着计算机的所有硬件。


所有的编程语言都会被编译成机器代码(0和1)执行,C语言也一样,至于在转化成机器代码前会不会还有中间代码,取决于你的源代码是用什么语言。

VB.net、C#.net等.net系语言会先被编译成IL(IntermediateLanguage),然后才被转换成机器代码。

Java会先被编译成Bytecode,然后才转成机器代码。

在StackoverFlow和Quora上确实有人提议将其他高级语言先编译成C,然后再转机器代码,也有人讨论这样做的利弊,不过我们常见的高级编程语言并没有先编译成C的步骤。


没听说过什么语言先编译成c的


不会编译成c,都是编译成硬件语言,就是二进制码。汇编在某种程度上可以看成是机器语言的一种更容易阅读的表达方式。


你可以这么理解,电脑的系统有这么一个接口,这个接口只认得0与1一连串的组合,但是0与1组合成的串很难记,因此为了便于人们记忆,于是有人为这个接口开发了一个软件,C编绎器,假如原来的接口输入0101代表加法,C编绎器规定+号就代表0101,这样是不是省事了好多


反了,是C编译成汇编语言。C比汇编高一级


那咋可能呢,源代码变为可执行代码基本分两种,一种叫解释执行,类似于同声传译,一种叫编译执行,类似于翻译,两种各有利弊,有的语言结合两种方式的特点,比如java等使用虚拟机的语言,编译之后生成的是虚拟机指令,然后由虚拟机再解释成宿主机指令执行。


不需要。从语言本身,各种编程语言并无层级高低之分,所谓高级语言低级语言不是本身层级的差异。编译器都是会直接编译成“机器语言”(二进制数据)。


不是所有的编程语言都这样,但有些编程语言本身就是基于C语言进行开发出来的,这些语言一般会采用C语言解释器,先编译成C语言,然后最后编译为机器语言。这个过程有些是自动的,有些是人工的。


现在的高级语言全部都不会编译成C(编译这个词用在这本身就不对)

都有自己的编译环境、规则,按照目标运行环境生成不同的可执行文件


不会编译成C,直接到汇编


不是所有编程语言都编译成c语言,编译成汇编也不是必须的方式,每个语言都有自己的编译器。只有极少数以c语言为中间介质进行。计算机也不会以汇编为执行代码,大部分还是需要机器码进行执行的。也有一些语言是使用虚拟机作为中间介质处理程序和cpu之间的交互,java就是这种情况。

其实揭开现象看本质,所有机器执行的指令都是在cpu的寄存器中运行。高级语言使用类,c语言就是使用内部的函数,汇编是直接操作,他们最后都会和寄存器打交道。排队往里送东西,排队取东西。这就是计算机的计算过程,由于cpu计算频率很快才使得这样的过程让人没有感到。

大家如果有兴趣可以自己用一下单片机或者stm32。特别是stm32的两种方式(设置寄存器和使用sdk)编程后更能加深对计算机编程思想的认识。


不同的语言编译的结果不同,有的编译成中间语言再解释执行,也有的干脆就不编译直接k解释执行。懒得细说了,自己去了解。


不知道经不经过C但终点是机器01


编程语言生成机械码是必须的,却未必需要汇编或者C语言做中间过程。


为啥要先编译到c直接编译到指令不香吗?


编译成C?这是什么操作?


我给总结吧!很多人都说对了!绝大部分语言都是由一个所谓解释器,直接到机器语言。只是大多是按照c语言的习惯规范的,只是错觉而已。举例:玩单片机的时候,使用c和汇编。都能生成代码!大小不一样。


原始地址:/changshi/802.html