C++程序员要懂的一点汇编指令
目录一、数据移动赋值 / 取地址 / 参数传递二、算术与逻辑运算三、比较与分支if / while / for四、函数调用与返回五、栈与局部变量六、内存与字符串操作七、并发与原子八、SIMD了解即可九、虚函数与多态十、常见 C 结构 → 汇编对照表十一、总结非AI生成觉得有用就请您帮忙点赞转发收藏吧您的鼓励是我创作的动力多谢看官。由于能力水平有限文中的错误或不严谨的地方在所难免还请批评指正。一、数据移动赋值 / 取地址 / 参数传递汇编指令作用C 源码关联说明mov reg, reg寄存器间复制x y;mov reg, imm立即数赋值x 10;mov reg, [addr]读内存x *p;x a;局部变量也在内存mov [addr], reg写内存*p x;a x;lea reg, [addr]加载地址p x;不访问内存常用于算术movzx reg, mem零扩展int x unsigned_char;无符号扩展movsx reg, mem符号扩展int x signed_char;有符号扩展push reg压栈函数调用保存现场pop reg弹栈恢复现场二、算术与逻辑运算汇编指令作用C 源码关联说明add dst, src加法x y;sub dst, src减法x - y;inc reg自增x;dec reg自减--x;imul dst, src乘法x * y;有符号idiv reg除法x / y;极慢​neg reg取负x -x;and dst, src按位与x y;or dst, src按位或x y;xor dst, src按位异或x ^ y;xor eax,eax→ 清零not reg按位取反x ~x;shl reg, imm左移x n;shr reg, imm逻辑右移x n;无符号sar reg, imm算术右移x n;有符号三、比较与分支if / while / for汇编指令作用C 源码关联说明cmp a, b比较if (a b)设置标志位test a, a测试是否为 0if (!x)if (ptr)常用je label相等跳转if (a b)Jump if Equaljne label不等跳转if (a ! b)jg label大于跳转if (a b)jge label≥if (a b)jl label小于if (a b)jle label≤if (a b)jmp label无条件跳转goto/while(true)loop label循环do{}while(--rcx)已过时四、函数调用与返回汇编指令作用C 源码关联说明call func调用函数foo();压返回地址ret函数返回return;enter建立栈帧函数序言现代编译器少用leave销毁栈帧函数尾声mov rsp,rbp; pop rbppush rbp保存基址函数开头pop rbp恢复基址函数结尾参数传递System V ABI寄存器C 参数rdi第 1 个rsi第 2 个rdx第 3 个rcx第 4 个r8第 5 个r9第 6 个五、栈与局部变量汇编指令作用C 源码关联说明sub rsp, N分配栈空间int a,b,c;add rsp, N释放栈空间函数返回mov [rbp-4], eax写局部变量x a;mov eax, [rbp-4]读局部变量a x;六、内存与字符串操作汇编指令作用C 源码关联说明movsb字节拷贝memcpymovsq8 字节拷贝memcpyrep movsb重复拷贝memcpystosb填充字节memsetrep stosb重复填充memset七、并发与原子汇编指令作用C 源码关联说明lock add [mem], reg原子加std::atomic::fetch_addlock cmpxchgCAScompare_exchange_weak自旋锁核心mfence内存屏障std::atomic_thread_fencesfence写屏障std::atomic_signal_fencelfence读屏障八、SIMD了解即可汇编前缀作用C 关联movdqu xmm0, [mem]128bit 加载std::simdpaddd xmm0, xmm1向量加mulps xmm0, xmm1单精度乘九、虚函数与多态汇编片段C 含义mov rax, [rbx]取 vptrcall [rax 8]调用第 2 个虚函数十、常见 C 结构 → 汇编对照表C 代码典型汇编int x 1;mov dword ptr [rbp-4], 1x y;mov eax, [rbp-8]; mov [rbp-4], eaxreturn x;mov eax, [rbp-4]; retif (x) f();test eax,eax; jz .Lskip; call fwhile (i--) {}dec eax; jnz .loopnew T()call operator new; call T::Tdelete p;call T::~T; call operator delete十一、总结C 程序员的汇编目标不是“会写”而是看得懂call / mov / jmp能从汇编判断有没有多余拷贝能理解虚函数、inline、atomic 的成本例如从汇编层面理解函数调用函数调用时调用者按 ABI 把参数放入寄存器并压返回地址被调用者建立栈帧、执行逻辑、将返回值放入rax最后通过ret返回栈帧由rbp/rsp维护但优化后可能被省略

相关新闻

Codex图片编辑:从盲盒抽卡到精准控制

Codex图片编辑:从盲盒抽卡到精准控制

1. 从盲盒抽卡到精准控制:Codex图片编辑新范式(开头段落)最近在折腾AI图片生成时,总遇到这种尴尬:用传统工具生成十张图,九张都是废片,剩下那张还得靠PS抢救。这种开盲盒式的体验,直…

2026/7/17 2:55:13阅读更多 →
AI Agent五层记忆架构设计与工程实践

AI Agent五层记忆架构设计与工程实践

