【发布时间】:2016-06-16 20:27:34
【问题描述】:
所以我知道最基本的知识,编译器将源代码转换为汇编代码,汇编器将汇编代码转换为机器代码。但是我无法正确使用谷歌搜索,它们实际位于何处?
我假设编译器只是在硬盘上的某个位置,因为您可以从网上下载编译器并将它们用于各种编程语言。
汇编程序是位于硬盘驱动器上、内置在操作系统中还是在实际 CPU 中的某个位置?是否可以选择不同的汇编程序来使用,或者它们是否预装到硬件中?还有一种汇编语言是特定于编译器的,具体取决于汇编代码的来源,还是整个系统只有一个汇编器?
【问题讨论】:
-
编译器/汇编器本身就是软件,并且驻留在计算机上安装的任何位置。这也意味着您可以随心所欲地拥有每个人的数量。
-
不,它没有。例如您可以轻松地为运行 Android 的 ARM cpu 编译/汇编代码,同时在运行 Windows 的 Intel x86 cpu 上工作。编译器/汇编器实际上只是翻译程序。他们采用 X 语言(有时是 Y、Z、P、Q 等)编写代码,并以不同语言输出代码。例如gnu GCC 可以编译大量语言的代码,而不仅仅是 C 和 C++。
-
错误的看待它的方式 - 每个编译器都可以有一个汇编器。例如如果你使用微软的visual c++,你会得到一个MS编译器和汇编器,英特尔编译器同上,gcc同上等等。只要编译器和汇编器在文件格式上达成一致,你甚至不需要每个供应商都有一个,它们可以来自完全不同的供应商。
-
阅读assembly tag wiki,以及stackoverflow.com/questions/6463938/…。例如,所有 x86 CPU 都理解相同的机器语言;这就是使它们成为 x86 的原因。
-
感谢您的回复,有点开始明白了。因此,汇编器不是比编译器更特定于特定系统吗?因此,您可以为 x86 系统下载编译器/汇编程序包,汇编程序将能够将汇编程序转换为所有 x86 处理器的机器代码?
标签: assembly compilation