寄存器以及寻址简介

1360阅读 0评论2020-05-28 stolennnxb
分类:IT业界

x86-64的CPU当中包含16个存储64位值的通用目的寄存器,用来存储整数数据和指针,下图只列出了前8个,后面还有r8-r15,结构类似

上述寄存器以及相关默认功能
rax 保存所有api函数返回值
rbx 基地址寄存器,在内存寻址时存放基地址
rcx 计数器,是REP前缀指令和loop指令的默认计数器
rdx 存放整数除法产生的余数
rsi 源索引寄存器,字符串操作中,指向源串
rdi 目标索引寄存器,字符串操作中,指向目标串
rbp 基址指针寄存器,其内存放着一个指针,永远指向系统栈最上面一个栈的底部
rsp 栈指针寄存器,其内存放着一个指针,该指针指向系统最上面一个栈帧的栈顶
内存寻址的几种格式
类型 格式 操作数值 名称
立即数 $Imm Imm 立即数寻址
寄存器 ra R[ra] 寄存器寻址
存储器 Imm M[Imm] 绝对寻址
存储器 (r) M[R[r]] 间接寻址
存储器 Imm(r) M[Imm+R[r]] (基址+偏移量)寻址
存储器 (r1, r2) M[R[r1]+R[r2]] 变址寻址
存储器 Imm(r1, r2) M[Imm + R[r1]+R[r2]] 变址寻址
存储器 (,r,s) M[R[r]*s] 比例变址寻址
存储器 Imm(,r,s) M[Imm+R[r]*s] 比例变址寻址
存储器 (r1,r2,s) M[R[r1]+R[r2]*s] 比例变址寻址
存储器 Imm(r1,r2,s) M[Imm+R[r1]+R[r2]*s] 比例变址寻址
上表中,s必须为1,2,4,8





上一篇:函数调用相关解读
下一篇:关于对抗缓冲区溢出攻击的几种方式