自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

记一忘三二

从最初至今,此处文字的平均参考价值约具入门级。

  • 博客(473)
  • 资源 (53)
  • 收藏
  • 关注

原创 简单使用 perf 采样进程执行热点及分析

perf 火焰图

2024-08-19 23:00:32 299

原创 命令行交叉编译粗糙上岸

脚本自动交叉编译

2024-03-29 15:56:53 264

原创 xarray 简易体会与实现

体会源码中规律,范围索引 [0…最大的阻碍应该是内核使用 xarray 结点地址低 2 位用作了判断该结点是否位中间结点等用途 —— 内核可保证低所分配地址以 4 字节对齐,而用户程序中的内存分配不能保证。如当 xarray 结点槽位数为 64,存 2GiB 数据时,xarray 层级高度为 5,二叉树层级高度为 30。以 xarray 各层级结点最右侧有值槽位向下层索引子结点方式可找到 xarray 中的最大索引。为 xarray 结点槽位数,这便是 xarray 根据索引值映射目标值的基础规则。

2023-08-15 23:04:22 603

原创 用户程序内存分配缓存简易实现

应用程序内存缓存简易实现。用于尝试解决在内存分配偶现耗时问题。memca 不要求额外内存用于此处管理正因为如此,所缓存内存单元最小为指针大小(sizeof(void *))

2023-07-19 00:01:13 1267

原创 用于挂载管理复合类型的双向链表实现

若将双向链表结点作为相同或不同 C 复合类型的一员,然后将复合类型中的各链表结点关联成双向链表,从而间接将复合类型变量以双向链表方式进行了管理。对于大部分双向链表结点的操作都比较高效——甚至不需要判断语句。在合适场景下如此使用双向链表结点,可算得上轻量优雅。/** * 根据结构体类型 type 中的名为 mn 成员的地址 ma 获取 * type 结构体类型变量的首地址。*/#define DL_START_ADDR(ma, type, mn) \ ((type *) (((char *)

2022-05-04 22:12:17 612

原创 内存字典实现

此内存字典基于哈希表实现,适用于不明确具体数据量场景。1 结构体定义先想好功能,然后根据该功能想想需要哪些结构体来辅助实现该功能。#define DICT_FLAG_FREE (0x01)#define DICT_ITEM_EXIST (0x43)#define CMIN(a, b) ((a) < (b) ? (a) : (b))#define CMAX(a, b) ((a) > (b) ? (a) : (b))#define CIF_RETURN(exps, ret) ({

2022-05-04 21:54:27 494

原创 跳表与模型补偿实现

跳表弱试到了我这般码龄,再记录代码直接相关篇的文章是很难的,有很多难述清楚的原因。可今天起的太早花了一部分时间做了其他事情,剩下的时间不足以再做点其他的事情,不如……记录一篇?就选择跳表实现吧——记录跟实现顺序有差异。1 跳表个人弱理1.1 最大高度/** * [1] 跳表最大高度 * 设层级增长概率为 P , * 结点在层 L 的概率为 P^(L-1) * 当跳表拥有 N 结点时 * 层 L 结点数的期望为 N * P^(L-1) 。 * 层 L 有结点需满足 N * P^(L-1

2022-05-03 08:06:07 370

原创 NVDIMM编程模型原理大概推导梳理

NVDIMM 简介NVDIMM(Non-Volatile DIMM) 非易失性DIMM(Dual In-line Memory Module,双列直插式内存模块),即- 掉电不丢失数据;- 兼容 DIMM 插槽(通过插入内存条插槽接入计算机使用);故俗称 pmem(persistent memory)。NVDIMM 编程模型原理梳理原理上 NVDIMM 可直接作为一段物理内存使用——就像一块 DRAM 一样,此时可能需要注意- NVDIMM 比 DIMM 还是要慢一些;- NVDIMM 不

2021-12-26 01:21:58 994

原创 C函数尝试匹配

C函数尝试匹配不知缘起何处,如今已草草写了一个C函数尝试匹配工具。它大概可以从能通过编译的纯C源文件中匹配出C函数定义——即匹配C函数定义因子修饰 返回值类型 函数名 参数列表的自由组合模式。可以用它来支持一些不太重要的偷懒行为:声明单元测试函数全覆盖对于C函数定义因子自由组合模式的匹配大概有以下两种困难:C函数体能产生极大干扰,处理策略是跳过函数体。注释、引号会产生干扰,处理策略是删除掉它们。以 ln_co.c 为靶子试试它的成色。1 作声明1.1 匹配函数定义$ awk

2021-11-06 23:32:29 211

原创 电因 电呈现 电用

电描述的是两种物质1之间的作用力。大自然将二者及其作用力束缚在另一种物质2内,然后结合其他及该物质形成更大的物质结构,以此类生……一步一步构成很多种类的物体 —— 人、云、树、石头…… 即大自然中众多物体内部束缚着电。在束缚方面,不同物体对电的束缚能力不同3。在达到各自物体破坏束电能力条件4时,物体内部产生电的两种物质分离而各自聚集,从而电性得到宏观对外呈现 —— 对另一种包含1处物质的物体产生作用力。电的功能取决于被施与物体特性 —— 将电施加于点灯,电灯将发热发亮;将电施加于人,人将会有“触电”、

2021-06-09 22:43:37 330

原创 记录一种在C语言中的打桩实现及原理

1 场景考虑一个由多个模块组成的工程,如.└── wsw ├── m1 ├── m2 └── ...假设 m2 中的接口会调用 m1 中的接口。当要初步验证 m2 中各接口功能时,由于 m1 中各接口的运行往往依赖 m1 模块上下文(而在验证 m2 时往往不想参与 m1 模块的流程),此时需模拟 m1 接口所产生的数据。一种直接的方法是新建 m3 模块,并在其中重新编写 m1 中的函数用以产生模拟数据,再编写一个新的工程管理文件将 m2 和 m3 整合成一个可执行文件。

2020-10-18 19:06:51 2560

原创 windows VSCode 远程开发配置参考

windows VSCode 远程开发配置参考1 VSCode的下载与安装官网下载并安装VSCode。2 基础插件安装通过快捷键 “Ctrl + Shift + X” 或点击左列的扩展图标(由四个小方块组成)打开插件安装窗口栏,在搜索栏中搜索并安装以下插件[1] Remote Development[2] Remote-SSH按照开发需求可选择安装[3] Chinese (Simplified) Language Pack for Visual Studio Code插件安装后,点击插件“

2020-08-29 10:43:44 652

原创 C volatile 使用基础理解

C语言中的volatile由编译器处理,他告知编译器1 每次访问由 volatile 修饰的变量皆在内存/缓存层面/* vol_var.c, * gcc -O3 -S vol_var.c */volatile int flag = 0; | | void _co_fn1(void) | _co_fn1:{ | .L3: while (!flag) | movl fl

2020-06-15 18:09:04 593

原创 11 linux011用于进程共享资源的睡眠与唤醒

用进程调度状态、进程调度和一个指向上一个睡眠进程PCB的指针实现了进程在共享资源时的睡眠等待与唤醒机制,分别包装成睡眠和唤醒两个函数。此机制的实现非常简单,但不太容易被理解。1 进程等待资源的睡眠[1] 初始一个用于某资源共享的PCB指针为NULL,表征之前无进程睡眠等待;[2] 在睡眠函数栈中保存该PCB指针,置PCB指针指向当前进程的PCB;置当前进程状态为不可调度状态,随即调度进程调度函数完成进程调度;[3] 在调用进程调度函数之后唤醒(置回可调度状态)栈中所保存PCB所指进程。这个过程有

2020-06-04 13:21:16 393

原创 10 linux011子进程创建和多进程调度开销分析

1 子进程创建的主要过程(1) 执行int 80h指令进入系统调用fork();(2) fork()[1] 为子进程搜索唯一进程号(PID)和空闲的进程管理结构体(PCB,包含TSS);[2] 继承父进程管理结构体部分属性,共享父进程下的全局数据(如文件),初始化子进程的TSS;计算子进程的逻辑内存空间,以设置子进程的LDT,并在GDT中设置子进程TSS和LDT的描述符;[3] 为子进程分配页机制相关数据结构体(如页表目录项、页表和页表项)——映射为父进程的物理内存页(写时拷贝共享的物理内存页),

2020-06-03 22:53:03 587

原创 09 linux011系统调用开销分析

1 系统调用主要过程(1) int 80h保护模式下执行int 80h指令的过程比较复杂[1] CPU 根据中断号 80h 和 IDTR(IDT内存地址) 读取描述符 IDT[80h] (并作有效、特权级等检查);[2] CPU 根据 IDT[80h] 描述符中的 GDT 选择符(s)和 GDTR(GDT内存地址)读取段描述符 GDT[s](并作有效、特权级等检查); IDT +==+ logic memory addrIDTR[1]|..|

2020-06-03 22:52:20 746

原创 08 linux011进程调度

1 linux 0.11 用户进程调度时机[1] 主动请求调度(如调用 pause );[2] 进入系统调用时内核资源不够,则主动睡眠当前进程并调度其他进程运行,当内核资源可用时被唤醒,从而再次进入能被调度的状态;[3] 在定时器中断中,当前进程时间片运行完毕时;[4] 系统调用结束时检查当前进程已进入不可运行状态。2 调度策略[1] 遍历管理进程的所有数据结构体, 检查各进程所设置的报警是否超时, 若超时则为当前进程设置报警超时信号。若当前进程有可被处理的信号且处于可被唤醒状态则置该进程为可调

2020-06-03 22:51:27 350

原创 07 linux011字符设备管理

1 与字符设备的大体交互过程(如UART)[1] 写操作IO 端口指令 |[0] V +---+ [1] 命令 +----------+ | |--------->|UART控制器|[2] 命令接收与执行 |CPU| | | | | [3] 中断 | | +---+<---------+----------+ |[4] V中断处理程序[2] 读读一般由字符设备主动发起中断触发CPU调用相

2020-06-03 22:50:39 364

原创 06 linux011块设备管理

1 与块设备交互的大体流程(如硬盘)IO 端口指令 |[0] V +---+ [1] 命令 +------------+ | |--------->|块设备控制器|[2] 命令接收与执行 |CPU| | | | | [3] 中断 |块设备存储器| +---+<---------+------------+ |[4] V中断处理程序2 与块设备交互涉及到的抽象层次linux 0.11 没有直接跟块设备的交

2020-06-03 22:49:56 350

原创 05 linux011中断

1 中断源此文将触发 CPU 引用 IDT 描述符的方式总结为两种。[1] CPU执行 int 一类指令。[2] CPU在完成某条指令的执行后, 接收/检测到某中断(或异常)信号时。2 中断过程CPU 执行 int 指令或检测到中断信号时具体引用哪一个 IDT 描述符呢。[1] CPU执行 “int n” 指令时将其操作数 n 用作引用IDT描述符的索引, 即引用 IDT[n]。[2] IDT[0…16]是 Intel 在硬件层面为 CPU 分配的 IDT描述符, 即当CPU检测到这17个中断

2020-06-03 22:49:07 343

原创 04 linux011缓冲区

1 缓冲区位置+-------------+========+------------+-------------+| OS routines | BUFFER | [RAM-DISK] | MAIN_MEMORY |+-------------+========+------------+-------------+0x0 end 4Mb 16Mbend 是操作系统内核程序内存段结束位置。linux0.11 引导程序为

2020-06-03 22:48:15 346

原创 03 linux011文件系统(minix).md

1 磁盘上的文件系统结构+------+------+-------------------+---+-------------------+| boot |supper|minix file system 1|...|minix file system x|+------+------+-------------------+---+-------------------+引导块 - 包含分区表,可包含引导程序;分区表描述了各文件系统起始位置,结束位置等信息。超级块 - 各分区文件系统结构信息

2020-06-03 22:47:19 496

原创 02 linux011内存管理

CR0.PG=1将开启内存页机制,由CR3保存内存页机制相关数据结构体的内存地址。1 页表目录页表目录用于索引页表,在页表目录中用于索引页表的信息被(此文)称为页表目录项。+---------------------+|page table dir item 0|+---------------------+|page table dir item 1|+---------------------+| ... |页表目录项|31

2020-06-03 22:45:27 305

原创 01 linux011 引导和保护模式的初始设置

1 引导程序位于引导块的引导程序由 BIOS 加载到实模式下的[0x7c00, 0x7e00)内存段,若检查到引导程序最后两个字节为0xAA55则跳转执行[0x7c00, 0x7e00)内存段的引导程序。引导程序的主要工作是将后续操作系统程序拷贝到内存中。linux0.11 引导程序执行完毕后,内存分布大体如下。0x00000|----------------------------------| | 1KB RAM | |

2020-06-03 22:43:56 354

原创 一种在C语言中用汇编指令和 System V ucontext 支撑实现的协程切换

1 实现内容此文在看了 python yield 和 yield from 机制后,觉得这种轻量级编程技术在小并发场景下优雅可爱,在大并发场景下较进程或线程而言能突破资源瓶颈,实在令人忍不住而想在C语言中实现一个。然后经过一些学习后,此文就在 Linux 上用C语言实现了一个。目前具体包括[1] co_yield() —— 类似 python 的 yield,用于协程切换;[2] co_s...

2020-03-04 17:55:29 4156

原创 一种添加汇编指令支撑协程上下文及协程切换的实现

1 操作栈的数据结构体typedef struct asm_cctx_s { void **sp;} cctx_s;这个数据结构体来自 https://github.com/ramonza/libcoro。除 cctx_s 的可扩展性外,此文也非常喜欢其使用二级指针 sp 操作栈的方式,所以将其延用。2 协程上下文切换协程切换涉及相应寄存器的备份、跳转地址的安排等内容,凡是需要...

2020-02-11 19:09:20 7235

原创 一种在C语言中用 System V ucontext 所实现协程切换的优化

序前段时间,此文的电脑被人霸占做PPT去了。是的没错,霸占。那些夜晚只能喝着一碗醪糟水并尝试阅读李娟的散文。随着翻页篇章稍厚,再一次陷入对其文字的带着羡慕的欣赏之中。这些与描述内容具天生契合性的文字竟间接地鼓舞着心灵不为小事而偏离善良。这些由一针一线编织在箱底的珍宝,真令人赞叹。于是想到优化“一种在C语言中用 System V ucontext 实现的协程切换”的事。此种激励或许是此文对这个...

2020-01-14 23:18:53 6962

原创 一种在C语言中用 System V ucontext 实现的协程切换

A coroutine switching implement by ucontext in C-language1 python 协程原理尝试了解上篇文字“一种在 python 中用 asyncio 和协程实现的IO并发”中协程的基本原理。python 协程可基于其生成器实现,其生成器由 yield 和 yield from[^1] 标识。1.1 yield在实例化对象时,python ...

2020-01-01 23:41:46 6937 3

原创 一种在 python 中用 asyncio 和协程实现的IO并发

1 此篇文字围绕的主题基于IO驱动程序[^1],本机从IO读取或发送数据——读/写IO的有效方法。+--------------------------+ +----+| | +==>| || +--+ +---+ | | +----+ 1| +-----+ | | | I...

2019-12-15 15:30:34 7156

原创 haribote&&linux0.11并发笔记整理抽取

1 初识并发“在一段时间内,多个进程(线程)都被CPU执行”是并发初期更被广为流传的定义。跟众多其他计算机技术一样,并发也得到了扩展。此文先从CPU进程特例层面认识并发。p1 -=. =. =. =. =. -.p2 -. =. =. =. =. =- | <--concurrency--> |p1,p2: 进程1,进程2;= : 进程...

2019-11-06 23:08:33 6772

原创 haribote&&linux0.11内存地址转换笔记整理抽取

haribote和linux0.11由Intel 80x86 CPU执行,程序需契合该CPU对外提供的编程机制才能使用其相应功能。此文意在总结下x86 CPU对外提供的内存地址转换机制。1 逻辑层面总结CPU执行内存中可执行程序过程|--------| 0____________ |----------------------|| PC | ------------> | ...

2019-11-06 23:06:47 6780

原创 haribote&&linux0.11引导程序阅读笔记整理抽取

工作日每晚平均两小时周末全勤的那段日子是此文阅读h&&l源码的全部生命力,一些见过这样我的人可能会说他除此外似已无其它爱好。此文也很绝望啊,因为h&&l只有少数模块仅会花一两晚时间,其余需要此文花一周,两周,三周……时间的阅读量,所得到的以注释为主的笔记也普遍繁长。此文若在一些人面前主动提到这些笔记,会预先重复承认其当真繁长的话语,因为他们当真繁长啊。就像网上曾...

2019-11-06 23:01:44 6800

原创 haribote && linux0.11源码阅读笔记

在碚大时此文曾想象,若类似haribote&&linux0.11的作者从小被熏陶的核心是文字或医术,他们应该也会成为真正出色的诗人或医生。宇宙间渺小的清晰之物是否都跟他们那样源于健康 深厚底蕴的素养相关?还能看见窗外绿叶翻动后花苞的生长就代表着此文对这种气息还持续着迷恋。这种想象和迷恋是在 阳光纯粹穿透力强 星月明亮温婉 还没有真正开始讨生活 同时坚信着与众不同的自由并拥有那么多期...

2019-09-22 20:19:45 7200

原创 haribote系统调用 工程管理及应用程序阅读注释

haribote;OSASK;系统调用;工程管理;Makefile;make;应用程序ipl09.nasasmhead.nasbootpack.c(HariMain)dsctbl.cmemory.cint.ctimer.cfifo.ckeyboard.cmouse.cgraphic.csheet.cwindow.cfile.cmtask.cconsole.cnaskfunc.nas(tek.c)bootpack.cbootpac

2019-09-15 15:18:28 8061

原创 haribote bootpack.c 主任务程序代码阅读注释

haribote;OSASK;bootpack.c;HariMain;主程序;主任务程序/* HariMain, * haribote OS C主程序入口,从asmhead.nas中跳转而来。*/void HariMain(void){ /* 以 struct BOOTINFO 类型访问 ADR_BOOTINFO * 内存段即获取显卡信息参数所在内存段基址。*/ struct BOOTINFO *binfo = (struct BOOTINFO *) ADR

2019-09-08 14:23:52 7214

原创 haribote naskfunc.nas 汇编函数接口程序阅读注释

haribote;OSASK;naskfunc.nas;汇编指令;; naskfunc.nas, 将只能用汇编语句实现或更益用汇编语句实现的功能; 通过汇编子程序提供给C程序调用,所有的参数都通过栈传递。现在常; 用的编译会适当选择用寄存器传参, 都通过栈传递参数可能是作者根; 据当时需要而改写gcc 编译器所得到的结果。该编译器在将 C全局标; 识符转换为汇编标识符时,会自动在C全局标识符前加'_'前缀。

2019-09-08 10:52:25 7400 3

原创 haribote dsctbl.c 设置GDT和IDT程序阅读注释

haribote;OSASK;dsctbl.cvoid init_gdtidt(void);void set_segmdesc(struct SEGMENT_DESCRIPTOR *sd, unsigned int limit, int base, int ar);void set_gatedesc(struct GATE_DESCRIPTOR *gd, int offset, int selector, int ar);

2019-09-07 22:08:41 7297

原创 haribote console.c 命令行窗口交互管理程序阅读注释

haribote;OSASK;console.c;命令行窗口交互;终端窗口交互;/* console.c */console_task();cons_putchar();cons_newline();cons_putstr0();cons_putstr1();cons_runcmd();cmd_mem();cmd_cls();cmd_dir();cmd_exit();cmd_start();cmd_ncst();cmd_langmode();cmd

2019-09-07 19:51:50 7014

原创 haribote mtask.c 多任务管理程序阅读注释

haribote;OSASK;mtask.c;多任务管理;extern struct TASKCTL *taskctl;extern struct TIMER *task_timer;struct TASK *task_now(void);struct TASK *task_init(struct MEMMAN *memman);struct TASK *task_alloc(void);void task_run(struct TASK *task, int level, int

2019-09-07 18:24:47 7041

原创 haribote file.c 文件读取程序阅读注释

haribote;OSASK;file.c;文件读取;void file_readfat(int *fat, unsigned char *img);void file_loadfile(int clustno, int size, char *buf, int *fat, char *img);struct FILEINFO *file_search(char *name, struct FILEINFO *finfo, int max);char *file_loadfile2(int

2019-09-07 17:51:43 6900

haribote_read.zip

30天自制操作系统产物haribote OS读物——注释笔记,2019年6月底至2019年9月中旬,每晚平均两小时周末全勤。共享共讨论、纪念之。

2020-02-12

linux011_read.zip

2019年4月底至2019年9月初阅读linux 011的注释笔记,平均每晚两小时周末全勤的读物。共享共讨论之、纪念之。

2020-02-12

BIOS int中断调用手册

包含BIOS int 1ah-10h中断调用的参数说明,也是从别处下载而来,上传至此为方便以后查阅。

2019-03-05

一个简单C程序的编程简记

此篇文字没有包含完成编程任务的所有过程和细节,也就是说可大胆忽略或脑补不清晰或断节之处。这篇文字记录的是 第一次从头到尾构建C程序工程过程中所涉及到的 有助于程序更合理的一些技术或编程规范。在这篇文字中,一些在实践中会花费很多精力和时间的编程项,在用表达时却发现只需一两句朴素文字就可将其概括干净,苍白简单得甚至显得有些没必要提上书面;还有一些经过多次修改的文字,到最后也显得不是那么准确,像灯油快要耗尽,天还未完全亮一样。

2019-02-25

绣花枝&&src;

内容主要包括。 (1) 粗略理解内存元器件。 [1] 1位内存电路读写原理。 [2] 用1位的DRAM内存电路粗略组成16字节内存。 [3] 用16字节内存粗略组成64字节内存)。 (2) 内存地址空间和虚拟内存地址空间。 (3) 信息被CPU处理的基本思路。 (4) 编写一个C程序运行-粗略体会程序被CPU执行的过程。

2019-02-25

后街镐挖锄

文档包括内容。 (1). C函数类型转换相关。 [1] 理解C函数类型转换。 [2] C函数类型转换使用不当会导致程序运行出错的场景。 [3] C程序调用未声明函数,一种无约束的隐式函数类型转换。 (2) 大小端-字节序问题。 (3) 权衡使用寄存器指针变量。

2019-02-25

一个简单C程序的编写简记

此篇文字没有包含完成编程任务的所有过程和细节,也就是说可大胆忽略或脑补不清晰或断节之处。这篇文字记录的是 第一次从头到尾构建C程序工程过程中所涉及到的 有助于程序更合理的一些技术或编程规范。在这篇文字中,一些在实践中会花费很多精力和时间的编程项,在用表达时却发现只需一两句朴素文字就可将其概括干净,苍白简单得甚至显得有些没必要提上书面;还有一些经过多次修改的文字,到最后也显得不是那么准确,像灯油快要耗尽了,天还未完全亮一样。

2019-02-16

pxtcxyczjh-SourceII

读《系统程序员成长计划》14-19页,在通用前提下用C语言实现简单双向链表的“求和与最大值”、“字符串转大写字符串”,以练习程序设计的方法。

2015-09-21

pxtcxyczjh-SourceI

读《系统程序员成长计划》前14页,用C语言实现简单双向链表的“封装”、“通用”、“回调”功能,以练习程序设计的方法。

2015-09-18

斗to_mmry1k

在学习《自己设计制作CPU与单片机》这本书时,根据书中的线索在quartus II 13.1下斗出来1k存储器(非IP核),再结合1k存储器说明内存对齐。

2015-07-20

32位限位浮点数乘法器

在学习《自己设计制作CPU与单片机》这本书时,根据书中的线索在quartus II 13.1下斗出来的32位限位浮点数的乘法器(一样的步骤设计其除法器)。

2015-07-12

to_faddsub32

在学习《自己设计制作CPU与单片机》这本书时,根据书中的线索在quartus II 13.1下斗出来的32位限位浮点数的加减法器。

2015-07-10

to_mdivider

在学习《自己设计制作CPU与单片机》这本书时,根据书中的线索在quartus II 13.1下斗出来的4位乘除法器(依据乘除法步骤)、8位乘除法器(乘除法行阵列)、8位通用乘除法器(可进行无、有符号数的运算)。

2015-06-26

通用计数器

在学习《自己设计制作CPU与单片机》这本书时,根据书中的线索在quartus II 13.1下斗出来的行波计数器,通用计数器和标志线。

2015-06-21

to_addsuber

阅读书籍《自己设计制作CPU与单片机》,在quartus II 13.1下设计的加减法器。

2015-06-17

to_registers

在quartus II 13.1 平台下设计的暂存、串入串移、并入右移、并入左右移寄存器,属于个人在数字基础方面的学习。

2015-06-12

OSASK源码注释II

第一遍读OSASK时是跟着《30天自制操作系统》书本走的,第二遍就阅读了OSASK第30天最后一个版本的源码,然后马马虎虎注释了一番(作为个人的学习笔记)

2015-05-11

汇编编译器

微软的汇编编译器,版本为5.0 --- masm5.0

2014-11-21

dos模拟器(DOSBOX)和debug

Win7 64位的虚拟DOS下没有提供debug,可用dos模拟器(DOSBOX)和debug来使用debug工具,我用来学习汇编。

2014-11-18

Crystal Oscillator Circuit Design

晶振的等效电路;晶振振荡器的设计;晶振振荡器的起振问题及频率稳定的措施。

2014-10-28

晶振振荡器电路的设计

晶振振荡器电路的设计,英文版。In this application note we shall discuss our recommended crystal oscillator circuit, explain each component in the circuit and provide some guidelines on selecting values for these components. Finally, we shall give a few precautions to take in order to avoid in-stability and start-up problems.

2014-10-28

ANSI C九九标准

Programming languages — C,INTERNATIONAL STANDARD ©ISO/IEC ISO/IEC 9899:1999 (E)。ANSI C99

2014-10-21

《Linux C编程一站式学习》

《Linux C 编程一站式学习》---宋劲杉 修订0.7 2009.4.24版本。本书一共分为3部分“C入门”、“C本质”及“Linux系统编程”。已经粗糙的看完第一遍,粗糙的做了笔记,粗做的用Debian Linux做了些编程练习。

2014-08-16

《跟我一起写Makefile》--陈皓

我还没有读过这本只有70多页的小册子。目前写点简易的Makefile还是可以,留着以后需深入用Makefile的时再参看。先藏着

2014-08-06

《The Standard C Library》

GNU工程有一个完全实现的C函数库,另一个来源是由P.J. Plauger 写的书《The Standard C Library》。压缩包内涵djvu和pdf两个版本,djvu文件可在linux下或则在windows下用特殊的软件查看。

2014-06-15

《给C 程序员的便筏》

《C常见问题集》推荐的书籍-0----《给C 程序员的便筏》

2014-06-15

《 the elements of programming style》

《C常见问题集》提到的C风格参考书籍,只有3页。可当做翻译或者C风格参考的文档。

2014-06-15

《印第安山风格指南》

《C语言常见问题集》中提到的C风格参考。

2014-06-15

正则表达式或通配符匹配的代码

先用如“7-Zip”解压软件将regexp.shar.Z解压为regexp.shar。再将regexp.shar拷贝至Desktop Linux下,在命令行终端用 sh regexp.shar解压它,然后就可以看到各文件了。

2014-06-15

《线性代数应该这样学》

刚学完第一章,感觉还不错。据说跟传统的《线性代数》教材编写的思路不一样。

2014-06-10

Grap-A Language User Manual

Jon L. Bentley和Brian W. Kernighan共同创建了Grap语言,Grap是一种用图形来描述数据的语言。它拥有自动生成标签、坐标轴和向量表的能力,还提供了for、if语句及宏来促进可编程性。在Linux系统下,grap程序的运行命令grap grapfile | pic | torff > junk需要改为grap grapfile | pic | groff > junk

2014-04-08

The Secret

下载《The Secret》这本书的时候顺带还包含了USART 向PC发送数据等STM32的资料,网友真是热心,不过这里只包含《The Secret》一书。哈哈

2014-03-21

《Cortex-M3 STM32F10XXX参考手册》

《Cortex-M3 技术参考手册》英文版,包含core-peripheral如NVIC,《STM32F10XXX参考手册》中文版,包含其它外设如GPIO。比我之前下载的参考手册都要完整。 STM32F10XXX编程必备滴~~

2014-03-11

mdk-keil破解软件

用于破解mdk-keil或者c51-keil。已测试,可用。

2014-02-18

The AWK Programming Language

《The AWK Programming Language》是三巨头Aho&Weinberger&Kernighan所著的书本,讲解AWK语言的。

2014-02-14

more progamming pearls,编程珠玑续

《more progamming pearls,编程珠玑续》是继《progamming pearls,编程珠玑》的后续书籍,只是有的地方不是很清晰。

2014-02-07

The C Programming Language

《C圣经》The C Programming Language,英文版。也是在CSDN中下载的,不知内容是否齐全。适合稍有C功底的人读。

2013-12-21

PlayPianoIII

将android系统移植到ARM11 Mini6410后的一个简单的钢琴游戏(PlayPianoIII)开发。

2013-10-07

51单片机串口通信程序实现

使用串口调试助手观察51单片机keil环境实现的串口通信程序。含串口调试助手和USB驱动。

2013-09-06

C++ BOOST::Asio库网络编程源代码

不一下子应用MFC等界面,以直观易懂的控制台程序展现网络编程“服务端”-“客户端”是怎么运行的。最适合初学者。

2013-09-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除