| Crates.io | x64 |
| lib.rs | x64 |
| version | 0.0.3 |
| created_at | 2023-01-05 02:14:09.565541+00 |
| updated_at | 2023-01-05 19:31:31.702877+00 |
| description | UNFINISHED: low-level code for dealing with the x86_64 ISA. |
| homepage | https://github.com/IsaccBarker/BSL/tree/main/x64 |
| repository | https://github.com/IsaccBarker/BSL |
| max_upload_size | |
| id | 751270 |
| size | 61,781 |
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.