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

计算机基础知识-2

x86架构的寄存器

AT&T汇编和Intel汇编的区别

取出完一条指令,PC会自动+"1",指向下一条要被执行的指令。这里的1是指下一条指令,但是指令本身可能占用多个字节,所以地址可能不是以1叠加

当前执行的是108地址的指令,PC为112,但是108是无条件转移指令JMP,所以PC跳转导128地址的指令

选择语句的汇编代码

PSW程序状态子寄存器

循环可以使用jmp和cmp来实现,汇编给处了loop也可以实现

高级语言的函数调用,首先执行main函数,会创建main函数的栈帧用来保存一些局部变量和一些相关信息,在main函数中又调用了Q函数,同时也会创建Q函数的栈帧来保存Q函数的局部变量和别的信息,同理,随着更深层的函数调用,会一次次的创建函数栈帧放到栈顶,最栈顶的位置就是当前执行的函数,执行完毕后会出栈,继续执行。如图中的caller函数,其中的3个局部变量temp1,temp2,sum都保存在caller的栈帧中,之后调用add函数,会继续创建add函数的栈帧来执行add函数,执行完毕return后,出栈,栈顶指针会指向caller的栈顶,继续执行caller函数

在汇编语言中,使用call和ret实现了函数的调用和返回,这里以caller和add函数为例,call add指令时,跳转到add函数处执行,执行完毕后ret,返回到断点位置继续执行。

要保证过得去和回得来,也就是跳转过去和执行完毕后返回过来,本质就是改变pc程序计数器中的值进行跳转

这里放上push ebp的作用

http://www.lryc.cn/news/432092.html

相关文章:

  • Ubuntu2204配置连续失败后账户锁定
  • windows下安装elasticSearch和kibana
  • Java-IDEA模拟一个Redis服务器,与Redis客户端进行一次简单的交互。默认端口号:6379
  • WEB服务与虚拟主机/IIS中间件部署
  • JAVA开源项目 图书个性化推荐系统 计算机毕业设计
  • Spring Boot 注解探秘:HTTP 请求的魅力之旅
  • TYPE-C USB设计
  • Python炒股自动化,怎样理解股票交易性质
  • Vue2 day-02
  • 什么?!新版 Node.js V22.5 自带 SQLite 模块啦
  • Maven持续集成(Continuous integration,简称CI)版本友好管理
  • EvoSuite使用总结
  • Cortex-A7:简单中断处理(不可嵌套中断)机制
  • k8s HPA
  • 5G移动网络运维实验(训)室解决方案
  • 单片机学习笔记
  • SpringBoot中@Value获取值和@ConfigurationProperties获取值用法及比较
  • 执行任务赚积分
  • 使用TLS解决Docker API暴露2375端口的问题
  • Pyspark中catalog的作用与常用方法
  • 聚焦2024数博会|与天空卫士一起探索AI与数据安全的融合应用
  • 实战docker第二天——cuda11.8,pytorch基础环境docker打包
  • 企业数字化转型的利器:RFID资产管理系统
  • matplotlib中文乱码问题
  • 提高开发效率的实用工具库VueUse
  • 【数据结构】你真的学会了二叉树了吗,来做一做二叉树的算法题及选择题
  • 压力测试知识总结
  • @import导入样式以及scss变量应用与static目录
  • 分类中的语义一致性约束:助力模型优化
  • 前端框架介绍