一直感觉其实Linux系统或者生态是技术圈中高大上的东西,也是高手必备的技能。只可惜,我自己这方面的技能还是很肤浅。充其量,我只是装好了系统用了一下而已,关于什么原理或者优劣我的确是没有什么太多的心得。不过,随着时间的推进,倒是很多曾经在这平台上的一些体验给我的工作或者生活提供过一些灵感。但是,很不成系统。因此,我决定还是把这部分做一个梳理,从最简单的起步,逐渐整理出一份方便我自己查阅的笔记出来。这或许对后续我的工作或者生活都会有一些帮助。

         自然,我写得东西只是自己的学习流水账而已,算不得什么教程。

         最近想了解一下最基础的Linux内核的机理,从别人的书籍开始。里面介绍了汇编语言的用法以及一些基础,关于我自己觉得有用的我整理记录几条。


  1. Linux用到了as86和ld86两个程序,一个是汇编器,另一个是链接器。现在我用到的很多开发环境中有一个as和ld,跟这两个软件应该有类似的功能;
  2. as86和ld86的开发者是MNIX-386的主要开发者之一Bruce Evans开发的;
  3. as86的基本语法: as86 [选项] –o obj src,大致的语法跟我现在多少熟悉的gcc类似;
  4. 伪操作符语句:汇编器使用的指示符,通常不产生任何代码;

  1. 既然不产生代码,唯一的作用应该就是指示;
  2. 相关的指示一般是什么含义呢?做代码分析的时候,这部分需要明确一下;
  3. 我从第5条的部分相关描述中看到,其中的一个作用是控制数据存放的段。而这种类似的功能,在我熟悉的平台中的C代码中通常是由一些pragma的指令控制。

  1. 汇编器产生的目标文件通常分为三个区,.text、.data、.bss。其中,.text是已经初始化的段,一般包括执行程序和只读数据;.data是初始化的可读写的数据;而.bss是没有初始化过的数据。但是,.bss的数据通常会在目标文件链接成一个程序之后,程序运行的初期初始化为0。这是我现在熟悉的嵌入式平台中的startup的工作。

以上是关于汇编的一部分基础的知识小结,后面相关的知识增补我很可能会从代码的直接分析理解开始。