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

宏与子程序的区别

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

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

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

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

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

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

标签: tenxTM87
分享给朋友:

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

Virtual Box Android X86安装:please check you have enough free disk space to install androd x86

原因:下载的iso有问题,换一个iso吧。 当然,前提是你分配的空间确实是足够的,默认8GB肯定是足够的。 我分配了8GB空间,在写入的时候,却提示: Installation failed:please check you have enough free disk space to...

Android x86 4.4 RC2卡在跳过Wifi后面一步

Android x86 4.4 RC2卡在跳过Wifi后面一步

问题:Android x86 4.4 RC2卡在跳过Wifi后面一步,没法跳过,一直死循环。 无论怎么改都在这步了, 返回了也不知道从哪可以跳过。   解决办法: 一、在语言选择界面用鼠标在 左上-右上-右下-左下 四个角各点一遍 这个方法不知道是谁试出来的,这么扯蛋的办法都能想到。 二...

Altium避开某些区域覆铜

Altium避开某些区域覆铜

覆铜的时候,有时候会有些地方不能覆铜。例如下图,如果想在A区域覆铜,而B区域不覆铜。该怎么办呢?? 网上有云: 1、B画keepout层,然后再覆铜,这样B就可避开覆铜。 2、B区域放置一个同等大小焊盘,然后覆铜。 以上方法均不怎么完美,重新覆铜的画有可能会影响覆铜的形状。 其实Altium已经自...

带锁存移位寄存器(verilog)

带锁存移位寄存器(verilog)

带锁存的移位寄存器 rclk——锁存时钟 sclk——移位时钟 din——输入数据 dout——输出数据 [shiftBitNumbers——移位寄存器位数 module shi...

PlatformIO串口无输出

PlatformIO串口无输出

问题:同样的串口打印代码,在Arduino IDE里可以正常输出,但是在PlatformIO里看不到任何输出硬件:ESP32-S3 Camera解决方法:This is because DTR and RTS both are connected to the RESET pin and GPIO...

金蝶 老单增加工具栏按钮(Raise Event)

Public Sub AddToolButton(name As String, Caption As String, Description As String, Optional imagefilename As String = '', Optional iOrder As Long = 47...

发表评论

访客

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