6. aCore - 繼續完善字符輸出程序

在Rust 中, 我們都習慣用 writeln! write! panic! 等等的macro 作為字串流的後處理 那麼, 在`no_std` 中, 也是可以享用這些Rust 的特性的。 在`vga_buffer.rs` 中加入 ```Rust use core::fmt; //建議放第一行 impl fmt::Write for Writer { fn write_str(&mut self, s: &str) -> fmt::Result { self.write_string(s); Ok(()) } }
發表時間:15日前 | 評論 (0) | 全文

5. aCore - 正確寫入Buffer 的姿勢 - Volatile

這篇文章之前已經打過一次, 但在開發的途中出現 Kernal Secrutiy Check Error ![](https://scontent-nrt1-1.xx.fbcdn.net/v/t1.0-9/p720x720/96696319_10158168999813965_8093637269677670400_o.jpg?_nc_cat=100&_nc_sid=110474&_nc_ohc=kxeXhAN5mVkAX8d-dXr&_nc_ht=scontent-nrt1-1.xx&_nc_tp=6&oh=7301c9c365a1fb8a69875a2d3ab69e55&oe=5EE0
發表時間:15日前 | 評論 (0) | 全文

4. aCore - 抽象化VGA

雖然OS 還是基於`VGA Text Buffer`的, 但我們以這個作為起點, 再住下挖之前, 先做點上層抽象。 ```Rust #[allow(dead_code)] #[derive(Debug, Clone, Copy, PartialEq, Eq)] #[repr(u8)] pub enum Color { Black = 0, Blue = 1, Green = 2, Cyan = 3, Red = 4, Magenta = 5, Brown = 6, LightGray = 7,
發表時間:15日前 | 評論 (0) | 全文

屎山推倒計劃

讀過前面幾篇, 應該都容易理解到, 為甚麼我要碰屎山... ![](https://i.imgur.com/Zu8LXtr.png) > 我想寫os內核,然後想把筆記寫成blog, 於是在改寫以前的blog 系統。 > 。。。這是傷心太平洋嗎? [![傷心太平洋](https://img.youtube.com/vi/b1SRjGmgA54/0.jpg)](https://www.youtube.com/watch?v=b1SRjGmgA54) 這是我這兩天的剷屎過程: - 連結 : https://github.com/abbychau/realblog/
發表時間:17日前 | 評論 (0) | 全文

3. aCore - Hello World

終於來到 `Hello World` 了! 修改main.rs ```Rust #![no_std] #![no_main] use core::panic::PanicInfo; #[panic_handler] fn panic(_info: &PanicInfo) -> ! { loop {} } const HELLO: &[u8] = b"Hello, world!"; #[no_mangle] pub extern fn _start() -> ! { let vga_buffer = 0xB8000 as
發表時間:19日前 | 評論 (0) | 全文

2. aCore - Boot image

## 試運行 生成binary 後, 那個binary 可以在本機os 中運行。 修改Cargo.toml ```toml [dependencies] bootloader = "0.6" [package.metadata.bootimage] default-target = "x86_64-aCore.json" ``` 執行: ```bash cargo install bootimage rustup component add llvm-tools-preview sudo apt install qemu-system-x86 # f
發表時間:19日前 | 評論 (0) | 全文

1. aCore - 配置Rust Project 和第一次建置

## 環境配置懶人包 在開發前, 我們配一下Rust 環境。會用Rustup 的話, 就不多解釋下面的命令了。如果不了解的話Rustup 和Cargo 自身也帶備說明。 所以, 我直接來個 **環境配置懶人包**: ```bash $ rustup toolchain install nightly #安裝rust nightly 環境 $ rustup component add rls --toolchain nightly #Nightly RLS $ cargo new --bin aCore $ cargo install cargo-xbuild #xbui
發表時間:19日前 | 評論 (0) | 全文

0. aCore - Abby 試寫OS 內核的筆記

曾覺得自己學會了很多。擴展式後端、API 端、Socket 端、MVC 後端、前端、MVVC 前端、數據庫、網絡庫、內存隊列 都寫過了。也在過程中令我成為一個很好的使用者, 例如, 在使用數據庫時, 會有更好的視角去對待查詢。(我是不懂怎麼用中文分開:寫過數據庫和寫過數據庫啦) 但OS 層面的知識卻是十分貧乏。在上面的旅程中用過的語言也是多不勝數, 但無論怎麼向下挖, 都會碰到一個神秘的東西, 這個可比匯編的libc。 本著學習目的, 今日開始, 我要寫寫自己的OS 內核。 (明明是千里之行, 卻又如此輕描淡寫) 也因為過程甚長, 希望記錄下來, 可以一方面推動自己,
發表時間:19日前 | 評論 (0) | 全文

now blog url

https://blog.abby.md
發表時間:2019年8月31日 | 評論 (0) | 全文

戰zen5

![](http://members.zkiz.com/storage/1/0712_210114blob.jpg) 今日戰天頂5 白補後場面勝2.5目, 大場未完而黑潛力很大, 白十分難下 ![](http://members.zkiz.com/storage/1/0712_210331blob.jpg) 黑B18 明顯不是急所, 白棋要如何捉緊機會反擊呢?
發表時間:2016年7月12日 | 評論 (0) | 全文