-5

Since all the high level language program are translated into assembly language by the compiler and then the assembler convert it to the machine language code.
and since there is a single specific assembly language for specific processor, so all the different types of high level language code ultimately convert into that specific assembly language code.

so is there a single assembler in single processor computer?

4

3 回答 3

6

由于所有高级语言程序都由编译器翻译成汇编语言,然后汇编器将其转换为机器语言代码。

这不一定是正确的。直接从高级语言到机器代码(即二进制表示)是完全可能和实际的。无需调用单独的应用程序。

因为特定处理器有一个特定的汇编语言

这是不正确的。特定处理器有一个指令集,但可能有多个汇编程序应用程序,每个程序都有自己的语法(参见例如http://en.wikipedia.org/wiki/X86_assembly_language#Syntax)。

于 2012-06-03T12:00:24.980 回答
3

具有相同指令集架构的所有处理器都使用相同的语言,并且它们都可以理解来自相同汇编程序的代码。

因此,单处理器计算机、多核计算机或地球上所有 x86 计算机都有一个组装程序。(当然,可能有很多汇编程序可供选择,但它们都转换为相同的二进制程序格式。)

汇编器只是编译器的最后阶段之一。

那么单处理器计算机中有一个汇编程序吗?

汇编器只是一个可以安装或删除的软件。除了软件开发导致本地二进制文件被分发之外,这不是必需的。

于 2012-06-03T12:01:23.223 回答
0

通常编译器编译为汇编器,但并非总是如此,有些直接编译为机器代码(tcc),有些编译为字节码(python、java),这需要虚拟机完成最后一英里。

有时您只会找到一个汇编程序,但通常您会找到多对多的汇编程序。每个汇编器都有一个创建它的原因,而不是仅仅使用现有的。有时汇编语言会发生变化(gnu 喜欢在为目标实现 gas 时弄乱汇编语言),有时差异是指令,不一定是机器代码的东西,或者输出格式,对象 vs 就绪运行二进制文件等

通常,处理器发明者/供应商会发明一种汇编语言,并且为了兜售他们的产品,通常会创建一个汇编器,有时还会创建一个编译器,或者至少对现有的可重定向编译器进行修改。有时收费很多/太多,有时免费赠送。免费或付费的编译器供应商和开源世界可能仍然选择做自己的事情。

共同点虽然是机器代码,而不是汇编语言,但处理器理解的机器代码定义明确,与程序用什么原始语言编写无关。

于 2012-06-03T14:14:52.400 回答