自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小灰笔记

学习笔记,仅用于自我参考回忆!

  • 博客(18)
  • 收藏
  • 关注

原创 508_汉明码权重

汉明码之前使用非常少,印象中第一次看到的时候我还在北京。那时候,工作变动但是自己感觉有一些迷惑,因为不觉得自己的能力有什么竞争力。自己之前的工作经验在PowerPC平台,而那时候我自己的的工作又是这个。为了谋生计,觉得这个平台的开发得一点点自己补上。那时候网上买了一本书,慢慢自己去啃读。就是从那本书,我看到了汉明码。当时自己看不懂,直接问了自己老同事。我都不记得当时给了我什么答案了,总之这个还是没弄明白是干啥的。最近再次遇到了,不过这次是通过看别人的代码。看到别人写了一个计算数值中数值为1的比特位,

2021-01-27 21:21:06 404

原创 507_linux内核学习_write函数小结

全部学习汇总:https://github.com/GreyZhang/little_bits_of_linux 代码中有一个printf函数的实现,这里面是通过write函数来实现的,而这个write又用到了vsprintf函数。关于vsprintf函数的返回值: 这个函数的返回值其实是写入到printbuf中的字节数。 而write,其实是写在unistd.h头文件声明的库文件。这个函数的功能是想文件中写入信息,而第一...

2021-01-13 22:26:12 560

原创 506_linux内核学习_sprintf函数分析

全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux 前面看了vsprintf的实现,在代码中看到这个函数经过又一层封装变成了sprintf。之前看vsprintf的时候,其实看得也有点糊涂。其实,结合这个代码实现倒是有点理解了这个使用方式。 其实,vsprintf的部分参数确定其实正好是通过va_start来实现的。在vsprintf中,通过va_arg类似逐个遍历的方式处理每个参数...

2021-01-12 21:19:51 935

原创 505_linux内核学习_关于C语言函数的可变参数

全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux 在main.c中有一个函数的定义如下: 关于代码,我做了一部分注释说明。这次用了SI来看代码,在语义分析解读上还是很有用的,这个1000块其实是还是很值的。 理解上面的代码,首先看看va_start。 相应的功能,我在代码中做了简单的说明。 接下来其实是需要vsprin...

2021-01-11 23:04:21 334

原创 504_linux内核学习___va_rounded_size宏分析

全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux 在分析linux的代码的时候,main最开始的时候调用了一个sprintf函数。这里面用到了一个宏__va_rounded_size。今天看看这个宏的功能。其实,在C语言的开发中基本上都是直接使用标准库中提供的这个功能。一般,stdarg.h文件中包含了相应的定义。我正在看的linux代码中也直接包含了这个文件,不过可能是一个精简版本的。...

2021-01-11 21:39:37 412

原创 503_linux内核学习_main函数分析

全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux 进入内核启动的正题,开始分析main函数。我手中这个比较原始的内核,main函数的内容还比较简单。具体如下: 再往下,是一个死循环。我觉得,一行行代码拆分分析,写在这里会比较麻烦。干脆,直接在代码中通过注释备注一下。 不做过多概述,直接把我写的注释增补过来。 看了下,其实跟我现在熟悉的...

2021-01-11 21:38:04 560

原创 502_linux内核学习_vsprintf函数的功能分析

全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux 开始看Linux内核的C代码,软件工程其实跟大部分的C工程有一定的相似之处,其实看一个工程基本上从main函数开始即可。而通常,分析的第一个文件则是包含这个函数的文件,这个在我看的这一份内核代码中就是main.c。 在看这个文件的时候,有一个静态函数sprintf,这个肯定是这在这个文件中用的。可以先看看在这个工程中的具体作用。...

2021-01-11 21:36:21 386

原创 501_linux内核学习_skip_atoi函数分析

全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux 最近在看一个老版本的Linux内核源代码,为了快速了解内核中的一些实现机制,快速过掉了几个汇编文件。现在开始看C文件,感觉舒服了很多。而且,由于代码实现的功能跟我平时的嵌入式开发相差很大,看起来还是很有意思的。 今天看代码的时候遇到了一个skip_atoi函数,其实基本上猜测的出来这个是字符转整形的意思。有点类似atoi这样的函数,不过...

2021-01-11 21:34:21 828

原创 500_C语言判断一个字符是否是数字

全部学习汇总: https://github.com/GreyZhang/c_basic 我之前使用C虽说很多年,基本都是嵌入式的驱动开发,各个库文件的使用极少。最近看的东西多少有一点点“跨界”,正好是一个复习之前基础知识的好机会。 Libc中有专门判断一个字符是否是数字的函数,在ctype的头文件中进行了声明。具体的声明如下: 我看linux的内核中也有一个相同的函数,而且从注释看就是为了不使用这个库函数而设计的。其实我有一...

2021-01-11 21:32:35 947

原创 499_C语言中的逗号运算符

