Linux x64调用约定 Linux x64调用约定64位Linux以及macOS、FreeBSD等类Unix系统遵循的调用约定正式名称为System V AMD64 ABI。这是x86-64架构下最主流的非Windows调用标准。1. 参数传递整数和指针参数按顺序优先使用寄存器只有超过6个时才使用栈参数顺序寄存器你代码中的体现第1个rdimain的argc被存在edirdi的低32位第2个rsimain的argv被存在rsi第3个rdx-第4个rcx-第5个r8-第6个r9-浮点数/向量参数如果参数是float或double则使用xmm0~xmm7寄存器与整数寄存器互不冲突。2. 返回值传递整数/指针放在rax中你的代码最后mov eax, 0x0就是将返回值0放入rax。128位大结构体使用rdx:rax组合返回。3. 栈对齐16字节规则System V ABI 强制要求在call指令执行之前栈指针%rsp必须是 16 的倍数即地址末位为 0。4. 红色区域Red Zone—— Linux 特有的优化%rsp指针下方即地址更低的区域有128 字节0x80是被保证不会被信号或中断异步破坏的。这意味着不调用其他函数的“叶函数”可以直接使用rsp-0x80以内的空间存放局部变量无需执行sub rsp来分配栈帧。你的main调用了puts属于非叶函数所以它不能用 Red Zone必须老老实实sub rsp分配空间。5. 寄存器保留规则谁负责保存为了防止函数调用时数据丢失寄存器被划分为两类类型寄存器列表规则调用者保存Caller-savedrax,rdi,rsi,rdx,rcx,r8,r9,r10,r11如果调用者觉得这些寄存器的值以后还有用必须在call之前自己压栈保存。被调用的函数可以随意修改它们。被调用者保存Callee-savedrbx,rbp,r12,r13,r14,r15被调用的函数必须在使用前将它们压栈并在返回前恢复原值。6. 第7个及之后的参数怎么传如果参数超过 6 个多余的参数从右向左压入栈中与Windows不同Windows是前4个用寄存器第5个开始压栈。而且这些栈上的参数归调用者负责清理无需ret N调用者直接调整rsp即可。

相关新闻

最新新闻

影刀RPA 报表自动调度:定时查询数据库并生成业务报表

影刀RPA 报表自动调度:定时查询数据库并生成业务报表

影刀RPA 报表自动调度:定时查询数据库并生成业务报表 作者:林焱 什么情况用什么 大多数公司都有几个"祖传报表":每天早上销售总监要看前一天的销售额,每周一运营总监要看上周的用户增长,每月1号财务要看上…

2026/7/16 0:30:11
影刀RPA 批量操作的断点记录与续跑方案

影刀RPA 批量操作的断点记录与续跑方案

影刀RPA 批量操作的断点记录与续跑方案 作者:林焱 什么情况用这个 处理5000条数据到第3891条时流程中断了。你重启流程——从头开始。前3891条白跑了,还要花同样的时间重新处理。更糟的是,前面已经提交到系统的数据没法"撤回"&…

2026/7/16 0:30:11
Windows系统文件DaOtpCredentialProvider.dll丢失找不到问题解决

Windows系统文件DaOtpCredentialProvider.dll丢失找不到问题解决

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

2026/7/16 0:30:11
影刀RPA 批量处理的进度追踪:让长任务可视化

影刀RPA 批量处理的进度追踪:让长任务可视化

影刀RPA 批量处理的进度追踪:让长任务可视化 作者:林焱 什么情况用这个 你在跑一个处理5000条数据的流程,半个小时过去了,窗口没有任何反应——不知道处理到第几条了、还要多久、有没有卡死。你犹豫要不要手动关掉重来&#xff0c…

2026/7/16 0:30:11
告别网盘限速烦恼:LinkSwift直链下载助手完整使用指南

告别网盘限速烦恼:LinkSwift直链下载助手完整使用指南

告别网盘限速烦恼:LinkSwift直链下载助手完整使用指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…

2026/7/16 0:30:11
ReAct框架:让你的AI智能体从“问答机器人”升级为“全能帮手”(收藏版)

ReAct框架:让你的AI智能体从“问答机器人”升级为“全能帮手”(收藏版)

ReAct框架通过“思考-行动-观察”的闭环机制,有效弥补了大型语言模型在知识时效性、运算执行能力和外部环境联动方面的短板。它将LLM的逻辑推理能力与外部工具(如网络搜索、计算器、API接口)相结合,使AI智能体能够自主拆解规划任务…

2026/7/16 0:25:11

月新闻