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

宏与子程序的区别

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

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

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

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

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

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

标签: tenxTM87
分享给朋友:

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

OKI DSR警告解决

OKI DSR警告解决

使用OKI编译ML610Q473程序的时候,偶然发现编译器出了一堆warning,表面上看起来似乎不影响使用,但是看起来也是不爽。警告内容如下: 经查,所有的warning都与中断相关,所有的警告都在中断函数里产生的。 为什么中断函数会产生DSR警告呢? 这是因为在每次进入中断时,都会做push...

eclipse导入外部工程

eclipse导入外部工程

File -> Import -> Android...

IAR Error: Unknown or ambiguous symbol. main解决

IAR Error: Unknown or ambiguous symbol. main解决

网上下载了一个程序(含工程),打开一debug,提示:“Error (col 1): Unknown or ambiguous symbol. main”。经查:设置里没有生成debug information 解决办法: Project->C/C++Compiler-...

Excel如何直接用SQL语言进行数据查询

Excel如何直接用SQL语言进行数据查询

打开excel,点击数据选项卡,现有连接。 弹出的对话框,点击浏览更多按钮。 选择要打开的数据文件,点击打开。 点击选择需要具体调用的工作表,点击确定。 弹出的导入数据对话框,点击属性按钮。 弹出的连接属性对话框,选择定义选项卡。 在下方的命令文本框中输入需要的SQL查询语句,点击确定即...

WinClone更新了

WinClone,Mac下备份Windows系统的好软件。可以克隆BootCamp分区安装的Windows,也可以将克隆文件安装到BootCamp分区。 之前已经写过一篇WinClone备份还原Windows的简易教程:http://www.xjtudll.cn/Exp/171/ 基本上来说,使用还...

如何通过程序清除蓝牙缓存的设备名称?

http://stackoverflow.com/questions/10793761/how-to-programmatically-clear-the-bluetooth-name-cache-in-android 现象: 一个已经配对过的蓝牙设备,修改名称之后,手机上显示的依旧是以前的名称,并...

发表评论

访客

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