30天自制操作系统之

Wesley13
• 阅读 648

从计算机结构到汇编程序入门

最近受知乎影响,一股脑热买了这本《30天自制操作系统》的书,该书是日本一位大牛写的。看了前20页,还是有些东西可以琢磨的,虽然接触计算机也7年了,惭愧在于大多都只停留在想法,而未动手去好好实践,大忌大忌。写这个系列章节也是希望通过这样的方式来督促自己。工作几个月的感受其实就是:凡是能够追求百分百的一定不能懈怠,不能因为你已经取得第一而放弃继续追求完美。两年前跟导师辩论过,当时我还是很不理解,“都已经达到第一了,为什么还要去花十倍的努力去做的完美”,这里再次感谢导师的教诲。一鞠躬。

废话多了,言归正传。首先根据书中第一天的任务下载个二进制编辑器,https://www.vcraft.jp/soft/bz.html,这里直接放工具在百度云盘里。https://pan.baidu.com/s/1I1FoGeB-BRLFkbX3Pv8fnA

    书中介绍该工具用于对二进制进行编辑,可以生成.img文件。之前搞KVM、OpenStack就经常跟.img文件打交道,这次终于可以试一试自己写一个.img了(nice脸)。

   以下代码是该书作者自己写的汇编编译器做的一个.img文件的生成脚本。该代码主要是节省手工编写17万行的二进制(书中提到),这也是编译器干的事。至于汇编代码中每个语句的含义,需要后续章节在体会体会才行。

; hello-os
; TBA=4

    DB  0xeb, 0x4e, 0x90
    DB  "HELLOIPL"
    DW  512
    DB  1
    DW  1
    DB  2
    DW  224
    DW  2880
    DB  0xf0
    DW  9
    DW  18
    DW  2
    DD  0
    DD  2880
    DB  0,0,0x29
    DD  0xffffffff
    DB  "HELLO-OS   "
    DB  "FAT12   "
    RESB  18
    
; 程序主体

    DB    0xb8, 0x00, 0x00, 0x8e, 0xd0, 0xbc, 0x00, 0x7c
    DB    0x8e, 0xd8, 0x8e, 0xc0, 0xbe, 0x74, 0x7c, 0x8a
    DB    0x04, 0x83, 0xc6, 0x01, 0x3c, 0x00, 0x74, 0x09
    DB    0xb4, 0x0e, 0xbb, 0x0f, 0x00, 0xcd, 0x10, 0xeb
    DB    0xee, 0xf4, 0xeb, 0xfd
    
; 信息显示部分

    DB  0x0a, 0x0a
    DB  "hello, world"
    DB  0x0a
    DB  0
    RESB  0x1fe-$
    DB  0x55, 0xaa

; 启动区以外部分的输出

    DB    0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
    RESB    4600
    DB    0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
    RESB    1469432

根据书中的教程,第一个操作系统的hello world可以输出运行了。(nice)

30天自制操作系统之

点赞
收藏
评论区
推荐文章
为什么我们没有自己的编程语言?
应该要明确一个问题就是在中国会赚钱的公司不一定是厉害和令人尊敬的公司。其实在外面也差不多,只是外面市场环境更好,你能做出好东西,养活自己有点发展的问题不大。编程语言其实说白了也是计算机的一个工具罢了,你
马丁路德 马丁路德
3年前
h5 - 总结及踩坑记录
这是近期的一个h5项目,由于某些原因,预览地址不能放出来。不过这不是重点,没有demo不就可以好好看文章了吗哈哈哈~文中提到的pixi是pixiJs,精灵是pixiJs中的概念。阅读本文假设你已经知道了这些东西,不过这在本篇文章中并没有太多关于这个库的内容觉得这篇文章有帮助到自己,就让它去收藏夹吃灰;觉得没用或觉得写的不好的,可以留下
Wesley13 Wesley13
3年前
1.1 操作系统的目标和作用
1.1.1操作系统的目标1.有效性(1)提高系统资源利用率对于计算机,一般来说,系统资源是一定的,在未配置OS的计算机系统中,计算机的资源不能被充分利用,这就造成了计算机系统资源的浪费。OS是管理计算机硬件和软件的系统软件,在配置OS后,OS会对计算机系统资源进行管理,使计算机系统资源能够有序的,忙碌的使用,而不是让其系统资源无序的
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
37岁程序员失业投500份简历就3次面试猎头:超35岁不要
37岁程序员失业120天,投了500份简历就3次面试,猎头:超过35岁都不要在职场中,都说互联网吃青春饭,而35岁就是一个门槛,一旦到了这个年龄找工作都非常难,甚至被公司裁员的风险都很大,其实一个现象也不难发现,互联网公司几乎都是年轻化,高龄员工很少,这也算行业趋势。最近,一位程序员在职业论坛留言,分享了自己面试的经历,“37岁程序员失业120天,投
Wesley13 Wesley13
3年前
Java面试系列01(Java类加载、双亲委托机制、Java优点)
决定写一系列这样的文章吧,这一类的文章并不会探究到Java的底层知识,这个系列的文章(虽然我之前的坑还没填完。。。不过还是想写一下)可能会和之前写过的文章一些知识重复,编程大神如果想回忆一下也可以看一看。小白的话,不建议看。因为我不会写的通俗易懂,大部分是已经被大多数人认同的定义,如果你对你的理解力很有自信,那本系列文章对你会很有用(其实,小