有关寄存器

1. 通用寄存器对照表(x86_64 ↔ x86)

64 位寄存器32 位寄存器16 位寄存器8 位高位8 位低位常见作用
RAXEAXAXAHAL累加器,常用于返回值
RBXEBXBXBHBL基址寄存器
RCXECXCXCHCL计数寄存器(循环、rep 前缀的计数器)
RDXEDXDXDHDL数据寄存器(I/O、除法余数、syscall 参数)
RSIESISISIL源地址寄存器(字符串/内存操作源指针)
RDIEDIDIDIL目的地址寄存器(字符串/内存操作目标指针)
RBPEBPBPBPL基址指针(栈帧基址,调试、局部变量访问)
RSPESPSPSPL栈指针(总是指向栈顶)
R8R8WR8B额外参数寄存器(x86_64 新增)
R9R9WR9B同上
R10R10WR10B任意用途(内核调用时经常传参)
R11R11WR11B任意用途
R12R12WR12B任意用途
R13R13WR13B任意用途
R14R14WR14B任意用途
R15R15WR15B任意用途

2. 常见调用约定下的作用

System V AMD64 ABI(Linux 64 位常用)

函数参数位置寄存器
第 1 个参数RDI
第 2 个参数RSI
第 3 个参数RDX
第 4 个参数RCX
第 5 个参数R8
第 6 个参数R9
返回值RAX
系统调用号RAX
系统调用参数RDI, RSI, RDX, R10, R8, R9

cdecl(32 位 Linux 常用)

  • 所有参数都从栈传递(右到左压栈)
  • 返回值放在 EAX
  • 调用者负责平衡栈

寄存器常用习惯总结

  • RAX/EAX:结果/累加器(算数、返回值、syscall 号)
  • RBX/EBX:无固定用途(某些特殊代码中当指针或索引)
  • RCX/ECX:计数器(循环、rep 前缀)
  • RDX/EDX:数据寄存器(乘除法、I/O、高位扩展)
  • RSP/ESP:栈指针(push/pop 自动修改)
  • RBP/EBP:栈基址(函数帧)
  • RSI/ESI:源指针
  • RDI/EDI:目的指针
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