由于编译器将所有高级语言程序翻译成汇编语言,然后汇编程序将其转换为机器语言代码。
由于特定处理器只有一种特定的汇编语言,因此所有不同类型的高级语言代码最终都会转换为特定的汇编语言代码。
单处理器计算机中是否有一个汇编程序?
答案 0 :(得分:6)
由于编译器将所有高级语言程序翻译成汇编语言,然后汇编程序将其转换为机器语言代码。
这不一定正确。直接从高级语言到机器代码(即二进制表示)是完全可行和实用的。无需调用单独的应用程序。
因为特定处理器有一种特定的汇编语言
这不正确。对于特定处理器,只有一个指令集,但可能有多个汇编程序应用程序,每个都有自己的语法(参见例如http://en.wikipedia.org/wiki/X86_assembly_language#Syntax)。
答案 1 :(得分:3)
具有相同instruction set architecture的所有处理器使用相同的语言,并且它们都能理解来自同一汇编程序的代码。
因此,对于单处理器计算机,多核计算机或地球上的所有x86计算机,都有一个汇编程序。 (当然,可能有很多汇编器可供选择,但它们都转换为相同的二进制程序格式。)
汇编程序只是编译器的最后阶段之一。
单处理器计算机中是否有一个汇编程序?
汇编程序只是一个可以安装或删除的软件。除了软件开发导致本地二进制文件被分发之外,它不是必需的。
答案 2 :(得分:0)
通常编译器会编译成汇编程序,但有些情况并非总是如此,有些直接转到机器代码(tcc),有些则转到字节码(python,java),这需要虚拟机走到最后一英里。
有时您会发现只有一个汇编程序,但通常您会发现多个汇编程序。每个汇编程序都有一个原因,它只是使用现有汇编程序而创建的。有时会对汇编语言进行更改(gnu喜欢在为目标实现气体时搞乱汇编语言),有时差异是指令,不一定是机器代码的东西,或者输出格式,对象与准备就绪运行二进制等
通常,处理器发明者/供应商会发明一种汇编语言,并且通常会创建汇编程序,有时是编译器,或者至少创建一个现有的可重新定位的修改程序。有时收费很多/太多,有时会免费赠送。免费或付费编译器供应商和开源世界可能会选择继续做自己的事情。
但共同点是机器代码,而不是汇编语言,处理器理解的机器代码定义明确,无论编写程序的原始语言是什么。