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

kero77 2008-10-28 09:18:30
如题…… C++语言 编译的时候为什么不直接把高级语言的源代码直接编译成机器码,而中间要多一步汇编语言呢?
...全文
1328 14 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
这个。。。不了解。
第一章 概述………………………………………………………………………………1 第二章 仿真器硬件 仿真头介绍 POD8X5XP 仿真头… …………………………………………………………………5 POD196KB/KC 仿真头…………………………………………………………………6 PODH8X5X 仿真头 ……………………………………………………………………7 POD520P 仿真头………………………………………………………………………8 POD196MC/MD 仿真头…………………………………………………………………9 POD8051 仿真头………………………………………………………………………10 POD16C67XP 仿真头 …………………………………………………………………10 POD16C5XP 仿真头……………………………………………………………………11 PODLPC76X 仿真头……………………………………………………………………12 PODLPC93X 仿真头……………………………………………………………………12 POD87C52 仿真头 ……………………………………………………………………13 POD552 仿真头 ………………………………………………………………………13 仿真器介绍 仿真器介绍……………………………………………………………………………14 E6000L/E6000T/E6000S 型仿真器 …………………………………………………15 G6W 型仿真器…………………………………………………………………………16 K51L/K51T/K51S 型仿真器 …………………………………………………………17 H51L/H51T/H51S 型仿真器 …………………………………………………………17 LPC76X 型仿真器 ……………………………………………………………………17 LPC93X 型仿真器 ……………………………………………………………………17 P51 型仿真器…………………………………………………………………………18 PIC6000 型仿真器……………………………………………………………………18 第三章 软件安装 WINDOWS 版本软件安装………………………………………………………………19 编译器安装…………………………………………………………….…………………20 第四章 开发环境 菜单 | 文件………………………………………………………………………………21 菜单 | 编辑………………………………………………………………………………25 菜单 | 搜索………………………………………………………………………………25 菜单 | 项目………………………………………………………………………………26 菜单 | 执行………………………………………………………………………………26 菜单 | 窗口………………………………………………………………………………28 0 目录 0 伟福 目录 ii 南京伟福实业有限公司 ® 菜单 | 外设………………………………………………………………………………34 菜单 | 仿真器……………………………………………………………………………35 仿真器 | 仿真器设置………………………………………………………. ………35 语言设置………………………………….………………………………………35 目标文件设置…………………………………………….………………………36 仿真器设置………………………………………………………………….……36 通信设置……………………………………………………………………….…40 仿真器 | 跟踪器/逻辑分析仪设置 ………………………………………………40 仿真器 | 静态测试 …………………………………………………………………41 仿真器 | 设置文本编辑器 …………………………………………………………41 仿真器 | 设置汇编预定义符号 ……………………………………………………41 菜单 | 帮助………………………………………………………………………………41 快速入门 …………………………………………………………………………………42 伟福文本编辑器使用 ……………………………………………………………………48 PODH8X5X 使用说明……………………………………………………………………51 LPC 编程器使用 …………………………………………………………………………54 在Keil的uV2 集成环境中使用伟福仿真器……………………………………………57 如何用PODPIC67XP 仿真PIC16C711 芯片…………………
C语言课堂练习习题集及答案 《C语言程序设计》自主学习检验题汇编 第一、二章 C程序与算法 单项选择题 1. 将汇编语言编写的程序翻译成目标程序的程序是( ) A)解释 B)编译 C)汇编 D)目标 2. 不属于面向机器语言的是 ( ) A)符号语言 B)二进制语言 C)汇编语言 D)C语言 3. 将高级语言编写的程序翻译成目标程序的程序是()。 A)解释 B)编译 C)汇编 D)二进制 4. 不属于高级语言的是()。 A)BASIC B)C C)ALGOL D)符号语言 5. 程序段的基本结构中,不包含()。 A)函数结构 B)循环结构 C)顺序结构 D)分支结构 6、C语言源程序的最小单位是( )。 A、程序行 B、语句 C、函数 D、字符 7、以下说法正确的是( )。 A、 在C语言中,要调用的函数必须在main()函数中定义 B、 C语言程序总是从第一个定义的函数开始执行 C、 C语言程序中,main()函数必须放在程序的开始部分 D、 C语言程序总是从main()函数开始执行 8、以下对C语言描述中正确的是( )。 A、 C语言源程序中可以有重名的函数 B、 C语言源程序中要求每行只能书写一条语句 C、 C语言源程序中,注释可以出现在任何位置 D、 最小的C源程序中没有任何内容 9、对C语言源程序执行过程描述正确的是( )。 A、 从main() 函数开始执行,到main()函数结束 B、 从程序的第一个函数开始执行,到最后一个函数结束 C、 从main函数开始执行,到源程序的最后一个函数结束 D、 从第一个函数开始执行,到main函数结束。 …………………………

64,637

社区成员

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

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