一、x86-64寄存器参数列表
寄存器名称 | 寄存器功能 |
%rsp | 堆栈指针寄存器,指向栈顶位置。pop操作通过增大rsp的值实现出栈,push操作通过减小rsp的值实现入栈。 |
%rbp | 栈帧指针,标识当前栈帧的起始位置。 |
%rax | 通常存储函数调用的返回结果,也被用在idiv (除法)和imul(乘法)命令中。 |
%rdi, %rsi, %rdx, %rcx,%r8, %r9 | 六个寄存器,当参数少于7个时, 参数从左到右放入寄存器: rdi, rsi, rdx, rcx, r8, r9;当参数为7个以上时,前 6 个与前面一样, 但后面的依次从 “右向左” 放入栈中,即和32位汇编一样。 |
二、寄存器详细内容
三、通用寄存器列表
名称 | 简介 |
EAX | (针对操作数和结果数据的)累加器 ,返回函数结果 |
EBX | (DS段中的数据指针)基址寄存器。在内存寻址时存放基地址 |
ECX | (字符串和循环操作数)计数器。时重复REP前缀指令和LOOP指令的内定计数器 |
EDX | (I/O指针)数据寄存器 |
EBP | (SS段中栈内数据指针)扩展基址指针寄存器 |
ESP | (SS段中栈指针)栈指针寄存器 |
ESI | (字符串操作源指针)源变址寄存器 |
EDI | (字符串操作目标指针)目的变址寄存器 |
(gdb)
(gdb) info registers all
rax 0x0 0
rbx 0x0 0
rcx 0x0 0
rdx 0x11a624310 4737614608
rsi 0x74d6488efc10 128463689153552
rdi 0x1 1
rbp 0x74d6488efc10 0x74d6488efc10
rsp 0x74d6488efbc0 0x74d6488efbc0
r8 0x7afa 31482
r9 0x14fd6eb2512036 5908151414104118
r10 0x74d6488efbd0 128463689153488
r11 0x1 1
r12 0x74d5f826cd10 128462340148496
r13 0x5a2 1442
r14 0x74d5f815ae70 128462339026544
r15 0x74d6488efc10 128463689153552
rip 0x74d65de332a1 0x74d65de332a1 <WebrtcCall::OnSentPacket(rtc::SentPacket const&)+17>
eflags 0x10246 [ PF ZF IF RF ]
cs 0x33 51
ss 0x2b 43
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0
st0 0 (raw 0x00000000000000000000)
st1 0 (raw 0x00000000000000000000)
st2 0 (raw 0x00000000000000000000)
st3 0 (raw 0x00000000000000000000)
st4 0 (raw 0x00000000000000000000)
st5 1 (raw 0x3fff8000000000000000)
st6 1 (raw 0x3fff8000000000000000)
st7 3 (raw 0x4000c000000000000000)
fctrl 0x37f 895
fstat 0x0 0
ftag 0xffff 65535
fiseg 0x74d6 29910
fioff 0x5cb8c378 1555612536
foseg 0x0 0
fooff 0x0 0
fop 0x0 0
mxcsr 0x1fa1 [ IE PE IM DM ZM OM UM PM ]
ymm0 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x64, 0x0 <repeats 23 times>}, v16_int16 = {0x0, 0x0, 0x0, 0x0, 0x64, 0x0 <repeats 11 times>},
v8_int32 = {0x0, 0x0, 0x64, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x64, 0x0, 0x0}, v2_int128 = {
0x00000000000000640000000000000000, 0x00000000000000000000000000000000}}
ymm1 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {
0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16 times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}}
ymm2 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x64, 0x0 <repeats 23 times>}, v16_int16 = {0x0, 0x0, 0x0, 0x0, 0x64, 0x0 <repeats 11 times>},
v8_int32 = {0x0, 0x0, 0x64, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x64, 0x0, 0x0}, v2_int128 = {
0x00000000000000640000000000000000, 0x00000000000000000000000000000000}}
ymm3 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {
0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16 times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}}
ymm4 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x64, 0x0 <repeats 23 times>}, v16_int16 = {0x0, 0x0, 0x0, 0x0, 0x64, 0x0 <repeats 11 times>},
v8_int32 = {0x0, 0x0, 0x64, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x64, 0x0, 0x0}, v2_int128 = {
0x00000000000000640000000000000000, 0x00000000000000000000000000000000}}
ymm5 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x64, 0x0 <repeats 23 times>}, v16_int16 = {0x0, 0x0, 0x0, 0x0, 0x64, 0x0 <repeats 11 times>},
v8_int32 = {0x0, 0x0, 0x64, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x64, 0x0, 0x0}, v2_int128 = {
0x00000000000000640000000000000000, 0x00000000000000000000000000000000}}
ymm6 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {
0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16 times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}}
ymm7 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x8000000000000000, 0x0, 0x0, 0x0},
v32_int8 = {0x2e, 0x32, 0x36, 0x31, 0x5d, 0x5b, 0x49, 0x5d, 0x5b, 0x30, 0x78, 0x37, 0x34, 0x64, 0x36, 0x34,
0x0 <repeats 16 times>}, v16_int16 = {0x322e, 0x3136, 0x5b5d, 0x5d49, 0x305b, 0x3778, 0x6434, 0x3436, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0}, v8_int32 = {0x3136322e, 0x5d495b5d, 0x3778305b, 0x34366434, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {
0x5d495b5d3136322e, 0x343664343778305b, 0x0, 0x0}, v2_int128 = {0x343664343778305b5d495b5d3136322e,
0x00000000000000000000000000000000}}
ymm8 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {
0x30 <repeats 16 times>, 0x0 <repeats 16 times>}, v16_int16 = {0x3030, 0x3030, 0x3030, 0x3030, 0x3030, 0x3030, 0x3030,
0x3030, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int32 = {0x30303030, 0x30303030, 0x30303030, 0x30303030, 0x0, 0x0, 0x0,
0x0}, v4_int64 = {0x3030303030303030, 0x3030303030303030, 0x0, 0x0}, v2_int128 = {0x30303030303030303030303030303030,
0x00000000000000000000000000000000}}
ymm9 {v8_float = {0x0, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x1ee, 0x0, 0x0, 0x0}, v32_int8 = {0xab, 0xaa,
0xaa, 0xaa, 0xaa, 0xea, 0x7e, 0x40, 0x0 <repeats 24 times>}, v16_int16 = {0xaaab, 0xaaaa, 0xeaaa, 0x407e,
0x0 <repeats 12 times>}, v8_int32 = {0xaaaaaaab, 0x407eeaaa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x407eeaaaaaaaaaab,
0x0, 0x0, 0x0}, v2_int128 = {0x0000000000000000407eeaaaaaaaaaab, 0x00000000000000000000000000000000}}
ymm10 {v8_float = {0x0, 0x3, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x1ee, 0x1ee, 0x0, 0x0}, v32_int8 = {0xab,
0xaa, 0xaa, 0xaa, 0xaa, 0xea, 0x7e, 0x40, 0xab, 0xaa, 0xaa, 0xaa, 0xaa, 0xea, 0x7e, 0x40, 0x0 <repeats 16 times>},
v16_int16 = {0xaaab, 0xaaaa, 0xeaaa, 0x407e, 0xaaab, 0xaaaa, 0xeaaa, 0x407e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
v8_int32 = {0xaaaaaaab, 0x407eeaaa, 0xaaaaaaab, 0x407eeaaa, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x407eeaaaaaaaaaab,
0x407eeaaaaaaaaaab, 0x0, 0x0}, v2_int128 = {0x407eeaaaaaaaaaab407eeaaaaaaaaaab, 0x00000000000000000000000000000000}}
ymm11 {v8_float = {0x0, 0xe, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x8753c4, 0x3b2d8, 0x0, 0x0}, v32_int8 = {
0x53, 0x55, 0x55, 0x95, 0x78, 0xea, 0x60, 0x41, 0xe3, 0x38, 0x8e, 0xe3, 0xc0, 0x96, 0xd, 0x41, 0x0 <repeats 16 times>},
v16_int16 = {0x5553, 0x9555, 0xea78, 0x4160, 0x38e3, 0xe38e, 0x96c0, 0x410d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
v8_int32 = {0x95555553, 0x4160ea78, 0xe38e38e3, 0x410d96c0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x4160ea7895555553,
0x410d96c0e38e38e3, 0x0, 0x0}, v2_int128 = {0x410d96c0e38e38e34160ea7895555553, 0x00000000000000000000000000000000}}
ymm12 {v8_float = {0x0, 0x8, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x363cb, 0x363cb, 0x0, 0x0}, v32_int8 = {0xe3,
0x38, 0x8e, 0xe3, 0x58, 0x1e, 0xb, 0x41, 0xe3, 0x38, 0x8e, 0xe3, 0x58, 0x1e, 0xb, 0x41, 0x0 <repeats 16 times>},
v16_int16 = {0x38e3, 0xe38e, 0x1e58, 0x410b, 0x38e3, 0xe38e, 0x1e58, 0x410b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
v8_int32 = {0xe38e38e3, 0x410b1e58, 0xe38e38e3, 0x410b1e58, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x410b1e58e38e38e3,
0x410b1e58e38e38e3, 0x0, 0x0}, v2_int128 = {0x410b1e58e38e38e3410b1e58e38e38e3, 0x00000000000000000000000000000000}}
ymm13 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {
0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16 times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}}
ymm14 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {
0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16 times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}}
ymm15 {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {
0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16 times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}}