Update README.md
This commit is contained in:
22
README.md
22
README.md
@@ -1,11 +1,11 @@
|
|||||||
# minix-8086-rs
|
# 8086-rs
|
||||||
|
|
||||||
minix-8086-rs is a Rust-based toolchain for analyzing and interpreting 16-bit 8086 binaries, made with the intention of interpreting binaries compiled for MINIX 1.x.
|
8086-rs is a Rust-based toolchain for analyzing and interpreting 16-bit 8086 binaries, made with the intention of interpreting binaries compiled for MINIX 1.x.
|
||||||
|
|
||||||
It includes:
|
It includes:
|
||||||
- 📦 a.out Parser: Parses legacy MINIX 1.x executables.
|
- a.out Parser to parse legacy MINIX 1.x executables.
|
||||||
- 🛠 8086 Disassembler: Parses 16-bit instructions into an IR and prints them in a `objdump(1)`-style fashion.
|
- 8086 disassembler to parse the 16-bit instructions into an IR and prints them in a `objdump(1)`-style fashion.
|
||||||
- 💻 8086 Interpreter: Interprets the 8086 instructions, i.e., the MINIX 1.x binary.
|
- 8086 interpreter which interprets the instructions with MINIX 1.x conventions in mind.
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
@@ -29,7 +29,7 @@ CLI Options:
|
|||||||
$ cargo run -- --help
|
$ cargo run -- --help
|
||||||
Simple program to disassemble and interpret 8086 a.out compilates, e.g. such for MINIX
|
Simple program to disassemble and interpret 8086 a.out compilates, e.g. such for MINIX
|
||||||
|
|
||||||
Usage: minix-8086-rs [OPTIONS] <COMMAND>
|
Usage: 8086-rs [OPTIONS] <COMMAND>
|
||||||
|
|
||||||
Commands:
|
Commands:
|
||||||
disasm Disassemble the binary into 8086 instructions
|
disasm Disassemble the binary into 8086 instructions
|
||||||
@@ -48,6 +48,8 @@ Options:
|
|||||||
This project is under active development and primarily used by me to explore some Intel disassembly and learn some more Rust.
|
This project is under active development and primarily used by me to explore some Intel disassembly and learn some more Rust.
|
||||||
Expect bugs and some missing features.
|
Expect bugs and some missing features.
|
||||||
I mainly test with 'official' binaries from the MINIX source tree.
|
I mainly test with 'official' binaries from the MINIX source tree.
|
||||||
|
Currently, everything is in the binary, but I want to move some parts to a lib, which would make it much easier to ignore the Minix 1.x specifics and would allow for more generic usage of this 8086 (e.g. implenting an own simple BIOS or OS).
|
||||||
|
But first I want to implement all features correctly and add tests for all of them, before I want to move to that.
|
||||||
|
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
@@ -55,7 +57,7 @@ I mainly test with 'official' binaries from the MINIX source tree.
|
|||||||
The documentation of the project itself can be accessed by using `cargo doc`.
|
The documentation of the project itself can be accessed by using `cargo doc`.
|
||||||
```
|
```
|
||||||
$ cargo doc
|
$ cargo doc
|
||||||
$ firefox target/doc/minix_8086_rs/index.html
|
$ firefox target/doc/8086_rs/index.html
|
||||||
```
|
```
|
||||||
|
|
||||||
For the implementation of all instructions I used the Intel "8086 16-BIT HMOS MICROPROCESSOR" Spec, as well as [this](http://www.mlsite.net/8086/8086_table.txt) overview of all Opcode variants used in conjunction with [this](http://www.mlsite.net/8086/) decoding matrix.
|
For the implementation of all instructions I used the Intel "8086 16-BIT HMOS MICROPROCESSOR" Spec, as well as [this](http://www.mlsite.net/8086/8086_table.txt) overview of all Opcode variants used in conjunction with [this](http://www.mlsite.net/8086/) decoding matrix.
|
||||||
@@ -65,10 +67,10 @@ For the implementation of all instructions I used the Intel "8086 16-BIT HMOS MI
|
|||||||
|
|
||||||
#### Why hassle with interpretation and not just emulate 8086?
|
#### Why hassle with interpretation and not just emulate 8086?
|
||||||
For once, this project stemmed from a university exercise about the 8086 instruction set and disassembly.
|
For once, this project stemmed from a university exercise about the 8086 instruction set and disassembly.
|
||||||
An interpreter was the logical (?) next step.
|
An interpreter for these assembly instructions was the logical (?) next step.
|
||||||
Maybe I add 8086 emulation some day.
|
Maybe I add raw 8086 emulation some day.
|
||||||
|
|
||||||
#### Why no `nom`?
|
#### Why no `nom`?
|
||||||
There is no real reason, I just wanted to try to implement most parts myself, even if it meant more boilerplate code.
|
There is no real reason, I just wanted to try to implement most parts myself, even if it meant more boilerplate code.
|
||||||
I used `nom` extensivly in the past and I just wanted to see what it would be like without that crate.
|
I used `nom` extensivly in the past and I just wanted to see what it would be like without that crate.
|
||||||
In hindsight, using `nom` would have been the cleaner option, but hey, something I only learned by not using `nom` for once.
|
In hindsight, using `nom` would have been the cleaner option, but hey, something I only learned by not using `nom` for once.
|
||||||
|
|||||||
Reference in New Issue
Block a user