硬核黑科技:如何在Go语言中实现运行时函数重写与热替换
这篇文章深入探讨了在Go这种静态语言中实现运行时代码修改的极限技巧。作者利用反射和unsafe包获取函数内存地址,通过直接修改机器码并插入JMP跳转指令,实现了类似于动态语言的“猴子补丁”功能。文章详细演示了如何处理内存保护权限以及x86和...
标签索引 / 第 4 页
这个标签下有 56 篇文章。按时间回看相关判断与实践记录。
标签精选
这篇文章深入探讨了在Go这种静态语言中实现运行时代码修改的极限技巧。作者利用反射和unsafe包获取函数内存地址,通过直接修改机器码并插入JMP跳转指令,实现了类似于动态语言的“猴子补丁”功能。文章详细演示了如何处理内存保护权限以及x86和...
Zlob.h 是一款全新的高性能文件路径匹配库,旨在完全替代传统的 POSIX 和 glibc 实现。该库专为 C、Zig 和 Rust 语言设计,通过高效的系统调用及 SIMD 指令集优化,实现了超越标准库的处理速度。它不仅支持标准的通配...
Anthropic 在 GitHub 上发布了一个完全由 Claude AI 编写的 C 语言编译器。该项目使用 Rust 语言开发,实现了零依赖,能够针对 x86(32/64位)、ARM 和 RISC-V 等多种架构生成代码。尽管目前用户...
Zig 编程语言近日宣布了 ‘zig libc’ 子项目的重大进展,旨在通过 Zig 标准库封装逐步替代传统的 vendored C 源文件。目前已成功删除约 250 个 C 源文件,并计划继续重构剩余的 2000 ...
Tomo 是一款新发布的静态类型、命令式编程语言。其核心特性是能够交叉编译为 C 语言,这使得它既能保持 C 语言的高性能和底层控制能力,又能提供更现代的内存管理机制(垃圾回收 GC)。虽然社区评论指出其目前缺乏泛型支持可能限制了通用性,使...
本文由LLVM核心开发者nikic撰写,回顾了2025年LLVM编译器基础设施的关键进展。重点内容包括:向ptradd指令的逐步迁移、引入ptrtoaddr指令以优化指针处理、提议统一的ABI lowering库以解决跨前端兼容性难题,以及...
本文是“用C#编写.NET垃圾回收器”系列的第六部分,深入探讨了垃圾回收的核心算法——标记与清除。作者详细讲解了如何实现标记阶段,包括从根对象开始扫描、利用方法表指针的最低位进行标记,以及使用非递归的深度优先搜索遍历对象图。此外,文章还介绍...
本文探讨了大型语言模型(LLM)在系统编程领域的变革性影响。开发者反馈,在学习 Rust 时,LLM 能够有效解决借用检查器(Borrow Checker)带来的复杂重构难题,帮助初学者克服对改动的心理障碍。此外,LLM 也在 C 语言开发...
本文深入探讨了Zig编程语言中的内存布局机制,受Zig创始人Andrew Kelley的数据导向设计(DoD)演讲启发,详细解析了如何计算类型的对齐与大小。文章通过数学公式和代码示例,涵盖基础类型、结构体、枚举、联合体及数组的内存占用规则,...
作者分享了在现代开发中使用C语言的个人习惯与最佳实践。尽管日常多用C#和Python,作者仍青睐C语言用于原型开发。文章详述了采用C23标准、定义简化的固定长度类型、避免使用空终止字符串等基础技巧。核心在于借鉴Rust的“解析而非验证”理念...