OS dev 上的Exception Table中的“Vector nr.”列展示了所有的异常在IDT中对应的条目。 当一个异常发生时,CPU大概会做以下的内容: 1. 把一些寄存器入栈,包括指令指针和标志寄存器。 2. 从IDT中读对应的条目。例如当发生'页错误'时CPU读第14条。 3. 检查对应的条目是否存在。不存在则抛出'双异常'。 4. ...
# in .cargo/config[target.'cfg(target_os = "linux")']rustflags= ["-C","link-arg=-nostartfiles"][target.'cfg(target_os = "windows")']rustflags= ["-C","link-args=/ENTRY:_start /SUBSYSTEM:console"][target.'cfg(target_os = "macos")']rustflags= ["-C","link-args=-e __sta...
在这篇文章中,我们将基于 x86架构(the x86 architecture),使用 Rust 语言,编写一个最小化的 64 位内核。我们将从上一章中构建的独立式可执行程序开始,构建自己的内核;它将向显示器打印字符串,并能被打包为一个能够引导启动的磁盘映像(disk image)。
【Writing an OS in Rust: Hardware Interrupts】http://t.cn/EZfyLY5 用Rust编写操作系统:硬件中断。
translation-table.md README License writing-an-os-in-rust 《编写 Rust 语言的操作系统》简体中文翻译 目录 正文 附录 洛佳(@luojia65),华中科技大学 龙方淞 (@longfangsong),上海大学开源社区 readlnh (@readlnh) 尚卓燃 (@psiace),华中农业大学 Contributors10...
Rust中文社区的翻译 背景 最近在看Rust的内容,发现挺有意思。正好也在学操作系统,所以跟着 用Rust 编写操作系统 系列文章来学习。 遇到的问题 1 最小化内核 里,cargo bootimage 创建一个可引导的磁盘映像出现了以下报错 > cargo bootimage WARNING: `CARGO_MANIFEST_DIR` env variable not set Building kernel Co...
译注:中文版请移步《编写 Rust 语言的操作系统》 双重异常的定义简单点说,双重异常就是一个在CPU调用异常处理函数失败的时候触发的特定异常。例如,CPU触发缺页异常(page fault),但是中断描述符表( Interrupt Descriptor Table,IDT)中却没有对应处理函数的情况。所以,这和编程语言中捕获所有异常的代码块(catch-all ...
Writing an OS in Rust 这个博客系列用 Rust 编程语言编写了一个小操作系统。每篇文章都是一个小教程,并且包含了所有代码 http://t.cn/R9XrRfG
This repository contains the source code for theWriting an OS in Rustseries atos.phil-opp.com. Where is the code? The code for each post lives in a separate git branch. This makes it possible to see the intermediate state after each post. ...