通过 uregs[] 数组,可以访问各个用户寄存器。下表列出了与每个支持的 Solaris 系统体系结构对应的 uregs[] 数组索引。
表 33–1 SPARC uregs[] 常量
常量 |
寄存器 |
---|---|
R_G0..R_G7 |
%g0..%g7 全局寄存器 |
R_O0..R_O7 |
%o0..%o7 输出寄存器 |
R_L0..R_L7 |
%l0..%l7 本地寄存器 |
R_I0..R_I7 |
%i0..%i7 输入寄存器 |
R_CCR |
%ccr 条件代码寄存器 |
R_PC |
%pc 程序计数器 |
R_NPC |
%npc 下一个程序计数器 |
R_Y |
%y 乘/除寄存器 |
R_ASI |
%asi 地址空间标识符寄存器 |
R_FPRS |
%fprs 浮点寄存器状态 |
表 33–2 x86 uregs[] 常量
常量 |
寄存器 |
---|---|
R_CS |
%cs |
R_GS |
%gs |
R_ES |
%es |
R_DS |
%ds |
R_EDI |
%edi |
R_ESI |
%esi |
R_EBP |
%ebp |
R_EAX |
%eax |
R_ESP |
%esp |
R_EAX |
%eax |
R_EBX |
%ebx |
R_ECX |
%ecx |
R_EDX |
%edx |
R_TRAPNO |
%trapno |
R_ERR |
%err |
R_EIP |
%eip |
R_CS |
%cs |
R_ERR |
%err |
R_EFL |
%efl |
R_UESP |
%uesp |
R_SS |
%ss |
在 AMD64 平台上,uregs 数组的内容与其在 x86 平台上的内容相同,另外还包括下表中列出的附加元素:
表 33–3 amd64 uregs[] 常量
常量 |
寄存器 |
---|---|
R_RSP |
%rsp |
R_RFL |
%rfl |
R_RIP |
%rip |
R_RAX |
%rax |
R_RCX |
%rcx |
R_RDX |
%rdx |
R_RBX |
%rbx |
R_RBP |
%rbp |
R_RSI |
%rsi |
R_RDI |
%rdi |
R_R8 |
%r8 |
R_R9 |
%r9 |
R_R10 |
%r10 |
R_R11 |
%r11 |
R_R12 |
%r12 |
R_R13 |
%r13 |
R_R14 |
%r14 |
R_R15 |
%r15 |
下表中列出的别名可用于所有平台:
表 33–4 公用的 uregs[] 常量
常量 |
寄存器 |
---|---|
R_PC |
程序计数器寄存器 |
R_SP |
栈指针寄存器 |
R_R0 |
第一个返回码 |
R_R1 |
第二个返回码 |