平台特定寄存器
本节中的表针对可在表达式中使用的 SPARC 体系结构、x86 体系结构和 AMD64 体系结构,列出了平台特定寄存器的名称。
SPARC 寄存器信息
下表列出了适用于 SPARC 体系结构的寄存器信息。
|
|
$g0 through $g7
|
全局寄存器
|
$o0 through $o7
|
“外部”寄存器
|
$l0 through $l7
|
“本地”寄存器
|
$i0 through $i7
|
“内部”寄存器
|
$fp
|
帧指针,等同于寄存器 $i6
|
$sp
|
堆栈指针,等同于寄存器 $o6
|
$y
|
Y 寄存器
|
$psr
|
处理器状态寄存器
|
$wim
|
窗口无效屏蔽寄存器
|
$tbr
|
捕获基址寄存器
|
$pc
|
程序计数器
|
$npc
|
下一程序计数器
|
$f0 through $f31
|
FPU “f” 寄存器
|
$fsr
|
FPU 状态寄存器
|
$fq
|
FPU 队列
|
|
浮点寄存器的 $f0f1 $f2f3 ... $f30f31 对被视为具有 C 双精度类型(通常 $fN 寄存器被视为 C 浮点类型)。这些对也称为 $d0 ... $d30。
以下四浮点寄存器可被视为具有 C 长双精度型,它们适用于 SPARC V9 硬件:
$q0 $q4 through $q60
以下寄存器对组合了两个寄存器的最低有效 32 位,可在 SPARC V8+ 硬件上使用:
$g0g1 through $g6g7
$o0o1 through $o6o7
SPARC V9 和 V8+ 硬件上另外还提供了以下这些寄存器:
$xg0 through $xg7
$xo0 through $xo7
$xfsr $tstate $gsr
$f32f33 $f34f35 through $f62f63 ($d32 ... $$d62)
有关 SPARC 寄存器和寻址的更多信息,请参见《SPARC Architecture Reference Manual》(《SPARC 体系结构参考手册》)和《SPARC Assembly Language Reference Manual》(《SPARC 汇编语言参考手册》)。
x86 寄存器信息
下表列出了适用于 x86 体系结构的寄存器信息。
|
|
$gs
|
交替数据段寄存器
|
$fs
|
交替数据段寄存器
|
$es
|
交替数据段寄存器
|
$ds
|
数据段寄存器
|
$edi
|
目标索引寄存器
|
$esi
|
源索引寄存器
|
$ebp
|
帧指针
|
$esp
|
堆栈指针
|
$ebx
|
通用寄存器
|
$edx
|
通用寄存器
|
$ecx
|
通用寄存器
|
$eax
|
通用寄存器
|
$trapno
|
异常向量数
|
$err
|
异常错误代码
|
$eip
|
指令指针
|
$cs
|
代码段寄存器
|
$eflags
|
标志
|
$uesp
|
用户堆栈指针
|
$ss
|
堆栈段寄存器
|
|
常用寄存器也使用其计算机无关名称作为别名。
|
|
$sp
|
堆栈指针,等同于 $uesp
|
$pc
|
程序计数器,等同于 $eip
|
$fp
|
帧指针,等同于 $ebp
|
$ps
|
|
|
下表列出了 80386 下半部分(16 位)的寄存器。
|
|
$ax
|
通用寄存器
|
$cx
|
通用寄存器
|
$dx
|
通用寄存器
|
$bx
|
通用寄存器
|
$si
|
源索引寄存器
|
$di
|
目标索引寄存器
|
$ip
|
指令指针,下 16 位
|
$flags
|
标志,下 16 位
|
|
80386 的前四个 16 位寄存器可分为多个 8 位部分,如下表所示:
|
|
$al
|
寄存器 $ax 的(右)下半部分
|
$ah
|
寄存器 $ax 的(左)上半部分
|
$cl
|
寄存器 $cx 的(右)下半部分
|
$ch
|
寄存器 $cx 的(左)上半部分
|
$dl
|
寄存器 $dx 的(右)下半部分
|
$dh
|
寄存器 $dx 的(左)上半部分
|
$bl
|
寄存器 $bx 的(右)下半部分
|
$bh
|
寄存器 $bx 的(左)上半部分
|
|
下表列出了 80387 部分的寄存器:
|
|
$fctrl
|
控制寄存器
|
$fstat
|
状态寄存器
|
$ftag
|
标记寄存器
|
$fip
|
指令指针偏移
|
$fcs
|
代码段选择器
|
$fopoff
|
操作数指针偏移
|
$fopsel
|
操作数指针选择器
|
$st0 through $st7
|
数据寄存器
|
|
AMD64 寄存器信息
下表列出了适用于 AMD64 体系结构的寄存器信息:
|
|
rax
|
通用寄存器-为函数调用传递参数
|
rbp
|
通用寄存器-堆栈管理/帧指针
|
rbx
|
通用寄存器-被调用方保存
|
rcx
|
通用寄存器-为函数调用传递参数
|
rdx
|
通用寄存器-为函数调用传递参数
|
rsi
|
通用寄存器-为函数调用传递参数
|
rdi
|
通用寄存器-为函数调用传递参数
|
rsp
|
通用寄存器-堆栈管理/堆栈指针
|
r8
|
通用寄存器-为函数调用传递参数
|
r9
|
通用寄存器-为函数调用传递参数
|
r10
|
通用寄存器-临时
|
r11
|
通用寄存器-临时
|
r12
|
通用寄存器-被调用方保存
|
r13
|
通用寄存器-被调用方保存
|
r14
|
通用寄存器-被调用方保存
|
r15
|
通用寄存器-被调用方保存
|
rflags
|
标志寄存器
|
rip
|
指令指针
|
mmx0/st0
|
64 位媒体和浮点寄存器
|
mmx1/st1
|
64 位媒体和浮点寄存器
|
mmx2/st2
|
64 位媒体和浮点寄存器
|
mmx3/st3
|
64 位媒体和浮点寄存器
|
mmx4/st4
|
64 位媒体和浮点寄存器
|
mmx5/st5
|
64 位媒体和浮点寄存器
|
mmx6/st6
|
64 位媒体和浮点寄存器
|
mmx7/st7
|
64 位媒体和浮点寄存器
|
xmm0
|
128 位媒体寄存器
|
xmm1
|
128 位媒体寄存器
|
xmm2
|
128 位媒体寄存器
|
xmm3
|
128 位媒体寄存器
|
xmm4
|
128 位媒体寄存器
|
xmm5
|
128 位媒体寄存器
|
xmm6
|
128 位媒体寄存器
|
xmm7
|
128 位媒体寄存器
|
xmm8
|
128 位媒体寄存器
|
xmm9
|
128 位媒体寄存器
|
xmm10
|
128 位媒体寄存器
|
xmm11
|
128 位媒体寄存器
|
xmm12
|
128 位媒体寄存器
|
xmm13
|
128 位媒体寄存器
|
xmm14
|
128 位媒体寄存器
|
xmm15
|
128 位媒体寄存器
|
cs
|
段寄存器
|
es
|
段寄存器
|
fs
|
段寄存器
|
gs
|
段寄存器
|
os
|
段寄存器
|
ss
|
段寄存器
|
fcw
|
fxsave 和 fxstor 内存映像控制字
|
fsw
|
fxsave 和 fxstor 内存映像状态字
|
ftw
|
fxsave 和 fxstor 内存映像标记字
|
fop
|
fxsave 和 fxstor 内存映像最后一个 x87 op 代码
|
frdp
|
fxsave 和 fxstor 内存映像 64 位日期段偏移
|
frip
|
fxsave 和 fxstor 内存映像 64 位代码段偏移
|
mxcsr
|
fxsave 和 fxstor 内存映像 128 位媒体指令控制和状态寄存器
|
mxcsr_mask
|
mxcsr_mask 中的设置位指示 mxcsr 中支持的特征位
|
ymmo
|
256 位高级向量寄存器
|
ymm1
|
256 位高级向量寄存器
|
ymm2
|
256 位高级向量寄存器
|
ymm3
|
256 位高级向量寄存器
|
ymm4
|
256 位高级向量寄存器
|
ymm5
|
256 位高级向量寄存器
|
ymm6
|
256 位高级向量寄存器
|
ymm7
|
256 位高级向量寄存器
|
ymm8
|
256 位高级向量寄存器
|
ymm9
|
256 位高级向量寄存器
|
ymm10
|
256 位高级向量寄存器
|
ymm11
|
256 位高级向量寄存器
|
ymm12
|
256 位高级向量寄存器
|
ymm13
|
256 位高级向量寄存器
|
ymm14
|
256 位高级向量寄存器
|
ymm15
|
256 位高级向量寄存器
|
|
高级向量 (AVX) 寄存器(ymm0 至 ymm15)的域可被视为具有 C int、float 或 double 类型。