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

推荐答案

以下是文件[PDF Link]中寄存器及其使用的完整表格:

来自文档的表格

r12r13r14r15rbxrsprbp是被调用方保存的寄存器——它们在"跨函数调用保留"列中有一个"是".

Linux相关问答推荐

是否有例外情况需要在.gitconfig中使用?

为什么在Linux上STD::SLEEP_FOR(STD::Chrono::Hors::Max())会立即返回?

在树莓派内核中找不到arch/arm/kernel/calls.S

运行系统命令失败,但相同的命令可以直接在 bash 中执行

/proc/mounts 没有像 /proc/self/mountinfo 这样的源信息

有没有办法确定什么代码使 linux 共享对象inflating ?

编译过度对齐的动态分配变量时出现 icpc 错误

查找在特定日期从特定机器登录的所有用户

在 bash 中查找匹配多个模式的文件

在三星 chromebook 上编程

如何使用 __attribute__((visibility("default")))?

如何使用该位置的相对路径在单个位置创建多个文件夹?

使用 rc.local 运行脚本:脚本有效,但在启动时无效

如何克隆 OpenLDAP 数据库

将 AWK 结果分配给变量

从文本文件中删除奇数行或偶数行

我可以打开一个套接字并将其传递给 Linux 中的另一个进程吗

Bash:如何标记字符串变量?

用curl编译php,curl安装在哪里?

如何在 sed 中指定非捕获组?