手写操作系统之helloOS
helloos第一天
1、准备工作
1.1 二进制编辑器
- Binary Editor
- HxD
- BZ(https://dwangshuo.jb51.net/201802/tools/Bz1621.lzh_jb51.rar)
1.2 虚拟机(VM)
- VMware Workstation Pro15
2、实际操作
2.1 二进制源码
**其余部位全部用00进行填充,一直到167FF0行,文件大小为 1474560(1440 * 1024字节)**文件格式保存为.img文件。
2.2 虚拟机安装
完成后,打开虚拟机,显示完成,如果有问题检查一下二进制文件是否输入正确。
3、理论学习
3.1 CPU(central process unit)
中央处理单元:本质上我们在电脑所做的所有操作都是在跟CPU做电信号的交换,而CPU只懂 开(ON)关(OFF)两种状态,可以用:
0000 0000 0000 0000 0000 0000 0100 1010 0010 这个32位的电信号的集合来表示1186这个整数
0000 0100 1011 0100 1111 0100 1111 0100 0010 这个32位的电信号集合来表示”BOOK“这个单词
电信号跟0/1对应起来,就能将电信号转换为而进行,二进制也可以转换为电信号,再将文字都编上号(文字编码),就可以建立文字与数字的关系,从而就可以把文字转换成电信号,让CPU来处理文章等多媒体数据。而计算机行业普偏使用十六进制来进行编写。
3.2 寄存器
常用的代表性8种寄存器,每个寄存器都是16位,可以存储16位的二进制数,8个寄存器全部加起来只有16字节,只能存储16字节的数据
- AX:累加寄存器
- CX:计数寄存器
- DX:数据寄存器
- SP:栈指针寄存器
- BP:基址指针寄存器
- SI:源变址寄存器
- DI:目的变址寄存器
还有CPU中8个8位寄存器
- AL:累加寄存器低位
- CL:技术寄存器低位
- DL:数据寄存器低位
- BL:基址寄存器低位
- AH:累加寄存器高位
- CH:计数寄存器高位
- DH:数据寄存器高位
- BH:基址寄存器高位
待更新。。。。
手写操作系统之helloOS相关推荐
- 手写操作系统(1)——HelloOS
让我们一起学习,由简单的Hello OS入手,最终码出一个属于自己的操作系统! 文章目录 **前言** Hello OS 引导程序 环境准备 下载源代码 编译操作系统 **流程** **编译** ** ...
- 手写操作系统(3)——开发环境建立与内核架构设计
之前介绍了简单的Hello OS以及代码是如何运行的.接下来我们会真正动手开始往我们的Hello OS中增加功能,但是--操作系统架构是一个极其精细的活.如老话所言"凡事三思而后行" ...
- 手写操作系统+文件系统开源啦
哈喽,我是子牙,一个很卷的硬核男人.喜欢研究底层,聚焦做那些大家想学没地方学的课程:手写操作系统.手写虚拟机.手写模拟器.手写编程语言- 今年是我创业的第二年,已经做了两个课程:手写JVM.手写操作系 ...
- 手写操作系统(4)——计算机是如何启动的?BIOS、GRUB、文件系统......
我一直有一个疑惑--计算机到底是怎么启动的? 而且似乎有点矛盾--要想启动,就必须运行程序,但是计算机没开机怎么加载和运行程序呢? 为了解决这个矛盾,工程师终于想出将一小段程序固化进一块存储设备,电脑 ...
- 手写操作系统1——在centos上安装bochs
1.准备环境 下载bochs,网址:https://sourceforge.net/projects/bochs/files/bochs/2.6.2/ 将文件复制到虚拟机或者服务器上,并解压. 具体步 ...
- 圆梦,手写了个操作系统
内功决定一个程序员的上限,这是每个程序员都知道的道理.程序员要修哪些内功呢:汇编.C语言.C++.操作系统内核- 这些修内功的课程,市面上少有人做,做相关课程的人,大多缺实战经验,所以课程偏理论,大家 ...
- 圆梦,手写了一个操作系统
哈喽,大家好,我是子牙 作为一个Java Coder,我的梦想是手写JVM.这个梦想在疫情来临的那年春节实现了,因为手写了JVM被图灵学院的周瑜老师认识,经周瑜推荐,离开阿里加入图灵学院成为一名讲师, ...
- 手写一个X86操作系统实战:从零开始构建一个U盘启动的自制操作系统(一)
这个标题可能有点大了:-) 一个操作系统至少应该有自己的文件系统和进程机制,不过我们的最终目标应该是这个~ 无论如何,看完本文,你应该可以手写一段通过U盘启动的在PC上运行的不需要其他软件来协助的自启 ...
- 基于HAL库手写一个轻量化操作系统——参考ucos
目录 1前言 2准备 3汇编 4过程 4.1工程文件 4.2汇编语言 4.3OS系统的初始化 4.3.1任务初始化函数 4.3.2创建任务函数 4.3.3空闲任务 4.3.4OS启动 4.4多任务的实 ...
最新文章
- 深度学习需要掌握的 13 个概率分布(附代码)
- 分布式文件系统HDFS,大数据存储实战(一)
- Sprint计划列表
- Jmeter性能测试之如何写Java请求测试用例类
- 网页监控插件distill web monitor使用之监控亚马逊到货及价格
- 【Mark】计算机科学导论
- OKR组织敏捷目标和绩效管理第二课 O、KR和案例讲解
- IT领域常用指标概述
- 开根号的几类算法总结
- 区块链专利申请量断崖式下降:阿里腾讯跌出十强 网心逆市晋身前四
- 2020apple教育优惠购买策略
- Go语言: go-redis客户端通过MSet方法一次性批量写入多个key的值
- 【bzoj4826】[Hnoi2017]影魔
- Sketch中的快捷键总结
- DLL无法注入的原因查找
- graylog+kafka+zookeeper(单机测试及源码),graylog组件部署,查找问题分析(一)
- java outputstream 输入文件损坏问题
- Cocos2d-x 游戏中子弹的设计(一)
- 什么是PM?团队角色
- mysql 开启事物_mysql事务的开启
热门文章
- 抖音跳转到微信引流的方法,私信页面如何添加微信
- requests模拟登录微信公众平台手机扫码确认
- texmaker中图片过大怎么办_latex 图或表和正文间距过大怎么处理
- linux中的信号处理与SROP
- Git管理 本地文件误删(提交和没提交情况下),恢复文件的方法
- Textpad 1.7下载
- [安全攻防进阶篇] 二.如何学好逆向分析、逆向路线推荐及吕布传游戏逆向案例
- Android权限(permission)大全
- 林纳斯·托瓦兹 Linus Torvalds
- 寻迹小车代码_活动 | 代码日记—计算机编程培训(泰达校区)