Better Mistakes - page 2

Recent Posts

GNU 汇编(GAS)通用语法与伪指令指南

12 minute read

由于机器指令及助记符高度依赖于芯片的具体架构,本文不讨论特定指令集的全部细节,而是聚焦于 GAS(GNU Assembler)通用的伪指令系统及其基本语法规则。 1. 汇编器的本质与工作流 GNU Assembler(简称 as)的核心工作流可以用以下公式概括: $$ \text{源代码 (.s)} \xr...

ARMv7-A 指令体系全解:数据处理、访存、分支与同步

13 minute read

I.MX6ULL 的核心是 ARM Cortex-A7,它基于 ARMv7-A 架构。 要真正理解指令集,就不能只是背诵汇编手册,而是要回答一个核心问题:如果不看代码,只看电路,CPU 在做什么? 本质上,每一条指令都是对 CPU 内部寄存器状态或外部总线(内存/外设)的一次原子操作。 总线(Bus)...

如何将 WSL2 镜像无损迁移至非系统盘

3 minute read

1 引言 随着开发环境的日益庞大,默认安装在 C:\ 盘的 WSL2 (Windows Subsystem for Linux) 镜像体积也会不断膨胀。本文将分享如何通过命令行操作,将 WSL 迁移至 E:\ 盘乃至其他盘符,彻底释放系统盘空间。 1.1 笔者环境 名称 ...

C++ 中的 stack

10 minute read

要真正理解栈这种结构,意味着我们要剥离事物表象,追究其最本质的问题,即我们到底面临什么样的数据处理需求,才导致了 “栈” 这种结构的诞生? 我们不需要把栈仅仅看作是教科书上的定义,而是把它看作是为了解决特定时序问题而设计的一种 “受限” 模型。 1. 什么是栈? 从本质上来说,计算机处理任务通常有两种模式:...

操作系统中的进程

3 minute read

在计算机科学的教科书中,关于进程(Process)的定义往往只有冷冰冰的一句话: 进程是程序的一次执行过程。 这句话虽然准确,但它掩盖了太多细节。对于初学者而言,这更像是一个黑盒。为什么要有进程?为什么不能直接操作物理地址?所谓的上下文切换到底切换了什么? 要真正理解进程,我们不能只看定义,而必须回...