当前位置: 首页 > article >正文

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

1. 指令传参方式

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

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

move ax, bx

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

int 中断指令
rep指令
jnc,jac等条件跳转指令

等等

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

2. 函数传参方式

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

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

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

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

3. 结语

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


http://www.kler.cn/a/503369.html

相关文章:

  • 分多个AndroidManifest.xml来控制项目编译
  • 精通SCP命令:安全高效地进行文件传输
  • Realsense相机驱动安装及其ROS通讯配置——机器人抓取系统系列文章(四)
  • LabVIEW水位监控系统
  • 系统架构设计师考点—项目管理
  • java项目之在线文档管理系统源码(springboot+mysql+vue+文档)
  • 卡通风格渲染
  • 爬虫逆向学习(十五):Akamai 3.0反爬分析与sensor-data算法逆向经验
  • 基于微信小程序的游泳馆管理系统设计与实现(LW+源码+讲解)
  • 平滑算法 效果比较
  • Linux简介和环境搭建
  • 005__ubuntu终端说明、linux命令
  • 《重生到现代之从零开始的C++生活》—— 入门基础语法
  • 【算法】复制含有随机指针节点的链表
  • 源码安装httpd2.4
  • 【AI游戏】基于OpenAI打造自动生成剧情的 Python 游戏
  • 14.STM32F407ZGT6-SPI
  • 什么是 XSS(跨站脚本攻击)?
  • 理解STC15F2K60S2单片机的最小电路
  • 当comfyui-reactor-node 安装失败urllib.error.HTTPError: HTTP Error 403: Forbidden解决方法
  • 空指针:HttpSession异常,SpringBoot集成WebSocket
  • tmux 中鼠标滚动异常:^[[A和^[[B是什么以及如何解决
  • 51c~Pytorch~合集4
  • 【按钮防抖】el-button和普通按钮防抖,点击一次禁用一秒再恢复
  • 9分布式微服务架构
  • Windows安装HDC工具及鸿蒙手机开启HDC调试