鱼C论坛

 找回密码
 立即注册
查看: 1823|回复: 6

[已解决]计算机识别高级语言为什么是逐层编译?

[复制链接]
发表于 2022-4-30 15:49:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
C语言是高级语言,小甲鱼老师说是计算机要看得懂C语言,得先把C语言编译成汇编语言,在把汇编语言编译成机器码,那这样是不是相当于翻译了两次,那机器为什么不一步到位,直接把C语言编译成机器码呢
最佳答案
2022-4-30 19:54:39
竹逸 发表于 2022-4-30 18:13
不同类型的机器其CPU架构不一样,所以每一种机器都有自己独有的指令集,写出来的汇编指令及其生成机器码 ...

对,所以要分开
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-4-30 16:02:05 | 显示全部楼层
我可不可以这样认为,无论是用汇编语言还是高级语言写的程序,其最终都将被翻译成机器码来让机器执行,用高级语言翻译成的机器码 和 用汇编语言翻译成的机器码没有任何区别,有区别的是编译的过程,汇编语言只需要编译一次,,高级语言需要编译两次,只是在编译效率耗时上存在区别
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-30 17:21:41 | 显示全部楼层
直接把C语言编译成机器码
编译成哪个机器的机器码?
i386的还是x86_64的?
arm的还是riscv的?
stc89c52rc的还是STM32F407ZGT6 ?
编译成哪个的?
一个机器写一个C语言编译器?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-30 17:24:51 | 显示全部楼层
C语言的词法分析、语法分析、语义分析、中间代码生成,中间代码优化,这部分是和机器无关的,为什么要在每一个机器上都写一遍这些东西?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-30 18:13:54 | 显示全部楼层
人造人 发表于 2022-4-30 17:21
直接把C语言编译成机器码
编译成哪个机器的机器码?
i386的还是x86_64的?

不同类型的机器其CPU架构不一样,所以每一种机器都有自己独有的指令集,写出来的汇编指令及其生成机器码也只能被自己识别,其他类型的机器无法识别,而高级语言能够移植是在源代码层面移植,在编译和执行上则需要经过自己的指令集来翻译成自己能识别的机器码,是这个意思吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-30 19:54:39 | 显示全部楼层    本楼为最佳答案   
竹逸 发表于 2022-4-30 18:13
不同类型的机器其CPU架构不一样,所以每一种机器都有自己独有的指令集,写出来的汇编指令及其生成机器码 ...

对,所以要分开
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-30 20:23:47 | 显示全部楼层

好的,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-28 11:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表