【编程范式】汇编解释swap方法
2024-08-25 09:33:21
先要熟悉一些汇编的基本知识:
1.SP是什么?
SP是堆栈寄存器,在调用子程序时,都会用到,保存原来程序的环境使用,如各个寄存器的内容,最重要的是,调用返回时程序的运行指令地址,这是由调用时将返回地址压入堆栈,返回时取出并传给PC寄存器来实现的。给SP的初始化值的大小,显示了堆栈的存放位置和堆栈的大小,如果堆栈太小,会出现堆栈溢出的问题。(其内容为栈顶的偏移地址。)
2.PC是什么寄存器?
PC是16位程序计数器(Program Counter),它不属于特殊功能寄存器范畴,程序员不以像访问特殊功能寄存器那样来访问PC。PC是专门用于在CPU取指令期间寻址程序存储器。PC总是保存着下一条要执行的指令的16位地址。通常程序是顺序执行的,在一般情况下,当取出一个指令(更确切地说为一个指令字节)字节后,PC自动加1。如果在执行转移指令、子程序调用/返回指令或中断时,要把转向的地址赋给PC。
引用的汇编代码跟上面一模一样:
int x = 17;
int y= x;
int z = &y;
下面图阴影部分,就是
int *z = &y;
X | |
Y | |
Z////////////////////////////////////////////// | 指向Y这个地址 |
最新文章
- Redis学习手册(目录)
- 谁让APP工程师产生了泡沫?
- Mac Pro 安装 Homebrew 软件包管理工具
- DataBase 之 表操作
- js点击弹出div层
- 04 - 替换vtkDataObject中的GetPipelineInformation 和GetExecutive 方法 VTK 6.0 迁移
- OpenGL ES 2.0 卷绕和背面剪裁
- py执行系统命令
- Javascript 查找元素
- jvm 线程实现机制
- Leetcode 494 Target Sum 动态规划 背包+滚动数据
- pyqt5 在qt designer后以弹窗的方式连接多个UI图形界面
- Nomad入门
- eclipse中不能保存汉字的解决方法
- JSON CSRF新姿势
- 将VSCode设置成中文语言环境
- 关于instanceof判断的条件
- Hadoop系列之(二):Hadoop集群部署
- css 如何使图片与文字在div中居中展示?
- 24.2 网络编程基础——System.Net 命名空间