社区
汇编语言
帖子详情
宏调用与过程调用的区别?
dapeng112200
2008-07-24 09:15:20
请问各位宏调用与过程调用的区别在哪,麻烦详细说清楚下。
...全文
1181
9
打赏
收藏
宏调用与过程调用的区别?
请问各位宏调用与过程调用的区别在哪,麻烦详细说清楚下。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
土豆
2008-07-24
打赏
举报
回复
宏调用在汇编的时候会在原地展开,就像C语言中的宏函数一样,其实就是同样的处理方式.他能够减少你源代码的长度,但对目标代码没有任何影响.同一个宏在不同地方调用,会在这样的地方都重复展开.
chtitaxie
2008-07-24
打赏
举报
回复
大体来说,宏调用与过程调用都可以减少代码的输入量...
其中,宏调用的语说的编译时会把各条指令从新放入到代码中去,没有减少原代码的长度.
而过程调用在编译时不会加入到原代码的调用处,
(相当于调用处有句转移指令到过程中,而过程中的最后也有一句转移指令返回),
也就使原代码长度相对减少了.
BAYNPU
2008-07-24
打赏
举报
回复
0、宏调用的格式同一般指令一样,在使用宏指令的位置写下宏名,后跟实体参数,如果有多个参数,应按形参顺序填入实参,也用逗号分隔,在汇编时,宏指令被汇编程序用对应的代码序列替代,称之为宏展开。
1、 过程说明伪指令PROTO语句中的各个项必须与相应过程定义伪指令PROC的各个项一致。使用PROTO伪指令声明过程之后,汇编系统将进行类型检测,才可以使用INVOKE调用过程。
与PROTO配合使用的过程调用伪指令是INVOKE,它的格式如下:INVOKE 过程名[,参数,...]
过程调用伪指令自动创建调用过程所需要的代码序列,调用前将参数压入堆栈、调用后平衡堆栈。其中“参数”表示通过堆栈将传递给过程的实在参数。
采用过程声明和过程调用伪指令后,汇编语言子程序间也可以象高级语言一样利用实、形参数结合传递参数。但实、形结合的实质还是用堆栈传递参数。
dapeng112200
2008-07-24
打赏
举报
回复
多谢大家,回答的差不多,我就平均给分了。
cnzdgs
2008-07-24
打赏
举报
回复
宏调用在编译时展开,把代码插入到宏出现的位置;过程调用时程序运行时控制转移到被调用的过程,执行完后返回继续执行后面的代码。
BMCRNET
2008-07-24
打赏
举报
回复
宏是替换
过程不是
wuyinggu
2008-07-24
打赏
举报
回复
区别:
1 宏调用:编译时在原地插入代码,每调用一次将会增加一份代码量,过程调用则是在运行时刻调用.函数调用过程就不必细说了,所有调用都是共享同一份代码.
2当然宏有宏的好处,省去压栈等处理,运行速度快.
mare
2008-07-24
打赏
举报
回复
宏是代码替代的意思,代码在预处理的时候,宏就已经展开了,对中间代码来说,宏被替代成普通的代码,只是写代码的时候方便而已,并不影响程序工作,也不影响执行效率。对单片机来说,如果宏错了,一般意味着编译器自己的语法判断出错,而很少是你的错。
调用过程是其实是移动指令指针,在调用一个过程的时候,首先要把当前所有有用的信息压栈(对大多数单片机来说,要你自己搞定,尤其是寄存器里的数据,还要你自己防止压栈的时候压爆数据区),然后把指令执行指针调到过程的首地址,执行完以后,再把指令执行指针调回调用位置,然后出栈(也就是恢复你调用前的所有有用数据)。调用过程明显是会降低程序效率的,而且还会为你制造出大量的堆栈错误和越界错误,但调用过程又是十分可信任的,尤其是宏老是出错的时候。
大大啊,见我打这么多只字,心地善良的话就施舍一点分数给我吧~~
^_^
homesos
2008-07-24
打赏
举报
回复
1.宏调用,就是将宏在使用宏的地方将宏内容展开,相当于字符串替代。
2.方法调用,需要进行栈操作,调用地址、参数、临时变量入栈、出栈,相应的寄存器都要发生变动。
游戏辅助从0到1-C++
调用
调用
游戏Lua脚本实现辅助
本课程分为三部分: 第一部分是讲述Lua的基础及C/C++与Lua联合编程的内容 第二部分讲述的是动态
调用
Lua游戏辅助的实现 第三部分讲的是静态
调用
Lua游戏辅助的实现 课程目前已经完成了第一部分的制作,第二...
何为
宏
调用
?
9.2
宏
定义 在C语言源程序中允许用一个标识符来表示一个字符串,称为“
宏
”。被定义为“
宏
”的标识符称为“
宏
名”。在编译预处理时,对程序中所有出现的“
宏
名”,都用
宏
定义中的字符串去代换,这称为“
宏
代换”或“
宏
展开”。
宏
定义是由源程序中的
宏
定义命令完成的。
宏
代换是由预处理程序自动完成的。 在C语言中,“
宏
”分为有参数和无参数两种。下面分别讨论这两种“
宏
”的定义和
调用
。 9.2.1 无参
宏
定
汇编小结7:
过程
与
宏
1、
过程
在被
调用
的时候只有一份程序副本出现,而
宏
在被
调用
的时候,每一次对
宏
的
调用
都会出现一次
宏
代码的副本 2、
过程
通常会保存和恢复寄存器的内容,而
宏
通常不会去保存和恢复寄存器的内容 3、
过程
倾向于节省内存空间,而
宏
倾向于节省运行时间 4、
调用
过程
的时候,使用call指令,后面跟着
过程
的名字;而
调用
宏
的时候,直接在opcode部分放置
宏
的名字即可 5、请注意一定要在
过程
中包括ret指令,但是...
VBA
调用
下拉列表里的子
过程
(
宏
调用
宏
)
VBA
宏
调用
子
过程
1. call
调用
2. application run
Win32汇编:
过程
与
宏
调用
在计算机领域,堆栈是一个不容忽视的概念,堆栈是一种后进先出(LIFO,Last-In,First-Out)的数据结构,这是因为最后压入堆栈的值总是最先被取出,而新数值在执行PUSH压栈时总是被加到堆栈的最顶端,数据也总是从堆栈的最顶端被取出,堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场.
汇编语言
21,458
社区成员
41,601
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章