From 2af8a3170088597f04d9f860d6856793e831a0a8 Mon Sep 17 00:00:00 2001 From: Tateisi Date: Sat, 2 Aug 2025 23:18:14 +0800 Subject: [PATCH] ch1-exp: Print memory info --- src/main.rs | 41 ++++++++++++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/src/main.rs b/src/main.rs index b5d403f..c41ee8c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -18,15 +18,8 @@ pub fn rust_main() -> ! { clear_bss(); logger::init(); - sbi::console_write_byte('O' as u8); - sbi::console_write_byte('K' as u8); - sbi::console_write_byte('\n' as u8); - - trace!("Hello World."); - debug!("Hello World."); - info!("Hello World."); - warn!("Hello World."); - error!("Hello World."); + print_system_info(); + print_to_console(); panic!("Shutdown machine!"); } @@ -39,4 +32,34 @@ fn clear_bss() { (sbss as usize..ebss as usize).for_each(|a| { unsafe { (a as *mut u8).write_volatile(0) } }); +} + +fn print_to_console() { + sbi::console_write_byte('O' as u8); + sbi::console_write_byte('K' as u8); + sbi::console_write_byte('\n' as u8); + + trace!("Hello World."); + debug!("Hello World."); + info!("Hello World."); + warn!("Hello World."); + error!("Hello World."); +} + +fn print_system_info() { + extern "C" { + fn stext(); + fn etext(); + fn sdata(); + fn edata(); + fn srodata(); + fn erodata(); + fn sbss(); + fn ebss(); + } + + info!(".text [{:#x}, {:#x}]", stext as usize, etext as usize); + info!(".rodata [{:#x}, {:#x}]", srodata as usize, erodata as usize); + info!(".data [{:#x}, {:#x}]", sdata as usize, edata as usize); + info!(".bss [{:#x}, {:#x}]", sbss as usize, ebss as usize); } \ No newline at end of file