版权归原作者所有,如有侵权,请联系我们

[科普中国]-高阶组合语言

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

高阶组合语言(英语:High Level Assembler)是一种由Randall Hyde 发明的组合语言,它允许使用更高级的语言结构(类似高阶语言的语法)来帮助初学者和资深汇编语言开发者。 它完全支持高级数据类型和面向对象编程。 它使用松散的基于几种高级编程语言(HLL)的语法,如Pascal、Ada、Modula-2 和 C++,以允许创建可读的汇编语言程序,并允许 HLL 程序员尽可能快地学习自身。

起源和目标HLA 最初被设想为在大学一级教授汇编语言编程的工具,其目标是在学习汇编语言时尽可能快地利用学生现有的编程知识来加快速度。 大多数参加汇编语言编程课程的学生已经被引入到IF,WHILE,FOR等高级控制流程结构中。HLA 允许学生在课程开始时立即将这些已经掌握的编程知识应用到汇编语言编码中,从而使他们在学习如何编写这些控制结构的低级形式之前,掌握汇编语言中的其他更有优先级的主题。兰德尔海德的《汇编语言编程艺术》一书使用 HLA 来实现这一目的。1

为何“高阶”HLA v2.x汇编程序支持与常规的低级汇编程序相同的低级机器指令。不同的是,Intel x86处理器系列上的高级汇编程序,如MASM(Microsoft Macro Assembler)或TASM(Turbo Assembler),也支持如IF、WHILE等流程控制指令,以及更好的数据声明指令,如类似记录、联合甚至类的高级结构。

与大多数其他汇编工具不同,HLA 编译器包含一个标准库,其中包含数千个函数,过程和宏,可用于创建具有高级语言的完整应用程序。虽然汇编语言库不是新的,但包含大型标准化库的语言使程序员更有可能使用此类库代码,而不是简单地编写自己的库函数。

HLA 支持所有与其他 x86 汇编程序相同的低级机器指令。而且,HLA 的高级控制结构是基于 MASM 和 TASM 中发现的那些,它们中的类高级编程语言的特征要比 HLA 的出现早上几年。在HLA 中,通过忽略高级编程语言的控制结构,低层汇编代码可以像其他汇编程序一样容易编写。与像Pascal和C/C++这样的高级语言不同,HLA 不需要内联 asm 语句。在 HLA 中,类高级编程语言的特征能够通过平滑学习曲线为开始学习汇编语言的程序员提供学习帮助(假设他们在掌握低级指令集后将停止使用这些语句)。在实践中,许多有经验的程序员在掌握低级指令集后仍旧继续在HLA、MASM 和类高级编程语言的语句,但这通常是为了提高可读性。

使用 HLA 编写高级程序也是可能的,这避免了大量低级汇编语言编程的繁琐工作——这也是一些汇编语言程序员无视 HLA 的原因,因为它允许程序员这样做。但是,支持高级和低级编程使得任何语言的适用范围都有所扩大。如果一个人只做纯低级语言的编码工作,那是可能的。如果必须编写更多可读代码,那么更高级别的语句则变得可以考虑了。1

组合语言组合语言即汇编语言,是一种用于电子计算机、微处理器、微控制器,或其他可编程器件的低级语言。在不同的设备中,汇编语言对应着不同的机器语言指令集。一种汇编语言专用于某种计算机系统结构,而不像许多高级语言,可以在不同系统平台之间移植。

使用汇编语言编写的源代码,然后通过相应的汇编程序将它们转换成可执行的机器代码。这一过程被称为汇编过程。

汇编语言使用助记符(Mnemonics)来代替和表示特定低级机器语言的操作。特定的汇编目标指令集可能会包括特定的操作数。许多汇编程序可以识别代表地址和常量的标签(Label)和符号(Symbols),这样就可以用字符来代表操作数而无需采取写死的方式。普遍地说,每一种特定的汇编语言和其特定的机器语言指令集是一一对应的。

许多汇编程序为程序开发、汇编控制、辅助调试提供了额外的支持机制。有的汇编语言编写工具经常会提供宏,它们也被称为宏汇编器。

现在汇编语言已不像其他大多数的程序设计语言一样被广泛用于程序设计,在今天的实际应用中,它通常被应用在底层硬件操作和高要求的程序优化的场合。驱动程序、嵌入式操作系统和实时运行程序都会需要汇编语言。2

本词条内容贡献者为:

王沛 - 副教授、副研究员 - 中国科学院工程热物理研究所