#x86-64 #osdev #intel #setup

nightly no-std x64

UNFINISHED: low-level code for dealing with the x86_64 ISA

3 releases

0.0.3 Jan 5, 2023
0.0.2 Jan 5, 2023
0.0.1 Jan 5, 2023

#314 in No standard library

BSD-3-Clause

62KB
940 lines

x64

Work in progress

This crate is a work in progress, and new features are added as the BSL microkernel needs them.

x64 is a standalone, no-std Rust library providing types and a few convienence functions over x86_64 (Intel's 64-bit CPU architecture). It is closely tied to the BSL kernel, however that doesn't mean it can't be used by outside projects.

The reason this exists is because I simply don't like the x86_64 crate. It seems that you either have to use all of their types, or none of their types. If you want to use it to manage paging, you have to set up your allocator specifically to use that. It gives me the creeps!

x64 is designed to be efficient at runtime. x86_64 makes use of traits that produce vtables that cannot be optimized away at compile time. There are certain methods/functions that are much too inefficient to be used extreemly often.

While x64 is inspired by the API of x86_64 (they lay it out quite well), the insides are pretty different. x86 also uses more of the correct terminology than x86_64 does (e.g. they call it an IDT gate an "entry", whereas this crate calls it a "gate").

This crate also provides some features that x86_64 doesn't have, namely the easy manipulation of structs that would be represented with bitfields in C/C++ or something to that effect.

Dependencies

~1.5MB
~35K SLoC