【汇编】汇编编程中的指令传参方式

1. 指令传参方式

汇编指令传参有2种方式。

第一种是常见的 操作数传参,如:

复制代码
move ax, bx

第二种是,绑定寄存器传参。有的指令在调用时,虽然不需要操作数,但是它会默认使用某几个寄存器,调用时需要提前将寄存器填好参数值。这类指令有:

复制代码
int 中断指令
rep指令
jnc,jac等条件跳转指令

等等

对于汇编指令来说,一条汇编指令的输入参数的类型和个数都是固定的,而且参数个数很少,所以不需要访问主存,这是CPU厂家设计CPU时,就设计好的。

2. 函数传参方式

汇编函数传参方式有2种。

第一种是寄存器传参。在子函数参数量少,且参数类型通常为整型的情况下,一般使用寄存器传参。而且这种方式下调用子过程,有时候用jmp跳转,有时候用call。各种传参方式,子函数需要约定用哪几寄存器,父函数需要遵循子函数的要求,在调用子函数前,将参数写入到对应的寄存器。这种方式优点是简单,效率高。

但是如果参数多怎么办?传结构体怎么办?用第二种传参方式。

第二种是栈传参,通过入栈出栈的方式传参,高级语言通常采用这种方式传参,汇编中也有。这种方式需要访问主存,对效率有一定影响。优点是比较灵活,而且可以传递各种各样类型的参数(可以是对象,结构体等),参数个数比较自由,不受CPU寄存器长度和个数限制。

3. 结语

总之,汇编编程,能用寄存器就用寄存器,寄存器不够用,或者不方便用了,就用栈传参。

相关推荐
small_wh1te_coder6 天前
GCC深度剖析:从编译原理到嵌入式底层实战
汇编·c++·面试·嵌入式·状态模式·c
白书宇7 天前
5.从零开始写LINUX内核--从实模式到保护模式的过渡实现
linux·汇编·数据库·开源
浩浩测试一下7 天前
02高级语言逻辑结构到汇编语言之逻辑结构转换 if (...) {...} else {...} 结构
汇编·数据结构·数据库·redis·安全·网络安全·缓存
蚰蜒螟8 天前
JVM安全点轮询汇编函数解析
汇编·jvm·安全
要记得喝水12 天前
汇编中常用寄存器介绍
开发语言·汇编·windows·c#·.net
技术领导力14 天前
华为开源CANN,再次释放“昇腾转向”信号
汇编
DONG91318 天前
Python 中的可迭代、迭代器与生成器——从协议到实现再到最佳实践
开发语言·汇编·数据结构·python·算法·青少年编程·排序算法
embrace9921 天前
【C语言学习】scanf函数
c语言·开发语言·汇编·学习·青少年编程·c#·编辑器
麦兜*21 天前
【算法】十大排序算法超深度解析,从数学原理到汇编级优化,涵盖 15个核心维度
java·汇编·jvm·算法·spring cloud·ai·排序算法
会掉头发22 天前
x86_64汇编
汇编