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

宏与子程序的区别

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

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

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

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

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

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

标签: tenxTM87
分享给朋友:

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

浅析电波表——发射和接收原理

浅析电波表——发射和接收原理

一、发射的基本原理 授时信号的发射部分由原子钟、时间信号处理器、调制器、载波振荡器、激励级、强放级和发射天线组成。其工作原理是:原子钟作为时钟源,产生相对准确和稳定的时频标准,这个频率标准通过系统分频器得到实时的标准时间信息。如:年、月、日、时、分、秒、毫秒、微妙等时间信息,这些时间信息通过时间信息...

android禁止屏幕自动锁屏(或背光自动灭)

  Android开发过程中,一些程序在运行时,不希望手机自动锁屏,即保持系统的背景灯常亮,以防止程序执行时出现异常,实现起来很简单,只需要在创建Activity时,在onCreate()方法中,加入如下语句即可。   getWindow().addFlags(WindowMan...

Protel99SE系统设置

Protel99SE系统设置

工欲善其事,必先利其器。此言不谬。在用Protel99SE进行电子电路设计时,在软件系统默认环境下,设计数据库文件会出现对话框信息显示不全、文件占用存储空间太大等问题,并且在操作的过程中由于种种原因,往往出现工具栏不显示、文件保存不当或损坏等问题,然而在大多数情况下,绘图者(特别是初学者)不清楚如何...

谈谈BLE连接参数

在使用BLE过程中,BLE连接参数是一个比较容易忽略的地方,很多人从来不管这些连接参数,结果很容易出现以下几个问题: 1、设备功耗大; 2、与android系统手机或ios系统手机无法连接(尤其是ios系统); 3、连接后,串口使用较低波特率发送数据时,容易出现乱码; 这些问题...

用反相器和晶振做晶体振荡电路

用反相器和晶振做晶体振荡电路

采用下图所示电路可以实现方波时钟信号输出的功能: 电路分析: 时钟信号为CMOS电平输出,频率等于晶振的并联谐振频率。 (1) 74HC04在这里相当于一个有很大增益的放大器; (2) R2是反馈电阻,取值一般≥1MΩ,它可以使反相器在振荡初始时处于线性工作区,不可以省略,否则有...

ios app在 waiting for review时重新上传程序

ios app在 waiting for review时重新上传程序

参考资料:http://houcengceng.com/?p=43 问题: ios app后发现了一个急需修改的bug,怎么办?不可能等审核reject,那样纯粹是浪费时间。 解决办法: 点击details进入后在link点击binary details,进入之后点击右上角reject...

发表评论

访客

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