自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 收藏
  • 关注

原创 【操作系统真象还原】03 编写MBR分区(一)输出信息

引导操作系统的流程在按下计算机电源键的瞬间,CS、IP寄存器就会被强制初始化为 BIOS(基本输入输出系统)的起始地址(CS:IP = 0xF000:FFF0)。BIOS会做一系列的初始化(如:建立 中断向量表 )和检查的工作。其中最后一个检查工作就是:校验启动盘中位于 0盘0道1扇区的内容。如果此扇区末尾的两个字节分别是魔数 0x55, 0xaa, BIOS便认为此扇区中确实存在可执行的程序(此程序便是久闻大名的主引导记录 MBR ),便加载到物理地址 0x7c00 ,随后跳转到此地址,继续执行。因

2021-09-22 21:19:02 232

原创 【操作系统真象还原】02 nasm 汇编基础语法(一)

前言编写操作系统,免不了和硬件打交道。而想要和硬件打交道,就绕不开汇编。所以先学习一些汇编的基础知识。通用寄存器既然要和硬件打交道,我们就要了解一些硬件,其中寄存器是十分重要的部分。先来了解一些通用寄存器的大小。再来了解一下通用寄存器的约定俗成的功能。段寄存器一个程序一般可分为数据段,代码段和栈段。而每个段都有对应的寄存器保存该段所处的地址。汇编语句赋值语句在了解各个寄存器之后,就可以尝试利用寄存器来保存数据了。mov ax, 0x1234 ; 相当于 ax = 0x1234mo

2021-09-21 20:37:40 570

原创 【操作系统真象还原】01 Ubuntu环境下配置bochs和nasm

前言开始学习《操作系统真象还原》这本书,记录一下学习过程。配置 nasmnasm 简介nasm 是一个年轻、开源、免费的汇编器。安装 nasmsudo apt install nasm配置 bochs选择自行编译 bochs 源码来进行安装。下载 bochs 源码下载链接: bochs下载链接选择下载压缩包: bochs-2.6.1.tar.gz解压tar zxvf bochs-2.6.1.tar.gz生成 MakeFilebochs有不同的调试方式,可编译成不同的版本。

2021-09-21 19:32:15 294

原创 LL(1)文法实现二叉树的反序列化、递归实现二叉树的序列化以及BFS实现二叉树的分层输出

实现对给定表示二叉树的字符串的反序列化如:字符串 Aa(Bb, C1(D2,Efg(,))) 可序列化为:          Aa         /    \     Bb    C1&n.

2021-06-26 16:19:24 227

原创 对于Rust中的可变性(mut关键字)的理解

mut 修饰的变量具有可变性let mut a = String::from("Hi");a.push('a');println!("{}", a);// 输出: Hiamut 用于说明是否对应内存的值是否可以修改let a = & mut String::from("Hi");// 引用 可修改 堆上的一块内存// 综合起来:a 代表一个指向堆上的一块可修改的内存的引用// 即:a 是 "Hi" 的可变引用假如将上面的例子中的 &amp

2021-04-18 14:00:08 671

原创 Rust中的所有权、引用、借用与slices

所有权Rust 中的每一个值都有一个被称为其 所有者(owner)的变量。值在任一时刻有且只有一个所有者。当所有者(变量)离开作用域,这个值将被丢弃。对于规则二:// 此时"hello"的所有者为 alet a = String::from("hello");// move occurs // because `a` has type `String`, which does not implement the `Copy` trait// 因为 String 没有实现`C

2021-04-02 21:51:33 510

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除