全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 处理器/DSP >

上下文切换与栈寄存器变化

时间:2023-09-20 15:46

人气:

作者:admin

标签: 切换  上下文  寄存器     

导读:CPU执行call指令时,进行两步操作...

call指令

CPU执行call指令时,进行两步操作:

(1)将当前的IP或CS和IP压入栈中;

(2)转移。

即:

(1)(sp) = (sp)-2

((ss)*16 +(sp)) = (IP)

(2)(IP) = (IP)+16位位移。

16位位移=“标号”处的地址-call指令后的第一个字节的地址

ret和retf指令

ret指令用栈中的数据,修改IP的内容,从而实现近转移;

retf指令用栈中的数据,修改CS和IP的内容,从而实现远转移。

CPU执行ret指令时,进行下面的两步操作:

(1)(IP) = ((ss)*16 +(sp))

(2)(sp) = (sp)+2

CPU执行retf指令时,进行下面四步操作:

(1)(IP) = ((ss)*16) + (sp)

(2)(sp) = (sp) + 2

(3)(CS) = ((ss)*16) + (sp)

(4)(sp) = (sp) + 2

中断过程的上下文切换:

图片

在进程切换时,一个进程存储在处理器寄存器中的中间数据叫做进程的上下文。在进程未占用处理器时,进程的上下文是存储在进程的私有堆栈中的。

图片

关于寄存器

64位环境中用rip rsp rbp表示

32位环境用eip esp ebp 表示

CS是代码段寄存器

IP是指令指针寄存器(相当于偏移地址)

SS:存放栈的段地址;

SP:堆栈寄存器SP(stack pointer)存放栈的偏移地址;

BP: 基数指针寄存器BP(base pointer),存储堆栈基地址。

SP,BP一般与段寄存器SS 联用,以确定堆栈寄存器中某一单元的地址。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信