Crates.io | x64 |
lib.rs | x64 |
version | 0.0.3 |
source | src |
created_at | 2023-01-05 02:14:09.565541 |
updated_at | 2023-01-05 19:31:31.702877 |
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.