Skip to content

Commit ea3521d

Browse files
updates
1 parent 11aa457 commit ea3521d

16 files changed

Lines changed: 7686 additions & 120 deletions

drafts/Content-Table-Draft.md

Lines changed: 12 additions & 120 deletions
Original file line numberDiff line numberDiff line change
@@ -1,125 +1,17 @@
1-
# 目录草稿
2-
3-
## 第一部分:起手操作
4-
5-
### 第0章 一切的前提
6-
7-
- [x] 前言
8-
- [x] 嵌入式的资源与实时约束(Flash/ROM、RAM、CPU、功耗、启动时间、确定性)
9-
- [x] 急速C语言速通复习
10-
- [x] 传统C++98比C多了什么呢?
11-
- [x] 语言选择原则:何时用 C++、用哪些 C++ 特性(折中与禁用项)
12-
- [x] 性能 vs 可维护性的真实取舍
13-
- [x] 编码规范建议(小型嵌入式友好的 C++ 子集/风格指南)
14-
- [x] 练习:评估三个小示例(用 C、用 C++(面向对象),比较代码大小与性能)
15-
16-
------
17-
18-
### 第1章 工具链与构建(为性能调优打基础)
19-
20-
- [x] 交叉编译基础与 CMake 多目标构建
21-
- [x] 常用编译器选项(-O0/-Og/-O2/-Os/-Ofast、-fno-exceptions、-fno-rtti、-ffunction-sections/ -fdata-sections、-Wl,--gc-sections)
22-
- [x] 链接器
23-
- [x] 链接脚本(Memory、FLASH/RAM 布局、.bss/.data/.rodata)
24-
- [x] 启动代码与初始化顺序(全局构造、构造开销)
25-
26-
------
27-
28-
## **第二部分:性能优化核心**
29-
30-
#### 第2章 零开销抽象原则
31-
32-
- [x] 3.1 什么是零开销抽象(Zero-overhead Abstraction)
33-
- [x] 3.2 内联函数与编译器优化
34-
- [x] 3.3 constexpr:编译期计算
35-
- [x] 3.4 编译期多态 vs 运行时多态
36-
37-
#### 第3章 高效的类设计
38-
39-
- [x] 4.1 构造函数优化:初始化列表与成员初始化
40-
- [x] 4.2 移动语义(Move Semantics)在嵌入式中的应用
41-
- [x] 4.3 RVO与NRVO(返回值优化)
42-
- [x] 4.4 空基类优化(EBO)
43-
- [x] 4.5 对象大小与内存对齐,trivial类型与标准布局类型,聚合初始化与designated initializers(C++20)
44-
45-
#### 第5章 编译期编程技术
46-
47-
- [x] `constexpr`(C++11/14/17/20)与设计技巧:常量表达式计算、lookup tables、编译期字符串处理
48-
- [x] `consteval``constinit`(C++20)
49-
- [x] 编译期应用——查找表生成,状态机设计与单位转换与物理量计算
50-
- [x] `if constexpr`
51-
52-
------
53-
54-
## **第三部分:内存管理与资源控制**
55-
56-
#### 第6章 避免动态内存分配
57-
58-
- [x] 7.1 动态内存的代价:碎片化与不确定性(内存布局(静态、堆、栈)、碎片化与内存对齐)
59-
- [x] 7.2 静态存储与栈上分配策略
60-
- [x] 7.3 对象池(Object Pool)模式
61-
- [x] 7.4 固定池 / slab / arena 分配器实现与比较
62-
- [x] 7.5 禁用 heap 或限制 heap 时的替代策略:放置new(Placement New)的使用
63-
- [x] 7.6 std::array vs C数组,你们知道嘛?
64-
65-
#### 第7章 智能指针与RAII
66-
67-
- [x] RAII 在驱动/外设管理中的应用(GPIO、SPI、DMA、文件句柄)
68-
- [x] `unique_ptr``shared_ptr` 的嵌入式取舍(内存成本、控制周期)
69-
- [x] intrusive 智能指针与引用计数(非堆实现)
70-
- [x] 8.2 std::unique_ptr:零开销的独占所有权
71-
- [x] 8.3 std::shared_ptr在嵌入式中的考虑
72-
- [x] 8.4 自定义删除器(Custom Deleter)
73-
- [x] 8.5 引用计数的实现与性能
74-
- [x] 8.6 作用域守卫(Scope Guard)模式
75-
76-
#### 第8章 容器与数据结构
77-
78-
- [x] 9.1 std::array:编译期固定大小数组
79-
- [x] 9.2 std::span(C++20):非拥有型视图
80-
- [x] 9.3 循环缓冲区实现
81-
- [x] 9.4 侵入式容器设计
82-
- [x] 9.5 etl库(Embedded Template Library)介绍
83-
- [x] 9.6 自定义分配器(Allocator)
84-
85-
------
86-
87-
## **第四部分:现代C++特性应用**
88-
89-
#### 第9章 类型安全与强类型
90-
91-
- [x] 10.1 enum class:强类型枚举
92-
- [x] 10.2 类型安全的寄存器访问
93-
- [x] 10.3 std::variant:类型安全的联合体(C++17)
94-
- [x] 10.4 std::optional:可选值语义(C++17)
95-
- [x] 10.5 std::expected:错误处理新范式(C++23)
96-
- [ ] 10.6 类型别名与using声明
97-
- [ ] 10.7 字面量运算符与自定义单位
98-
99-
#### 第10章 函数式编程元素
100-
101-
- 11.1 Lambda表达式基础
102-
- 11.2 Lambda捕获与性能影响
103-
- 11.3 std::function vs 函数指针
104-
- 11.4 回调机制的零开销实现
105-
- 11.5 std::invoke与可调用对象
106-
- 11.6 函数式错误处理模式
107-
- 11.7 管道操作与范围库(Ranges,C++20)
108-
1091
#### 第11章 并发与同步
1102

