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

时间:2022-02-16 01:27:26
如题…… C++语言 编译的时候为什么不直接把高级语言的源代码直接编译成机器码,而中间要多一步汇编语言呢?

14 个解决方案

#1


这个。。。不了解。

#2


由于汇编语言只是机器语言的符号化,虽说相对简单了,但是还是得要求人们学习相应的内部结构,对于复杂的内部结构,有很大一部分人还是无从着手的.所以就出现了高级语言,当程序员用高级语言指令写完源程序后,只需用编译器编译就可运行了.此时编译器所做的工作就是把高级语言指令翻译成汇编语言(机器语言).

#3


因为机器已经认识汇编语言了。

#4


已经有汇编到机器代码的转换程序了
为何不利用

直接把高级语言的源代码直接编译成机器码的话那要做高级语言到机器码之间的映射,你觉得容易实现么?
每个写编译器的都必须熟练机器码  这个不是在做重复劳动么

#5


因为翻译汇编代码相对来说更简单。翻译成机器码,工作非常之繁琐,不知道汇编翻译成机器码的人用了多大的功夫啊?

#6


因为每个机器码都不同,要做个编译器,那得做很多个机器的版本,不累死才怪呢,汇编器屏蔽了机器的差异而已

#7


是从高级语言直接到机器码语言的编译 只是 难度上的问题吗?……

#8


某些语言是一步到位的(高级语言-》二进制可执行程序)。但大多数是翻译成汇编语言后再编译成二进制码。这些编译器都分前端和后端。设计优良的后端可以给任何语言使用。比如Intel的后端就BC++和VC++再使用。这样设计可以大大简化编译器设计的难度,同时又可让设计者或高级用户观察编译器生成代码的质量。

#9


楼上说的 机器码不同 什么意思啊? 应该是不同的操作系统理解机器码不同吧! 
汇编器屏蔽了机器的差异 是什么意思 

#10


先译成汇编,可对其进行代码优化,提高速度等.并且可以分工处理,除低难度.

#11


有没有 什么资料 可以推荐一下 让我看看 你说的 那写具体内容

#12


有没有 什么资料 可以推荐一下 让我看看 你说的 那写具体内容

#13


拿典型的C++编译器来说 前端(语法检查+词法分析+代码生成(汇编语言)+优化器)+(Windows汇编器,Linux汇编器,HPC汇编器...)(生成平台相关的机器码)
这就是所谓的C++是跨平台的编译器,因为他有很多平台上的后端。共享前端。一套代码到处编译。
Java因为是混合型(编译+执行)于此类似,一套代码到处运行。OK?

#14


结贴 给你分 …… 呵呵谢谢 

#1


这个。。。不了解。

#2


由于汇编语言只是机器语言的符号化,虽说相对简单了,但是还是得要求人们学习相应的内部结构,对于复杂的内部结构,有很大一部分人还是无从着手的.所以就出现了高级语言,当程序员用高级语言指令写完源程序后,只需用编译器编译就可运行了.此时编译器所做的工作就是把高级语言指令翻译成汇编语言(机器语言).

#3


因为机器已经认识汇编语言了。

#4


已经有汇编到机器代码的转换程序了
为何不利用

直接把高级语言的源代码直接编译成机器码的话那要做高级语言到机器码之间的映射,你觉得容易实现么?
每个写编译器的都必须熟练机器码  这个不是在做重复劳动么

#5


因为翻译汇编代码相对来说更简单。翻译成机器码,工作非常之繁琐,不知道汇编翻译成机器码的人用了多大的功夫啊?

#6


因为每个机器码都不同,要做个编译器,那得做很多个机器的版本,不累死才怪呢,汇编器屏蔽了机器的差异而已

#7


是从高级语言直接到机器码语言的编译 只是 难度上的问题吗?……

#8


某些语言是一步到位的(高级语言-》二进制可执行程序)。但大多数是翻译成汇编语言后再编译成二进制码。这些编译器都分前端和后端。设计优良的后端可以给任何语言使用。比如Intel的后端就BC++和VC++再使用。这样设计可以大大简化编译器设计的难度,同时又可让设计者或高级用户观察编译器生成代码的质量。

#9


楼上说的 机器码不同 什么意思啊? 应该是不同的操作系统理解机器码不同吧! 
汇编器屏蔽了机器的差异 是什么意思 

#10


先译成汇编,可对其进行代码优化,提高速度等.并且可以分工处理,除低难度.

#11


有没有 什么资料 可以推荐一下 让我看看 你说的 那写具体内容

#12


有没有 什么资料 可以推荐一下 让我看看 你说的 那写具体内容

#13


拿典型的C++编译器来说 前端(语法检查+词法分析+代码生成(汇编语言)+优化器)+(Windows汇编器,Linux汇编器,HPC汇编器...)(生成平台相关的机器码)
这就是所谓的C++是跨平台的编译器,因为他有很多平台上的后端。共享前端。一套代码到处编译。
Java因为是混合型(编译+执行)于此类似,一套代码到处运行。OK?

#14


结贴 给你分 …… 呵呵谢谢