摘要: 最近编程总想着参考一些有名的开源代码是如何实现的,因为要写链表就看了下linux内核中对链表的实现。 链表是一种非常常见的数据结构,特别是在动态创建相应数据结构的情况下更是如此,然而在操作系统内核中,动态创建相应的数据结构尤为频繁。由于不带数据域所以Linux中的这种链表是通用的,在如何情况下,只要 阅读全文
posted @ 2017-12-12 21:23 工藤-新一 阅读(4346) 评论(0) 推荐(0) 编辑
摘要: Glibc库里有个getopt用于解析命令行参数,挺方便的,下面的是别人从Glibc源码的获取的几个getopt相关的文件,已经将平台相关的修改掉,windows下可以调用,本来是要用没用到就没去看正确性,具体以最新的Glibc源码为准。 阅读全文
posted @ 2017-12-02 21:27 工藤-新一 阅读(2173) 评论(0) 推荐(0) 编辑
摘要: 想开始陆续研究一些感兴趣的开源代码于是先挑一个代码量短的来过渡一下,写这篇博客的目的是记录下自己学习的过程。Tinyhttpd算是一个微型的web服务器,浏览器与Web服务器之间的通信采用的是Http,所以一开始的切入点是HTTP协议,这里说一点如果有做HTTP通信的开发还是看一下RFC中对不同版本 阅读全文
posted @ 2017-11-12 21:57 工藤-新一 阅读(742) 评论(0) 推荐(0) 编辑
摘要: GCC 中的编译器堆栈保护技术 前几天看到的觉得不错得博客于是转发了,但这里我补充一下一些点。 GCC通过栈保护选项-fstack-protector-all编译时额外添加两个符号,__stack_chk_guard和__stack_chk_fail分别是存储canary word值的地址以及检测栈 阅读全文
posted @ 2017-10-29 20:53 工藤-新一 阅读(9220) 评论(0) 推荐(2) 编辑
摘要: 不久前读过《程序员的思维修炼:开发认知潜能的九堂课》,这本书里面有一段让我最印象深刻,它将职业分成了5个阶段。 从新手到专家的5个阶段 新手 高级新手 胜任者 精通者 专家 不久前读过《程序员的思维修炼:开发认知潜能的九堂课》,这本书里面有一段让我最印象深刻,它将职业分成了5个阶段。 从新手到专家的 阅读全文
posted @ 2017-10-29 11:38 工藤-新一 阅读(344) 评论(0) 推荐(0) 编辑
摘要: main之前初始化流程 本文分别介绍Keil调用的ARMCC以及ARM-NONE-EABI-GCC两个编译器在main之前的操作: Keil MDK启动文件 总结一下MDK的启动流程: 1.系统初始化,包括中断向量表的重新映射 2.加载RW段(.data段初始化) 3.加载ZI段(.bss段初始化) 阅读全文
posted @ 2017-10-28 19:48 工藤-新一 阅读(801) 评论(0) 推荐(0) 编辑