汇编语言的特点在于占用的空间小,运行的速度快,是面向机器的一种语言,在某些场合具有无可替代的作用。其不足之处在于较为高级的语言程序编写存在一定难度,在处理数据时这一点体现的更加明显。C++是一种高级语言,功能丰富,表达灵活,开发高效,在应用性方面要胜过汇编语言。但是在考虑到执行速度,占用空间的前提下,C++语言则不具有优势。
一、两种语言进行混合编程的时候主要有以下几个方面的约定。
C++与汇编语言进行编程的时候,首先要采用一致的调用协议,C++有三种调用协议。其次是入口及返回参数的确定,在C++中所有的调用都是32位的偏移地址。最后是要声明公用函数名与变量名。 C语言在调用汇编语言时标识符前要添加下划线,相互调用的时候,汇编语言中标识符要依照C++语言的习惯。 声明约定,对于需要调用的外部函数,变量都进行相应的说明,标识符是为了在其他模块可见。对于BP,DS,CS,SS,SP,在使用并改变其值时候,需要进行保护。两种程序的语言在存储模式方面要相同。存储模式相同就会产生兼容的调用及返回类型。 最后一点是传递参数的确定,压入最栈与实参数表参数的顺序是相反的。
二、混合编程的方法
两种语言进行混合编程的方式主要有两种,一种是在C++源程序中直接插入汇编语言代码,此种方式也被称之为潜入式汇编。另一种则是在程序中调用外部语言。 对于潜入式汇编而言,在C++源程序中需要的地方插入汇编指令,并在嵌入的汇编指令加上相应的关键字。C++中内嵌汇编语言,在VisualC++6.0操作的时候,嵌入汇编指令,需要使用关键字。其中在asm中的组汇编指令可以有标号,C++中的语句以及汇编指令也可以跳转,跳转位置是该组汇编指令中的标号或者是指令组之外的标号。那么,除此之外,asm所带的汇编指令调用的只能是无重载的全局C++函数,并且对函数的类型有一定的要求。以C++实现相同次数的减法为例,通过对两个程序的运算比较,采用嵌入式汇编的速度要比单纯的采用C++语句快,从时间上计算,前者与后者相比,能够节约百分之三十的时间。对于实用性较高的工业领域,以及存在大量计算的开发软件中,采用两种语言进行混合编程的方法可以大大提升程序运行时的速度。