You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

System V AMD64 ABI中%gs寄存器属于调用方保存还是被调用方保存?

System V AMD64 ABI 中%gs寄存器规范解答

对应提问:该ABI是否对%gs有明确规定?%gs属于caller-save(调用方保存)还是callee-save(被调用方保存)寄存器?它是否属于保留寄存器?

System V AMD64 ABI 对%gs寄存器有明确的规定,相关规则如下:

  • 用途定义:%gs属于系统预留的段寄存器,用户态场景下由操作系统为每个线程预配置其对应的内存基地址,专门用于实现线程本地存储(TLS)相关的访问逻辑,用户态代码仅可通过%gs的地址偏移读取或写入TLS区块数据,不允许直接修改%gs本身的段选择子取值。
  • 调用保存规则:%gs不属于普通通用寄存器的caller-save/callee-save分类范畴。ABI明确要求所有符合规范的函数都不能修改%gs的取值,也不需要在函数调用流程中对它做保存或恢复操作,它的取值由操作系统/运行时保证在整个线程的生命周期内稳定。
  • 保留属性:%gs属于严格的保留寄存器,任何用户态代码随意修改%gs的行为都会违反ABI约定,大概率会导致程序崩溃或者不可预期的运行错误。

内容的提问来源于stack exchange,提问作者Marc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 09:27:03