1.3.4 寄存器
寄存器是用于特殊目的的、规模小但速度快的存储器,可以被内核直接存取。寄存器是易失的(volatile)。当程序退出时,程序在寄存器中用于任何意图和目的的任何数据或指令都会消失。与交换内存、虚拟内存不同,这些内存是持久的,因为保存在某种二级存储器中,而寄存器是暂时的。寄存器中的数据只在系统加电或程序运行期间保持。在通用计算机中,寄存器位于处理器内部,因为几乎为零延迟。表1-2包含了多数通用处理器中的寄存器的常见类型。
表1-2
|
寄 存 器< xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> |
描 述 |
|
Index |
在通用计算中以及处理地址的特殊用法中使用 |
|
Segment |
用于保存地址的段部分 |
|
IP |
用于保存下一条要执行的指令的地址偏移部分 |
|
Counter |
用于循环结构,但也可用于通用计算用途 |
|
Base |
用于地址的计算和存放 |
|
Data |
用作通用寄存器,而且可用于临时存储和计算 |
|
Flag |
显示计算机状态或处理器状态 |
|
Floating point |
用于计算和移动浮点数 |
器选项外,C++(www.cppentry.com)还有asm{ }指示符,它允许在C++(www.cppentry.com)的过程或函数中写入汇编语言,例如:
- void my_fast_calculation(void)
- {
- ...
- asm{
- ...
- mov 2 , %r3
- inc(%r3)
- ...
- }
- ...
- }
my_fast_calculation( )将2加载到UltraSparc处理器的%r3通用寄存器中。尽管对于C++(www.cppentry.com),cache不是轻易可见的,但是寄存器和RAM是可见的。根据开发的多处理器软件的类型,无论是通过编译器还是通过C++(www.cppentry.com) asm{ }指示符,对寄存器的操纵是必要的。