- 博客(45)
- 收藏
- 关注
原创 DeepSeek 教我 C++ (9) :std::byte使用场景
使用std::byte的核心目的是明确表达原始二进制数据的语义,同时通过类型系统避免误操作。在需要处理底层内存、二进制流或类型安全的字节操作时,它是更现代、更安全的选择。
2025-04-15 09:58:14
757
原创 Build a Debugger (2) : software / hardware breakpoints 区别
软断点与硬件断点的主要区别体现在实现方式、功能支持及适用场景等方面。理解两者的区别有助于在复杂场景(如逆向工程、驱动调试)中灵活选择工具,提升调试效率。
2025-04-14 15:40:51
307
原创 Build a Debugger (1) : ptrace
系统调用是一个强大的工具,允许一个进程(跟踪者)监视和控制另一个进程(被跟踪者)的执行。它广泛应用于调试器、动态分析工具和沙盒环境。,开发者可以实现调试器、动态二进制插桩等高级工具,但其复杂性要求深入理解进程控制和信号处理机制。
2025-04-14 13:55:11
641
原创 DeepSeek 教我LLVM(2) : MCTargetDesc 核心模块有哪些?
在 LLVM 中,MCTargetDesc(Machine Code Target Description)是描述目标架构机器代码生成的核心模块,其核心组件可分为以下几类:MCInstrInfoMCRegisterInfoMCSubtargetInfoMCCodeEmitterMCDisassemblerMCAsmBackendMCAsmInfoMCObjectFileInfoMCInstPrinterMCSymbol 与 MCContext代码生成反汇编MCTargetDesc 的核心模块围绕以下目标展开
2025-04-11 16:10:07
232
原创 DeepSeek 教我 LLVM (1):汇编器中的Fixup 概念是什么?
它通过记录需要修正的位置和类型,支持跨模块符号引用、动态地址计算和指令优化(如分支松弛),最终通过重定位确保生成正确的可执行代码。理解 Fixup 是掌握 LLVM 汇编器和目标文件生成原理的关键。当生成机器代码时,某些指令的操作数(如跳转目标地址、数据符号的偏移量等)可能在汇编阶段无法确定(例如,符号可能位于其他模块或需要链接时才能确定)。,标记这些需要后续修正的位置,并在最终生成目标文件时完成地址计算或重定位。在 LLVM 的 MC(Machine Code)层中,(修复项)是用于处理。
2025-04-11 15:55:51
911
原创 如何在幽默的团队氛围中生存?
除了假装咳嗽之外,也可以假装系鞋带,如果自己穿的是运动鞋,那简直是天助你也,在蹲下来的时候,注意管理好自己的表情,不然人家会认为你对着鞋带傻笑。在有些场合,露出笑容,可能是一件非常不礼貌的行为,此时可以稍微低下头,不让对方看到自己的表情,同时自己注意自己的面部管理,好好调整一下。实在憋不住了,也可以假装咳嗽,可以捂嘴咳嗽,但是在咳嗽的时候,也会吸引大家的注意力,此时大家就要注意咳嗽完后,表情要处理好。除了掐手之外,也可以咬自己的嘴唇,但是注意不要太用力了,要是出现伤口,也是会影响自己的外观形象的。
2025-04-10 16:40:25
107
原创 职场小技巧(2):非暴力沟通的方法
对待正常人,就尽力使用正常人的沟通方法,非暴力沟通(Nonviolent Communication, NVC)是一种通过同理心、诚实表达和倾听来化解冲突的沟通方法,由心理学家马歇尔·卢森堡提出。非暴力沟通不是“忍让”,而是通过诚实和同理心建立深层连接。初期练习可能生硬,但熟练后会发现,大多数冲突都源于未被听见的“求救信号”。当对方用指责或抱怨表达时,尝试。
2025-04-07 09:09:35
269
原创 DeepSeek 教我 C++ (8) :C++ 静态类型不安全的情况
C++ Core Guide P.4 Guide 我们要保证C++ 程序的类型静态安全性,我请教了一下DeepSeek大佬.
2025-04-06 16:15:34
975
原创 DeepSeek 教我 C++ (7) :常见的一些未定义UB
在ISO C++标准中,未定义行为(Undefined Behavior, UB)可能导致程序行为不可预测,且这类问题往往难以调试。
2025-04-06 15:37:35
772
原创 CUDA 技术(1) Host Interception
它通过拦截应用程序的底层系统调用、API调用和线程活动,收集详细的执行信息,以便将CPU与GPU活动关联分析。Host Interception 是Nsight Systems实现细粒度性能分析的基础,通过精准控制拦截范围和模式,开发者可以高效定位CPU-GPU协作瓶颈。A:Nsight Systems 默认仅拦截常见高性能计算相关API,需通过插件或自定义配置扩展拦截范围。A:通常无功能影响,但可能因拦截逻辑轻微改变执行时序(对多数性能分析可忽略)。
2025-04-06 15:05:28
896
原创 CUDA && GPU 学习资源
Discord Channel: https://discord.com/invite/gpumodeYouTube Channel: https://www.youtube.com/@GPUMODEGitHub Repository: https://github.com/gpu-mode/lectures/tree/main/Textbook: https://www.amazon.com/Programming-Massively-Parallel-Processors-Hands/dp/0
2025-04-06 09:33:46
198
原创 DeepSeek 教我 C++ (6) : C++17 filesystem 的技巧
C++ 是个人最常用的编程语言,以前学生时代好多笔记都丢失了,想用DeepSeek帮忙快速整理一些编程细节,看看有没有没看到过的解释.,可以轻松实现跨平台(Windows/Linux/macOS)的文件系统操作!提问:整理一下C++ 17 filesystem 常用方法。
2025-04-03 14:26:58
1482
原创 计算机体系结构的性能瓶颈100例
性能瓶颈贯穿计算机系统的各个层级,需通过硬件设计优化(如增加缓存容量)、软件算法改进(如减少分支)、系统调优(如NUMA绑定)等手段缓解。实际场景中需结合性能分析工具(如perf、VTune)定位具体瓶颈。
2025-03-28 17:43:52
736
原创 DeepSeek 教我 C++ (5) : C++ 位操作的技巧
C++ 是个人最常用的编程语言,以前学生时代好多笔记都丢失了,想用DeepSeek帮忙快速整理一些编程细节,看看有没有没看到过的解释.
2025-02-16 14:45:43
408
原创 DeepSeek 教我 C++ (4) : 对象参数传递应该注意的小细节
C++ 是个人最常用的编程语言,以前学生时代好多笔记都丢失了,想用DeepSeek帮忙快速整理一些编程细节,看看有没有没看到过的解释.
2025-02-16 14:13:15
268
原创 DeepSeek 教我 C++ (3) : Optional / Variant 使用的应该注意的细节
C++ 是个人最常用的编程语言,以前学生时代好多笔记都丢失了,想用DeepSeek帮忙快速整理一些编程细节,看看有没有没看到过的解释.
2025-02-16 13:25:01
446
原创 DeepSeek 教我 C++ (2) : String 使用应该注意的小细节
C++ 是个人最常用的编程语言,以前学生时代好多笔记都丢失了,想用DeepSeek帮忙快速整理一些编程细节,看看有没有没看到过的解释.
2025-02-16 12:52:43
167
原创 DeepSeek 教我 C++ (1) : Class 设计应该注意的小细节
C++ 是最常用的编程语言,以前学生时代好多笔记都丢失了,想用DeepSeek帮忙快速整理一些编程细节,看看有没有没看到过的解释.
2025-02-16 10:04:01
255
原创 CppCon 2023 演讲总结 (3) :Algorithms in C++
在AI时代,大模型降低了软件开发的门槛,开发者不需要太多的系统级知识和内化思维,提出问题让AI即可生成代码与答案,项目开发速度越来越快,软件开发的乐趣越来越少了,职场逐渐内卷化,打算在2025年听一些C++国际会议报告,拓宽眼界,提高品位,找回初心.“内卷”(involution)一词最初源于社会学领域,用来描述一种社会或文化模式在发展到一定阶段后停滞不前、无法转化为更高级形态的现象,反而在内部不断复杂化、精细化,导致非理性的竞争加剧。真正的大师,永远怀着一颗学徒的心.
2025-02-07 19:40:38
415
原创 DeepSeek 学习笔记 (1)
DeepSeek 在这个春节大放异彩,横扫朋友圈和长辈酒局,一起来学习一下,打算体验一下用DeepSeek 学习DeepSeek, 玩一把 “自举”.
2025-02-03 09:29:09
752
原创 rocgdb 调试器之旅(1):开箱
调试是软件开发的元技能,是区分菜鸟与老手的一个技能,异构编程模型的构建,除了编程语言/编译器核心组件的定义,为用户提供有效/犀利的调试工具,也是重要的工作之一.本系列博文将整理探索过程中一系列有趣的信息.
2025-01-19 14:16:10
195
原创 环境搭建遇到的小问题与解决方案汇总
环境搭建vscode 安装:https://zhuanlan.zhihu.com/p/342467129 (主题修改+字体修改+C++配置)cmake 升级 : https://askubuntu.com/questions/355565/how-do-i-install-the-latest-version-of-cmake-from-the-command-line软件包换源:https://zhuanlan.zhihu.com/p/142014944补齐工具:https://zhuanlan
2022-04-26 09:29:32
1194
原创 DX12 图形学知识 (1) : Sampler Feedback && Texel Space Shading
1. 前言HLSL SM6.5 引入了一个新Feature, 叫Sampler Feedback, 它可以让硬件还回一些采样信息,软件可以使用这些采样信息做一些文章,场景有两个:streaming and texture-space shading, 本文主要介绍后者Texel Space Shading,同时拟解决以下三个问题:问题1:硬件传回了什么信息?问题2:软件怎么控制?问题3:texture-space shading 算法如何使用这个信息?参考资料https://microsof
2021-09-12 11:14:45
1316
原创 LLVM AMDGPU 后端代码分析研究(4)AMDGPUAtomicOptimizer
1. 介绍在计算机并行计算领域,并行计算模型常分为以下四种情况:单指令单数据 (SISD)单指令多数据 (SIMD)多指令单数据 (MISD)多指令多数据 (MIMD)在GPU shader编程中,处理器会自动把shader转换为并行执行,如Pixel shader, 只需对一个像素点处理,GPU会对所有的像素做相同处理,这是一种隐式的SIMD,用户是无法控制的,在最新的DX12/Vulkan 图形API中,都加强了用户层代码对底层功能的控制能力,HLSL SM6.0 提供了一系列Wave操
2021-08-31 23:34:18
1097
原创 LLVM AMDGPU 后端代码分析研究(3)AMDGPUFixFunctionBitcasts
1. 简介indirect-call 对后端芯片来说,是一件非常伤害性能的行为,它常出现在C++虚函数调用,GPU的subroutine. Compiler有一些算法就是想要减少indirect-call,具体可见参考文献1,AMD使用了下图第二种:Indirect Call Promotion.2. 源码跟踪&学习llc 命令:llc.exe -mtriple=amdgcn G:\Mesa3D_ws\llvm-11.0.0.src\llvm-11.0.0.src\test\CodeGe
2021-08-29 22:23:04
976
1
原创 LLVM AMDGPU 后端代码分析研究(1):PassPipe Line
本系列文章是对GPU LLVM后端的探索与学习,后端的学习资料主要有LLVM源码和公开的Spec. 众所周知,在PC GPU领域的玩家主要有三家公司:NV, AMD, INTEL. 在LLVM 后端开源的代码只有NV, AMD,而AMD相对NV的文档分享会更Open一些,比较容易找到它的Spec. 所以整个系统文章会以AMD的GPU作为研究目标,AMD 开源的代码对应的芯片有两款:R600 , GCN,后者是更新的架构. 以上是基本背景。1. Pass Pipeline通过llc工具,使用以下命令,跟踪
2021-08-28 22:51:55
4282
原创 Mesa3D Windows 环境搭建
缘起在一个无聊的周末,想看看开源Mesa3D的编译器&驱动软件的设计,个人认为通过下断点,看callstack的方式学习,比纯源码的方式效率更高,所以想做一个基于Vs2019学习环境,mesa3d主要是使用在linux的图形子系统中,官网对Windows平台的build步骤不太友好,通过参考 fdossena大佬添加链接描述外加各种折腾,终于把opengl编程指南的demo跑起来了,本文记录这个过程。以下几个坑位请提前注意:fdossena 文章中描述的是mesa-19.1.5使用scons
2021-08-15 10:48:01
5169
4
原创 C++ 开源项目清单
从开源代码的学习中发现,优秀的项目除了开源代码以外,还有需要很多的支撑文件,包括Build, Test, CI/CD, 文档等等。C++ 开源项目清单软件主体源代码软件构建cmakelist.clang-formatexternal & gitmodules 设计build script软件测试CI/CDtest & googletestbenchmark软件自述文件LicenseReadme文档...
2021-08-15 09:58:57
224
原创 Infrastructure Working Group 日记 (1)
1. The infrastructure of the LLVM project● source code repository● bug tracker● all build servers/machines● all web sites● build system/scripts● code review tool● mailing lists● internet forum● chat (IRC and discord)● Documentation of the tools a
2021-01-24 21:16:35
120
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人