1. AI Agent的记忆困境与突破方向上周调试一个客服Agent时遇到典型场景:用户第三次询问"我的订单物流状态"时,这个花费两周训练的AI竟然要求用户重新提供订单号。这种"记忆缺失"现象暴露了当前AI Agent的核心缺陷——缺乏持续学习能…

2026/7/17 2:55:13阅读更多 →
苹果M4芯片ANE解锁神经网络训练能力的技术突破

苹果M4芯片ANE解锁神经网络训练能力的技术突破

1. 项目背景与核心突破 在2026年3月,开发者Manjeet Singh通过逆向工程手段成功解锁了苹果M4芯片中Apple Neural Engine(ANE)的完整能力,打破了业界对NPU(神经网络处理单元)只能用于推理的固有认知。这项突破…

2026/7/17 2:55:13阅读更多 →
听听这位历史系毕业生对科莱特SAP培训真实评价

听听这位历史系毕业生对科莱特SAP培训真实评价

35岁的张学员,历史学专业出身,拥有多年会计、审计从业经验,并非传统技术背景,却凭借科莱特教育系统化的培育体系,顺利跨界转型SAP FICO顾问。如今的他,已顺利参与四个企业数字化项目,近期再度斩…

2026/7/17 5:00:24阅读更多 →
STM32F407学习记录(七)Cortex-M3/M4权威指南:第三章

STM32F407学习记录(七)Cortex-M3/M4权威指南:第三章

前言:本文章相当于学习笔记,摘录总结。推荐自行观看相关书籍(权威指南),不足之处,请指点。3.1Cortex--M3和Cortex-M4处理器的一般信息3.1.1处理器类型ARM Cortex-M为32位RISC(精简指令集&#x…

2026/7/17 5:00:24阅读更多 →
慧购 SmartPick|GPASS 百宝箱 AI 眼镜购物助手技术文档

慧购 SmartPick|GPASS 百宝箱 AI 眼镜购物助手技术文档

慧购(SmartPick):基于蚂蚁百宝箱的 AI 眼镜货架前决策助手赛事: GPASS AI 眼镜智能体开发者大赛 作品: 慧购(SmartPick) 开发平台: 蚂蚁百宝箱(TBox)企业版工…

2026/7/17 5:00:24阅读更多 →
VLA面试核心:感知-语言-动作三层认知与工程落地

VLA面试核心:感知-语言-动作三层认知与工程落地

1. 这不是“背题手册”,而是VLA面试者必须建立的认知坐标系“VLA大模型 面试指南导读”——看到这个标题,很多人第一反应是:又一份知识点罗列清单?又一套高频题库合集?我实话讲,如果你真这么想,…

2026/7/17 5:00:24阅读更多 →
C++单例模式实现线程安全错误日志系统:从原理到工程实践

C++单例模式实现线程安全错误日志系统:从原理到工程实践

1. 项目概述:为什么错误日志需要单例模式?在任何一个有一定规模的C项目中,错误日志系统都扮演着“黑匣子”的角色。它默默记录着程序运行时的每一个异常、每一次警告,是开发者在线上问题排查、性能分析甚至安全审计时最可靠的伙伴…

2026/7/17 5:00:24阅读更多 →
量化交易系统搭建指南:从策略回测到实盘部署

量化交易系统搭建指南:从策略回测到实盘部署

最近在量化投资圈里,一个名为"清仓重启,1w全仓打满一天只干一只,目标直指100w"的交易策略引起了广泛讨论。这种看似激进的策略背后,其实反映了当前量化交易领域的一个重要趋势:如何在风险可控的前提下&#…

2026/7/17 4:55:23阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/16 8:28:11阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/16 6:53:04阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/16 12:02:41阅读更多 →
VS Code 高效配置与个性化定制全攻略

VS Code 高效配置与个性化定制全攻略

1. VS Code 高效配置基础作为一款轻量级但功能强大的代码编辑器,VS Code 的默认配置已经能满足基本需求,但通过合理调整设置可以大幅提升编码效率。我使用 VS Code 已经有五年多时间,期间尝试过各种配置方案,总结出这套适合大多数…

2026/7/17 0:00:01阅读更多 →
从竞赛代码到桌面工具:让 SuperADD 与 SubspaceAD 真正跑进自己的图像

从竞赛代码到桌面工具:让 SuperADD 与 SubspaceAD 真正跑进自己的图像

在异常检测领域,很多优秀算法最初都是以研究代码的形式发布的。它们能够在固定测试集上复现实验结果,却不一定能被普通用户直接拿来测试自己的图片。尤其是最近很多算法仅提供在固定测试集的测试环境,而gradio的demo演示也不会提供。 对工程应用和在自己的图片上进行测试来…

2026/7/17 0:00:01阅读更多 →
WinRAR高效配置指南:从基础安装到高级压缩实战

WinRAR高效配置指南:从基础安装到高级压缩实战

前几天帮同事处理一个客户发来的压缩包,解压时系统自带的工具弹出一串乱码,换用 WinRAR 却顺利打开了。这种看似简单的场景,恰恰暴露了不同压缩工具在处理非标准编码、分卷压缩或加密文件时的差异。WinRAR 作为一款老牌工具,真正价…

2026/7/17 0:00:01阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/16 20:13:14阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/16 8:58:42阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/16 17:10:26阅读更多 →