bv-sized: a BitVector datatype that is parameterized by the vector width

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain]

This module defines a width-parameterized BitVector type and various associated operations that assume a 2's complement representation.


[Skip to ReadMe]

Properties

Versions0.1.0.0, 0.1.1.0, 0.1.1.1, 0.2.0, 0.2.1, 0.3.0, 0.4.0, 0.4.0, 0.5.0
Change logchangelog.md
Dependenciesbase (>=4.7 && <5), containers (>=0.5.11 && <0.6), lens (==4.*), mtl (==2.*), parameterized-utils, prettyclass (>=1.0 && <2.0), QuickCheck (==2.11.*), random (==1.1.*) [details]
LicenseBSD-3-Clause
CopyrightMarch 2018
AuthorBen Selfridge
Maintainerbenselfridge@galois.com
CategoryBit Vectors
Home pagehttps://github.com/benjaminselfridge/bv-sized
UploadedThu Apr 19 17:35:57 UTC 2018 by benselfridge

Modules

[Index]

Downloads

Maintainers' corner

For package maintainers and hackage trustees


Readme for bv-sized-0.4.0

[back to package description]

bv-sized

Overview

This library defines a BitVector datatype that is parameterized by the vector width.

Additional features

BitLayout

We also provides a module called BitLayout, which is handy for defining mappings from smaller BitVectors into larger ones. This module is particularly useful when defining encodings in an instruction set.

App

To aid in building expression languages over BitVectors, we provide a module called App, which supports combining expressions over BitVectors using the BitVector operations and evaluating said expressions. It can be used in a pure context or in conjunction with a state monad. This module was inspired by the App type in macaw, Galois's binary analysis framework.