111-
- 12.1 原子操作(std::atomic)
112-
- 12.2 内存序(Memory Order)详解
113-
- 12.3 无锁数据结构设计
114-
- 12.4 std::mutex与RAII锁守卫
115-
- 12.5 中断安全的代码编写
116-
- 12.6 临界区保护技术
117-
- 12.7 RTOS任务间通信
118-
- C++ 内存模型简介(顺序一致性、释放/获取语义)
119-
- `std::atomic`、原子操作、内存栅栏在嵌入式的使用
120-
- 轻量同步:自旋锁、信号量、条件变量的代价(RTOS vs Linux)
121-
- Lock-free 与无阻塞数据结构(适用场景、ABA 问题)
122-
- 练习:实现一个 lock-free 单生产者单消费者环形缓冲区并测试延迟
3+
- [x] 12.1 原子操作(std::atomic)
4+
- [x] 12.2 内存序(Memory Order)详解
5+
- [ ] 12.3 无锁数据结构设计
6+
- [ ] 12.4 std::mutex与RAII锁守卫
7+
- [ ] 12.5 中断安全的代码编写
8+
- [ ] 12.6 临界区保护技术
9+
- [ ] 12.7 RTOS任务间通信
10+
- [ ] C++ 内存模型简介(顺序一致性、释放/获取语义)
11+
- [ ] `std::atomic`、原子操作、内存栅栏在嵌入式的使用
12+
- [ ] 轻量同步:自旋锁、信号量、条件变量的代价(RTOS vs Linux)
13+
- [ ] Lock-free 与无阻塞数据结构(适用场景、ABA 问题)
14+
- [ ] 练习:实现一个 lock-free 单生产者单消费者环形缓冲区并测试延迟
12315

12416
#### 第12章 实用语言特性
12517

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# AI Helpers
2+
.claude

0 commit comments

Comments
 (0)