11 2020 档案

摘要:本节讲学习如何编译和链接C源程序,以及查看最终文件与汇编代码的异同. 关键字:C语言; 目标代码;链接器;反汇编 目标:学习使用C语言编写与汇编语言功能相同的代码 在上一节中我们创建了平台无关的编译器,本节我们将使用该编译器的一些功能来编译、链接C源程序. 本节没有什么理论知识,主要是熟悉编译器的一 阅读全文 »
posted @ 2020-11-19 10:33 EwanHai 阅读(299) 评论(0) 推荐(0) 编辑
摘要:本节将学习如何使用汇编完成一个32bit模式下的全局描述符表(GDT) 关键字: GDT 目标:用汇编实现GDT结构 理论基础 之前的实模式下,我们用的寻址方法就是段地址 << 4 + 偏移地址,但是随着计算机理论的发展,人们发现,如果不在各种地址段之间加上访问权限的限制,计算机数据的安全性难以保障 阅读全文 »
posted @ 2020-11-19 10:32 EwanHai 阅读(207) 评论(0) 推荐(0) 编辑
摘要:终于要进入32-bit模式了,本节将完整的学习从boot sector进入32bit模式的流程 关键字: 中断; 流程 目标:进入32-bit保护模式并且测试前两节中学习到的(GDT设置,VGA打印功能)保护模式知识. 理论基础 进入32-bit保护模式需要进行以下几个步骤: 关闭所有中断(不响应所 阅读全文 »
posted @ 2020-11-19 10:32 EwanHai 阅读(197) 评论(0) 推荐(0) 编辑
摘要:本节将学习如何为特定目标平台创建专属编译器 关键字: 交叉编译器 目标: 创建一个可以用来建立我们的kernel的开发环境 理论基础 鉴于以后我们将使用C语言编辑我们的操作系统核,因此需要对开发环境进行新的布置,也就是创建一个交叉编译器. 为什么要搞一个交叉编译器? 事实上类Unix系统的编译环境已 阅读全文 »
posted @ 2020-11-19 10:32 EwanHai 阅读(326) 评论(0) 推荐(0) 编辑
摘要:学习如何在32-bit模式下不借助BIOS的0x10号中断打印字符串 关键字:32-bit保护模式; VGA; 视频存储区域 目标: 学会在32-bit保护模式下打印字符串 理论基础 32-bit保护模式 32-bit保护模式设计的内容非常多,十篇博客也写不完,因此这里只对32-bit保护模式的要点 阅读全文 »
posted @ 2020-11-18 17:03 EwanHai 阅读(147) 评论(0) 推荐(0) 编辑
摘要:本节将学习汇编函数和控制结构,其中穿插着字符串打印、数字转字符知识. 关键字: 控制结构; 函数调用; 字符串 目标: 学习使用汇编语言编写控制结构、函数 对于本节的控制结构和函数,读者应该在本系列博客的第一篇原文介绍+环境搭建中,提到的《汇编语言(第三版)》一书中学习到过,因此本节的目地也是复习相 阅读全文 »
posted @ 2020-11-18 17:02 EwanHai 阅读(269) 评论(0) 推荐(0) 编辑
摘要:本节将学习16bit模式的段结构 关键字:段 目标:学习如何在16bit模式下寻址 如果你对段已经很熟悉了,那么你可以跳过本节. 理论基础 在从0创建一个OS (四) 电脑存储的组织形式一节中我们利用org完成了对booot sector的全局基址定义,那是我们第一次在本系列博客中接触到段的概念. 阅读全文 »
posted @ 2020-11-18 17:02 EwanHai 阅读(121) 评论(0) 推荐(0) 编辑
摘要:本节将学习如何从硬盘中读取数据 关键字: 硬盘; 柱面(cylinder);磁头(head);扇区(sector); 进位(carry bit) 目标:利用boot sector从硬盘中读取数据(这一步的目地是为从硬盘中启动操作系统kernel做准备) 理论基础 本节的内容是自本系列博客开始以来最复 阅读全文 »
posted @ 2020-11-18 17:02 EwanHai 阅读(402) 评论(0) 推荐(0) 编辑
摘要:本节将学习boot sector以及其所在内存的相关知识 学习完本节后,要明确一个概念: 代码的存储区域和运行区域有可能不同 关键字:memory offsets; pointers 目标:学习电脑存储的组织形式 在进行学习之前,先看一下这幅图 这幅图为16bit实模式下电脑启动后的内存存储结构,读 阅读全文 »
posted @ 2020-11-18 17:01 EwanHai 阅读(150) 评论(0) 推荐(0) 编辑
摘要:本节将学习16bit模式下,汇编语言中的栈的基本操作 关键字:stack 目标:学习如何使用栈 理论基础 在我们学习其它高级语言,如C++,Java时,肯定会接触到栈这个概念,在汇编中栈的基础操作只有2种,入栈和出栈. 在16bit模式下 栈底由16bit寄存器BP负责记录 栈顶由16bit寄存器S 阅读全文 »
posted @ 2020-11-18 17:01 EwanHai 阅读(102) 评论(0) 推荐(0) 编辑
摘要:OS教程——从0创建一个OS 本来这个系列的博客准备留在CSDN的,可是今天忽然想起这个系列还没更新完,之后又会一直在博客园写东西,所以就批量导入过来了,大家可能会看到图片带csdn的水印,影响不大,之后更新的该系列文章中的图片就不会带CSDN的水印了。 本文为os-tutorial—How to 阅读全文 »
posted @ 2020-11-18 17:00 EwanHai 阅读(303) 评论(0) 推荐(0) 编辑
摘要:本节将学习如何创建一个能够boot的文件 关键字: assembler; BIOS 目标: 创建一个文件,使BIOS能够将其当作能够boot的硬盘 理论基础 当PC启动时,BIOS并不知道如何启动操作系统,所以BIOS将启动操作系统的任务委派给boot sector,因此boot sector必须放 阅读全文 »
posted @ 2020-11-18 17:00 EwanHai 阅读(187) 评论(0) 推荐(0) 编辑
摘要:本节将学习如何向boot sector中添加打印信息功能 关键字: interrupts, CPU registers 目标:向我们在上一节中创建的"裸骨架"添加功能——打印信息 上一节的源码部分有一个死循环,用以控制程序始终运行在boot sector中,本节将向上一节的源码中添加打印信息到屏幕功 阅读全文 »
posted @ 2020-11-18 17:00 EwanHai 阅读(103) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示