gz / rust-x86

Rust library to use x86 (amd64) specific functionality and registers.
https://docs.rs/x86
MIT License
303 stars 63 forks source link

fixing segmentation print #153

Open elbiazo opened 10 months ago

elbiazo commented 10 months ago

Current segment print image

After Fix image

Test Code

use std::arch::asm;
use x86;

fn main() {
    unsafe {
        let cs: u16;
        let ds: u16;
        let ss: u16;
        let es: u16;
        let fs: u16;
        let gs: u16;

        asm!("mov {0:x}, cs", out(reg) cs);
        asm!("mov {0:x}, ds", out(reg) ds);
        asm!("mov {0:x}, ss", out(reg) ss);
        asm!("mov {0:x}, es", out(reg) es);
        asm!("mov {0:x}, fs", out(reg) fs);
        asm!("mov {0:x}, gs", out(reg) gs);

        println!("cs: {:#010b}", cs);
        println!("ds: {:#010b}", ds);
        println!("ss: {:#010b}", ss);
        println!("es: {:#010b}", es);
        println!("fs: {:#010b}", fs);
        println!("gs: {:#010b}", gs);
    }
    println!(
        "cs: {} \nds: {} \nss: {} \nes: {} \nfs: {} \ngs: {}",
        x86::segmentation::cs(),
        x86::segmentation::ds(),
        x86::segmentation::ss(),
        x86::segmentation::es(),
        x86::segmentation::fs(),
        x86::segmentation::gs(),
    );
}
gz commented 9 months ago

Thanks for the contribution