linux - 通过 linux x86-64 函数调用保留哪些寄存器

标签 linux assembly x86-64 calling-convention abi

我相信我了解 linux x86-64 ABI 如何使用寄存器和堆栈将参数传递给函数(参见 previous ABI discussion )。我感到困惑的是,是否/什么寄存器应该在函数调用中保留。也就是说,哪些寄存器可以保证不被破坏?

最佳答案

这是文档中的寄存器及其使用的完整表[ PDF Link ]:

table from docs

r12r13r14r15rbx >rsprbp 是被调用者保存的寄存器 - 它们在“跨函数调用时保留”列中具有"is"。

关于linux - 通过 linux x86-64 函数调用保留哪些寄存器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53580405/

相关文章:

linux - .tmux.conf 不是在 Mac 上读取而是在 Linux 上读取?

c - GCC x86-64 次优汇编输出,为什么?

linux - 在 Linux 上使用 Coldfusion 写入 USB 闪存驱动器

linux - 将目录中存在的所有函数动态导入到脚本中

assembly - 如何验证 x86 命令的输出?

c - x87 双加法不起作用

c - 解释汇编代码

c++ - 体系结构 x86_64 的 undefined symbol 静态类成员错误

python - 在 Ubuntu 15.04(64 位)中将 Python 3.4.3 升级到 Python 3.6.1

assembly - MIPS/QTSPIM 中的指令引用未定义错误