全部学习汇总: https://github.com/GreyZhang/c_basic 虽然我现在已经做了多年的C程序员,但是现在看看别人的代码(我现在看的是Linux的内核代码)还是经常看到一些我一般不用的使用方法。总体看下来,倒让我觉得我的C语言还不算是很扎实。 今天通过实际的代码测试,看看逗号运算法的作用。 其实,大部分的功能基本上靠一段代码就可以测试说明,我写的测试代码如下: 9~12行的代...

2021-01-11 21:30:13 513 3

原创 498_linux内核学习_head.S代码略读

全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux 看了几段汇编代码文件,的确是有点头大。虽然,花时间还是可以看得懂,但是我觉得这么古老的硬件继续学习下去意义也不是很大。姑且,把这几个汇编文件当做故事来看看吧,对于现在的Linux开发者来说,相信他们也不会需要过多的时间来做这个。他们所做的工作,应该更加集中于C代码相关的工作吧。而这个,也是我真正感兴趣想要深入看看的地方。这是我看上一份汇编代码的一个想法或者...

2021-01-11 21:28:23 350

原创 497_linux内核学习_setup.S代码略读

全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux 看了几段汇编代码文件,的确是有点头大。虽然,花时间还是可以看得懂,但是我觉得这么古老的硬件继续学习下去意义也不是很大。姑且,把这几个汇编文件当做故事来看看吧,对于现在的Linux开发者来说,相信他们也不会需要过多的时间来做这个。他们所做的工作,应该更加集中于C代码相关的工作吧。而这个,也是我真正感兴趣想要深入看看的地方。 这段代码主...

2021-01-11 21:24:19 335

原创 496_linux内核学习_bootsect信息概览

全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux 大概看了一下这个文件的内容,其实我每行代码都看懂意义不大,只是学习了一下x86的汇编而已。这样,这个模块我知道了什么功能继续向下或许会好一点。这样,我能够更快接触到OS的设计,而C语言我也更加熟悉。 我觉得,注释是很多程序员高手代码中真正可以给我启发的地方。顺着代码,不管是注释还是什么关键标记,快速浏览一遍。 这...

2021-01-10 15:03:25 364 2

原创 495_linux内核学习_bootsect中的几个常量以及信息定义梳理

全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux 今天做下面这段代码的分析: 这些主要是一些信息定义,更多能够看到的是汇编代码的使用。 27行,其实可以类比C语言定义一些全局变量,但是这些其实都是段定义。 18~34行,其实可以理解为一个段的切换。应该是让编译器知道,分析到了这个地方的时候,接下来的信息存放到当前指定的分段。...

2021-01-09 11:48:00 279

原创 494_linux内核学习_0x7C00地址的选择原因

全部学习汇总:https://github.com/GreyZhang/little_bits_of_linux 正式开始看Linux的代码了,先从汇编开始。简单浏览了一下很头大,进而很高兴。这又不是什么工作,也没啥KPI,更没有工作中大跃进的要求。学习其实是一种享受,不会意味着问题很多,也就意味着我会有更多的收获。 先看一段汇编代码的开头,具体如下: 这一段代码基本上是注释,前面4行,说明了一个参数。感觉上,其实是想说SYS...

2021-01-07 20:21:43 719

原创 493_linux内核学习_Linux文件系统

全部学习汇总:https://github.com/GreyZhang/little_bits_of_linux 今天来看一下Linux的文件系统,就用我现在虚拟机里面安装的一个Ubuntu来做参考,看看从中是否还能找到最初Linux目录的痕迹。 首先,需要知道的是Linux采用了根文件系统,根目录在表达上就是一个/,而这个就是文件系统的起始位置。借用emacs切换到这个目录下,这样能够有一个很好的查看体验。 这是我现在安装的...

2021-01-04 20:29:41 320

原创 492_linux内核学习_使用python处理引导扇区程序并在Bochs中运行

全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux 现在对着教程开始工具链部分的学习了解,在汇编工具以及汇编语言讲解的过程中引入了一个测试代码: 我用了截图来展示这段代码,这样能够看到一部分语法信息。这一次暂且不去分析这段代码的实现以及功能,先来测试使用一下工具链。这是一段引导扇区程序,能够正常编译链接通过,并且在Bochs里面运行。 实现运行,首先需要实现编译链...

2021-01-02 11:10:22 424

原创 491_linux内核学习_在Bochs模拟环境中进行linux 0.12与主机之间的文件交换

全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux 按照教程做了一下测试,完成了一次从这个小巧的linux系统中提取文件的过程。感觉真是很有趣的一件事情。 类似的折腾,在linus当初的hack过程中肯定是没有的,他应该也不屑于去用windows吧?不过,可想而知,他当时完成了这么多的功能他的成就感以及欣喜的心情。 我手头拿到的两个linux的镜像,一个名称是FD一个...

2021-01-01 16:09:24 464

空空如也

空空如也

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

TA关注的人

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