- 博客(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" 的可变引用假如将上面的例子中的 &
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关注的人