X86 通用寄存器使用惯例
来源:互联网 发布:交易平台软件 编辑:程序博客网 时间:2024/05/15 13:21
在多任务系统中,给定的时刻只能有一个过程是活动的, 它占使用CPU的程序寄存器组. 程序寄存器组作为一个单个资源被所有的函数过程共享. 所以, 我们必须保证: 一个过程(调用者)调用另一个(被调用者)时, 被调用者不会覆盖某个调用者稍后会使用到的寄存器的值.
为此, IA32(x86)采用了一组统一的寄存器使用惯例., 所有的过程调用都必须遵守, 包括程序库中的过程.
根据惯例, 寄存器%eax, %ecx, %edx被划分为由调用者保存的寄存器. 寄存器%ebx, %esi, %edi被划分为由被调用者保存的寄存器. 此外必须保持寄存器%ebp和%esp.
int P(){ int x = f(); /* Some computation */ Q(); return x;}
过程P希望它计算出来的x值在调用了Q之后仍然有效. 如果x放在一个调用者保存寄存器中, 而P(调用者)必须在调用Q之前保存这个值, 并在Q返回之后恢复该值.
如果x在一个被调用者保存寄存器中, Q(被调用者)想使用这个寄存器, 那么Q在使用这个寄存器之前, 必须保存这个值, 并在返回前恢复它.
在这两种情况中, 保存就是将寄存器的值压入栈中, 而恢复是指从栈中弹出到寄存器中.
0 0
- X86 通用寄存器使用惯例
- 寄存器使用惯例
- IA32寄存器使用惯例
- 80x86通用寄存器
- X86通用寄存器的名称
- X86汇编 通用寄存器总结
- 寄存器使用惯例 读深入理解计算机系统
- X86通用寄存器用途及寻址
- X86的通用寄存器简要说明
- 寄存器的使用惯例和调用过程的栈
- 寄存器用法惯例
- x86 寄存器
- x86寄存器
- x86寄存器
- 简明x86汇编语言教程(3)-使用寄存器
- 使用c语言打印x86寄存器
- 通用寄存器
- 通用寄存器
- How to install Nvidia drivers in Ubuntu 13.04
- Bloom Filter(布隆过滤器)
- Java 8怎么了之二:函数和原语
- ZOJ Problem Set - 3640
- 2.JS中的数据类型与变量
- X86 通用寄存器使用惯例
- 第十一周补充项目 3.1点直线类
- 资深编程专家:C++ STL编程轻松入门方法分享
- SHELL syntax error:unexpected end of file 提示错误
- Android MediaPlayer
- ScrollView和ViewPager滑动冲突的解决和整理
- NYOJ104 最大和
- 并查集
- 【Unity3D游戏开发】基于NGUI的表情图文混排解决方案 (二二)