#chip8 #intrinsics #operator #literals #u16 #12b #12bit

twelve_bit

A Rust library for representing 12-bit unsigned values. This is primarily useful for implementing Chip-8 assemblers and interpreters safely. The type implements the bulk of the standard Rust literal semantics and operators, and much of the documentation is adapted from the u16 intrinsic type.

2 releases

Uses old Rust 2015

0.1.1 Jun 20, 2016
0.1.0 Jun 19, 2016

#16 in #u16

MIT license

35KB
345 lines

twelve_bit

A Rust library for representing 12-bit unsigned values. This is primarily useful for implementing Chip-8 assemblers and interpreters safely. The type implements bulk of the standard Rust literal semantics and operators, and much of the documentation is adapted from the u16 intrinsic type.

Build Status Coverage Status

Usage

Add the following to your Cargo.toml:

[dependencies]
twelve_bit = "0.1"

In addition, and this to your crate root:

#[macro_use]
extern crate twelve_bit;

Here is an example demonstrating how to interact with the U12 data type.

#[macro_use]
extern crate twelve_bit;

use twelve_bit::u12::*;

fn main() {
  assert_eq!(u12![1] + u12![2], u12![3]);
  assert_eq!(u12![4095], U12::maximum_value());
  assert_eq!(u12![4095].overflowing_add(u12![1]), (u12![0], true));
  assert_eq!(u12![4095].overflowing_add(u12![1]), (u12![0], true));
}

Missing Features

  • Support for ShlAssign and ShrAssign.
  • Support for bitwise assignment traits.
  • Support for U12::from_str_radix().
  • Support for Display, UpperHex, LowerHex, Octal and Binary.
  • Support for Hash.
  • Support for Step.

License

twelve_bit is distributed under the terms of the MIT license.

See LICENSE for details.

No runtime deps