Skip to content

FIELD ARCHIVE / 1641 RECORDS

笔记归档

按主题浏览 Markdown 驱动的技术记录。
Assembly03

汇编与系统Assembly

ADDPS:打包单精度浮点加法

ADDPS(Add Packed Single-Precision Floating-Point Values)是 SSE 指令。 它把两个 128 位操作数分别看成四个 IEEE 754 单精度浮点数,对相同位置的元素执行加法,再将两项结果写回目标 XMM 寄存器。

Assembly25
Assembly26

汇编与系统Assembly

AVX-512VL:128/256 位 EVEX 形式

AVX-512VL 本身不定义一套独立的新助记符,而是与 AVX-512F、BW、DQ、CD、IFMA、VBMI、VBMI2、VNNI、BITALG、VPOPCNTDQ、BF16、FP16 等子集组合,为相应指令提供 XMM/YMM 的 EVEX.128 与 EVEX.256 形式。

Assembly27
Assembly33
Assembly42
Assembly43

汇编与系统Assembly

AVX512F 向量指令

Assembly102
Assembly370

汇编与系统Assembly

segment 指令

Assembly391
Assembly1597

汇编与系统Assembly

x86 向量指令全集

共收录 1045 个互不重复的 canonical SIMD 助记符页面。每个助记符只对应一个 Markdown 文件,并同时包含 InstructionSlotsRegisterOperation;同名的传统、VEX、EVEX 操作数形式集中在该文件中。

C++1600

C++ 基础C++

并发

并发指的是两个程序同时运行,但是一个CPU在一定时间内只能执行一个程序, 于是,对于单个CPU,实际上是一种软件并行,即多次任务切换; 对于多个CPU,多核CPU,才有真正的硬件并行,每个CPU可以分配到不同的任务,并进行调度。

Assembly1601

汇编与系统Assembly

ADDPD:打包双精度浮点加法

ADDPD(Add Packed Double-Precision Floating-Point Values)是 SSE2 指令。 它把两个 128 位操作数分别看成两个 IEEE 754 双精度浮点数,对相同位置的元素执行加法,再将两项结果写回目标 XMM 寄存器。

C++1607

流与 I/OC++

C++ 流与本地化

C++ locale 由多个 facet 组成,负责字符分类、数字格式、货币格式、时间格式和字符转换。流对象各自保存一个 locale。

C++1608

流与 I/OC++

C++ 流体系导览

C++ I/O 以字符类型、字符特征和缓冲区为基础,通过状态位和格式标志提供统一的控制台、文件与字符串输入输出接口。

C++1609

面向对象C++

C++ 类与对象

类把数据、不变量和操作组合成一个类型。良好的类应让有效状态容易构造,让资源随对象生命周期自动获得和释放。

C++1610

现代 C++C++

C++17 复制消除

复制消除允许对象直接在最终存储位置构造,从而省略中间对象的复制或移动。C++17 对部分纯右值场景给出了保证,而具名返回值优化(NRVO)仍是允许但不强制的优化。

C++1611

STL · 迭代器C++

const_iterator

const_iterator 允许读取元素但禁止通过该迭代器修改元素。它表达的是“访问权限”,不代表底层容器一定是 const

C++1612

STL · 容器C++

std::array

std::array<T, N> 封装固定长度的连续数组。长度 N 是类型的一部分,因此 array<int, 3>array<int, 4> 是不同类型。

C++1613

流与 I/OC++

std::basic_ios

std::basic_ios<CharT, Traits> 位于 ios_base 与具体输入输出流之间,负责流缓冲区指针、状态检查、填充字符和绑定流。

C++1616

STL · 容器C++

std::forward_list

std::forward_list 是单向链表。每个节点只保存一个后继指针,适合需要节点地址稳定、频繁在已知位置后插删且只需单向遍历的场景。

C++1618

流与 I/OC++

std::ios_base

std::ios_base 保存与字符类型无关的流配置:格式标志、状态位、打开模式、定位方向和 locale。具体字符流通过 basic_ios 继承它。

C++1619

STL · 容器C++

std::list

std::list 是双向链表。已知迭代器位置时,插入和删除为 O(1),并且操作其他节点不会使已有迭代器、指针和引用失效。

C++1620

流与 I/OC++

std::ofstream

std::ofstream 是文件输出流,默认使用 std::ios::out。资源由对象生命周期管理,但写入错误仍需显式检查。

C++1621

STL · 容器C++

std::vector

std::vector<T> 是动态长度的连续数组,也是大多数顺序数据的默认容器。它支持 O(1) 随机访问,尾部插入具有均摊 O(1) 复杂度。

C++1622

C++ 基础C++

STL 导览

标准模板库由容器、迭代器、算法、函数对象和适配器组成。它们通过统一的区间模型协作:算法通常接收 [first, last),并不需要知道底层容器类型。

C++1624

现代 C++C++

右值引用与移动语义

右值引用写作 T&&,它允许程序识别即将结束生命周期的对象并转移其资源。移动不是自动“搬运内存”的魔法,而是由类型的移动构造与移动赋值定义。

C++1625

流与 I/OC++

流操纵器

操纵器是可以插入流表达式的函数或对象,用于改变格式或执行动作。流的 operator<< / operator>> 提供接收函数指针的重载。

C++1626

现代 C++C++

std::shared_ptr

std::shared_ptr<T> 表达共享所有权:最后一个强引用销毁时,对象由控制块中的删除器释放。它适合确实存在多个、生命周期彼此独立的所有者。

C++1627

现代 C++C++

std::unique_ptr

std::unique_ptr<T> 表达独占所有权:任意时刻只有一个智能指针负责释放资源。它体积小、可移动,通常是动态资源所有权的默认选择。

C++1628

现代 C++C++

std::weak_ptr

std::weak_ptr<T> 观察由 shared_ptr 管理的对象,但不增加强引用计数。它用于表达“可以访问,但不拥有”,并能打破循环所有权。

C++1629

现代 C++C++

函数对象

函数对象是实现了调用运算符 operator() 的对象。它既能像函数一样调用,也能用成员保存策略或运行时状态。

C++1632

现代 C++C++

decltype

decltype(expression) 在不执行表达式的情况下取得其类型,常用于泛型代码、尾置返回类型和精确保留引用属性。

C++1635

C++ 基础C++

C++ 知识库

这里记录 C++ 语言机制、对象生命周期、标准库实现与 I/O 模型。每篇笔记尽量同时回答三个问题:它解决什么问题、编译器或库如何实现、工程中容易在哪里出错。

Assembly1636

汇编与系统Assembly

i386 架构基础

i386 通常指 32 位 x86 指令集环境。它保留分段模型,但现代平坦内存模型中代码、数据与栈段通常映射到相同线性地址空间。

Assembly1637

汇编与系统Assembly

汇编语言导览

汇编语言是机器指令的文本表示。学习它的目标通常不是手写完整应用,而是理解 ABI、调用约定、栈帧、编译器生成代码和底层性能行为。

GCC1640

编译工具链GCC

GCC 常用选项

GCC 的命令行通常由“语言标准、诊断、优化、调试、链接”五部分组成。开发阶段建议开启严格诊断并保留调试信息,发布阶段再切换优化级别。

Git1641

版本控制Git

Git 常用工作流

Git 记录的是提交图,而不是简单的文件版本列表。日常操作可以围绕“检查状态、制作提交、同步远端、恢复失误”四个阶段组织。

SIGNAL MAINTAINED · BUILT FROM MARKDOWN