许久之前就有写一个tiny的操作系统的打算,但时间和精力关系,想法一直没有成为最终的代码。操作系统的构建本身是个系统工程,门槛较高,需要多方面的知识,往往几行代码背后是厚厚的几本书才能说清的。之前为了写操作系统也是四处搜集资料,看了许多书,没有啥经验,花费了许多时间,到头来也没什么成果。因此,开个帖子,一是记录自己写这个os的过程,分享下经验;另外,也是抱着边写边学的态度,想着通过动手实践来跨过这个门槛。

      下面是自己整理的一些资料,后面可能会用到。本文用到编译平台是64位的linux,使用bochs来调试。编写操作系统过程中需要混合使用汇编和c语言,汇编语言使用的是AT&T语法,这也是gnu as所支持的。

【资料】

1,cmu的操作系统公开课程,里面有两个demo(jos,xv6),同时提供了关于x86架构、汇编语言等资料: https://pdos.csail.mit.edu/6.828/2017/
2,gcc的官方手册: https://gcc.gnu.org/onlinedocs/gcc-7.2.0/gcc/
3,gnu as的手册:https://sourceware.org/binutils/docs/as/
4,gnu ld的手册,重点是链接脚本:https://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_mono/ld.html
5,AT&T汇编:http://csiflabs.cs.ucdavis.edu/~ssdavis/50/att-syntax.htm
6,ELF格式,这是linux系统中可执行文件所使用的格式,也是as,gcc,ld所支持的:
      http://www.cs.northwestern.edu/~pdinda/icsclass/doc/elf.pdf
      http://learn.tsinghua.edu.cn/kejian/data/77130/138627/html-chunk/ch18s05.html
7,gnu make:https://www.gnu.org/software/make/manual/make.html
      http://mrbook.org/blog/tutorials/make/
8,参考书:《深入理解计算机系统》《程序员的自我修养》《LINUX内核完全剖析:基于0.12内核》《x86_x64体系探索及编程》《x86汇编语言 从实模式到保护模式》 

diy操作系统 0:万事开头难的更多相关文章

  1. 万事开头难——Cocos2d-x学习历程(一)

    万事开头难,不知该从哪里开始,不过既然要学习一样新东西,那就从了解它开始吧... Cocos2d-x是一个通用平面游戏引擎,基于一个同样十分著名的游戏引擎Cocos2d-iPhone设计,Cocos2 ...

  2. 一个想法照进现实-《IT连》创业项目:万事开头难

    前言: 之前是一个想法,现在已经进入创业阶段,所以这个系列的标题,改了. 众筹的事在今天也停止了. 7-9号会在深圳龙岗布吉参加一个风投对接的活动,今晚(6号)会出发. 因为:在深圳会呆几天,而且这个 ...

  3. 万事开头难 && 实践出真知

    实践出真知,真是千古不变的真理. 前几天在顺手做一个万年历项目,实现了用TFT屏显示实时时间,日期,温度,和按键设置时间,能在特定时间显示特定的话语在显示屏上面.其实这个项目现在想想还是挺简单的.我的 ...

  4. 万事开头难,用HTML写的第一个界面,收获颇多

        很开心跟了叶老师学习和做项目,基础不好,前期他会帮你安排好学习路线和计划.前期没有项目做,叶老师先让我先学习jQuery,给我推荐了一些网站,叫我一边学习,一边写博客.其实很早就有想写博客的想 ...

  5. BPM7.5.1升级细节,万事开头难

    背景:Linux5.9,BPM 7.5.0集群环境,内置WAS ND7.0.0.17 详情见上图 故障现象:升级BPM 7.5.1集群环境 1,按照 IBM 信息中心步骤,升级BPM需下载相应补丁 包 ...

  6. RF+Appium框架自动化测试系列一之(Mac下Appium环境搭建)万事开头难

    消失了3个月,有一段时间没来园子更新博客了,各位看官见谅哈哈,消失是因为刚换了工作环境没外网,好多笔记没能及时的记录分享,以后有时间慢慢补上吧,这段时间主要接触了移动端app的自动化测试,公司为了快速 ...

  7. 大白话Vue源码系列(01):万事开头难

    阅读目录 Vue 的源码目录结构 预备知识 先捡软的捏 Angular 是 Google 亲儿子,React 是 Facebook 小正太,那咱为啥偏偏选择了 Vue 下手,一句话,Vue 是咱见过的 ...

  8. ACM数论之旅1---素数(万事开头难(>_<))

    前言:好多学ACM的人都在问我数论的知识(其实我本人分不清数学和数论有什么区别,反正以后有关数学的知识我都扔进数论分类里面好了) 于是我就准备写一个长篇集,把我知道的数论知识和ACM模板都发上来(而且 ...

  9. 【C#】万事开头难(二)&lt;机房重构&gt;

    前言 机房将要进行完了,之所以仍然使用这个题目,是由于我想告诉自己.无论面对多么未知的事物.不要害怕,去做就好.在这么多天的机房重构中,发现了好多问题,也攻克了好多问题,今天,就把我解决的问题分享给大 ...

随机推荐

  1. python3 系统监控脚本(CPU,memory,网络,disk等)

    #!/usr/bin/env python3 #create at 2018-11-30 'this is a system monitor scripts' __author__="yjt ...

  2. Windows平台下Java,tomcat安装与环境配置

    问题描述:在Windows下面做Java web相关的项目的时候,Java和tomcat是基础,这里记载一下Java环境的配置以及tomcat的安装和配置. 使用工具:Windows.jdk安装包.t ...

  3. 使用 If-Then-Else 逻辑进行分支

    If-then-else 逻辑看似简单,功能却十分强大,它可以根据不同条件执行不同的操作.If-then-else 逻辑可理解为:如果某个条件为 true (IF),则执行某个操作:如果条件为 fal ...

  4. php 验证中文和部分自定义符号

    $str = '54787dDp中s-:"'; $rule ="/^[\x{4e00}-\x{9fa5}A-Za-z0-9`·!!@#$\¥%…^&*(())\-+=“.\ ...

  5. HBase-概述

    一种分布式.可扩展.支持海量数据存储的 NoSQL 数据库. 逻辑上,HBase 的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列.但从 HBase 的底层物理存储结构(K-V)来看,HB ...

  6. HTML Button自动刷新页面的问题

    一.问题<button class="am-btn am-btn-default am-btn-xs am-text-secondary" data-id="99& ...

  7. VS中显示行号

    Tools=>Options=>Text Editor=>All Languages=>General:line  numbers

  8. 006-多线程-集合-Set-ConcurrentSkipListSet

    一.简介 ConcurrentSkipListSet是线程安全的有序的集合,适用于高并发的场景.ConcurrentSkipListSet和TreeSet,它们虽然都是有序的集合.但是,第一,它们的线 ...

  9. QML异常:Cannot anchor to an item that isn't a parent or sibling

    翻译: 无法定位到不是父项或同级项的项 QML的anchor必须定位父级对象或者同级对象,不能定位到其他如:同级对象的子对象

  10. (十七)jdbc(Java Data Base Connectivity,java数据库连接)基础使用

    一.JDBC相关概念介绍 1.1 JDBC介绍 SUN公司为了简化.统一对数据库的操作,定义了一套Java操作数据库的规范(接口),称之为JDBC.这套接口由数据库厂商去实现,这样,开发人员只需要学习 ...