寄存器使用惯例
来源:互联网 发布:淘宝网商城女鞋tata 编辑:程序博客网 时间:2024/05/21 10:46
在给定的时刻只能有一个过程是活动的, 它占使用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在使用这个寄存器之前, 必须保存这个值, 并在返回前恢复它.
在这两种情况中, 保存就是将寄存器的值压入栈中, 而恢复是指从栈中弹出到寄存器中.
<深入理解计算机系统>
- 寄存器使用惯例
- IA32寄存器使用惯例
- X86 通用寄存器使用惯例
- 寄存器使用惯例 读深入理解计算机系统
- 寄存器的使用惯例和调用过程的栈
- 寄存器用法惯例
- 惯例
- 寄存器使用
- C++中关于const的一些使用惯例
- ATPCS 寄存器使用规则
- FS 寄存器使用
- 寄存器的使用规则
- vim寄存器的使用
- x64 寄存器使用
- vim寄存器的使用
- 寄存器变量的使用
- Vim 使用寄存器
- 汇编语言---使用寄存器
- 关于computer vision的会议及vision guys-机器学习与视觉大牛族谱深度挖掘
- MIT牛人解说数学体系 Ⅰ
- Windows Phone 7 如何禁用WebBrowser 控件缩放和左右移动
- Reachability的网络连接的设置
- BNUOJ 14362 Election Time
- 寄存器使用惯例
- Windows Phone WebBrowser的技巧
- MIT牛人解说数学体系Ⅱ
- 关于 SQL Server ErrorLog 错误日志
- Learning和Vision中的小进展和大进展(转载MIT牛人林达华)
- 2013第一习惯
- 有关林达华的几个地址
- JavaScript————基础1
- snoopy(强大的PHP采集类) 实例应用