为什么高级语言要先编译成汇编语言……

kero77 2008-10-28 09:18:30
如题…… C++语言 编译的时候为什么不直接把高级语言的源代码直接编译成机器码,而中间要多一步汇编语言呢?
...全文
1427 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
kero77 2008-10-28
  • 打赏
  • 举报
回复
结贴 给你分 …… 呵呵谢谢
Rainstorey 2008-10-28
  • 打赏
  • 举报
回复
拿典型的C++编译器来说 前端(语法检查+词法分析+代码生成(汇编语言)+优化器)+(Windows汇编器,Linux汇编器,HPC汇编器...)(生成平台相关的机器码)
这就是所谓的C++是跨平台的编译器,因为他有很多平台上的后端。共享前端。一套代码到处编译。
Java因为是混合型(编译+执行)于此类似,一套代码到处运行。OK?
kero77 2008-10-28
  • 打赏
  • 举报
回复
有没有 什么资料 可以推荐一下 让我看看 你说的 那写具体内容
kero77 2008-10-28
  • 打赏
  • 举报
回复
有没有 什么资料 可以推荐一下 让我看看 你说的 那写具体内容
zhuwanglove 2008-10-28
  • 打赏
  • 举报
回复
先译成汇编,可对其进行代码优化,提高速度等.并且可以分工处理,除低难度.
kero77 2008-10-28
  • 打赏
  • 举报
回复
楼上说的 机器码不同 什么意思啊? 应该是不同的操作系统理解机器码不同吧!
汇编器屏蔽了机器的差异 是什么意思
Rainstorey 2008-10-28
  • 打赏
  • 举报
回复
某些语言是一步到位的(高级语言-》二进制可执行程序)。但大多数是翻译成汇编语言后再编译成二进制码。这些编译器都分前端和后端。设计优良的后端可以给任何语言使用。比如Intel的后端就BC++和VC++再使用。这样设计可以大大简化编译器设计的难度,同时又可让设计者或高级用户观察编译器生成代码的质量。
kero77 2008-10-28
  • 打赏
  • 举报
回复
是从高级语言直接到机器码语言的编译 只是 难度上的问题吗?……
开心爸爸84 2008-10-28
  • 打赏
  • 举报
回复
因为每个机器码都不同,要做个编译器,那得做很多个机器的版本,不累死才怪呢,汇编器屏蔽了机器的差异而已
yshuise 2008-10-28
  • 打赏
  • 举报
回复
因为翻译汇编代码相对来说更简单。翻译成机器码,工作非常之繁琐,不知道汇编翻译成机器码的人用了多大的功夫啊?
帅得不敢出门 2008-10-28
  • 打赏
  • 举报
回复
已经有汇编到机器代码的转换程序了
为何不利用

直接把高级语言的源代码直接编译成机器码的话那要做高级语言到机器码之间的映射,你觉得容易实现么?
每个写编译器的都必须熟练机器码 这个不是在做重复劳动么
zlcs8921 2008-10-28
  • 打赏
  • 举报
回复
因为机器已经认识汇编语言了。
三文鱼也会飞 2008-10-28
  • 打赏
  • 举报
回复
由于汇编语言只是机器语言的符号化,虽说相对简单了,但是还是得要求人们学习相应的内部结构,对于复杂的内部结构,有很大一部分人还是无从着手的.所以就出现了高级语言,当程序员用高级语言指令写完源程序后,只需用编译器编译就可运行了.此时编译器所做的工作就是把高级语言指令翻译成汇编语言(机器语言).
yeah920 2008-10-28
  • 打赏
  • 举报
回复
这个。。。不了解。

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