当前位置:首页 > 技术心得 > 正文内容

宏与子程序的区别

xjtudll17年前 (2010-02-08)技术心得9020

宏和子程序都是为了简化源程序的编写,提高程序的可维护性,但是它们二者之间存在着以下本质的区别:
1、在源程序中,通过书写宏名来引用宏,而子程序是通过CALL指令来调用;
2、汇编程序对宏通过宏扩展来加入其定义体,宏引用多少次,就相应扩展多少次,所以,引用宏不会缩短目标程序;而子程序代码在目标程序中只出现一次,调用子程序是执行同一程序段,因此,目标程序也得到相应的简化;
3、宏引用时,参数是通过"实参"替换"形参"的方式来实现传递的,参数形式灵活多样,而子程序调用时,参数是通过寄存器、堆栈或约定存储单元进行传递的;
4、宏引用语句扩展后,目标程序中就不再有宏引用语句,运行时,不会有额外的时间开销,而子程序的调用在目标程序中仍存在,子程序的调用和返回均需要时间。

总之,当程序片段不长,速度是关键因素时,可采用宏来简化源程序,但当程序片段较长,存储空间是关键因素时,可采用子程序的方法来简化源程序和目标程序。

扫描二维码推送至手机访问。

版权声明:本文由鸟的天空发布,如需转载请注明出处。

本文链接:http://xjtudll.cn/Exp/41/

标签: tenxTM87
分享给朋友:

“宏与子程序的区别” 的相关文章

如何在Firefox上安装未通过验证的扩展

如何在Firefox上安装未通过验证的扩展

参考资料: http://www.cnblogs.com/pcat/p/6806340.html https://www.zhihu.com/question/47505319 xpi文件是Firefox浏览器的扩展文件,打开Firefox,把xpi文件...

无法嵌入互操作类型“*****.Class”,请改用适用的接口

无法嵌入互操作类型“*****.Class”,请改用适用的接口

引用某些类时,会提示无法嵌入互操作类型“*****.Class”。请改用适用的接口。 找到应用的类,点视图-->解决方案资源管理器,找到“嵌入互操作类型”选项,把true改为false就可以了,如下图所示。...

AutoCAD 2010两则小设置

AutoCAD 2010两则小设置

以前一直用AutoCAD2004,最近升级为AutoCAD2010,发现使用有些不同,尤其是一些设置,很难找到入口,所以也就不知从何设置。 一、AutoCAD2010更改图纸背景为黑色 AutoCAD2010默认图纸背景是白色,而之前大量的图纸都是在黑色背景下完成的。如果背景不更改为黑色,看起来很不...

mircrosoft project2010怎么设置任务级别,降级

mircrosoft project2010怎么设置任务级别,降级

参考资料: http://zhidao.baidu.com/link?url=hW3eTVmKLi2WzQM_jTfsCb2btmRnrmixR8tfFfiRn1YTtM6ylBBXMsnQHpEAUefawNdg-bTiFeXh9Of-U47Mma 两个方法: 1、任务菜单---计划列表---那两...

Android error:Duplicate ID, tag null, or parent id with another fragment(fragment嵌套问题)

参考资料:http://stackoverflow.com/questions/14083950/duplicate-id-tag-null-or-parent-id-with-another-fragment-for-com-google-androi 跟参考资料里的这个人一样,我也碰到了这个...

水晶报表的文本对象中怎么插入换行符

水晶报表的文本对象中如何插入换行符?我的文本对象要显示的值是从RichTextBox中读出来的,但文本对象不能显示“\n”,怎么让文本对象换行呢?------解决方案--------------------1:不要用文本对象,用公式2:把\n替换成水晶报表里的换行符号Replace(字段,'...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。