chore: update metadata
This commit is contained in:
23
README.md
23
README.md
@@ -1,9 +1,11 @@
|
|||||||
# minix-8086-rs
|
# minix-8086-rs
|
||||||
|
|
||||||
minix-8086-rs is a Rust-based toolchain for analyzing and emulating 16-bit MINIX binaries. It includes:
|
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.
|
||||||
|
|
||||||
|
It includes:
|
||||||
- 📦 a.out Parser: Parses legacy MINIX executables.
|
- 📦 a.out Parser: Parses legacy MINIX executables.
|
||||||
- 🛠 8086 Disassembler: Converts 16-bit instructions into an IR.
|
- 🛠 8086 Disassembler: Parses 16-bit instructions into an IR and prints them in a `objdump(1)`-style fasion.
|
||||||
- 💻 MINIX Emulator: Interprets and executes 8086 MINIX binaries in a simulated environment.
|
- 💻 8086 Interpreter: Interprets the 8086 instructions, i.e., the MINIX binary.
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
@@ -20,13 +22,13 @@ cargo run -- --help
|
|||||||
CLI Options:
|
CLI Options:
|
||||||
```
|
```
|
||||||
$ cargo run -- --help
|
$ cargo run -- --help
|
||||||
Simple prgram to diasm and interpret Minix binaries
|
Simple program to disassemble and interpret 8086 a.out compilates, e.g. such for MINIX
|
||||||
|
|
||||||
Usage: minix-8086-rs [OPTIONS] <COMMAND>
|
Usage: minix-8086-rs [OPTIONS] <COMMAND>
|
||||||
|
|
||||||
Commands:
|
Commands:
|
||||||
disasm Disassemble the binary into 8086 instructions
|
disasm Disassemble the binary into 8086 instructions
|
||||||
interpret Interpret the binary as 8086 Minix
|
interpret Interpret the 8086 instructions
|
||||||
help Print this message or the help of the given subcommand(s)
|
help Print this message or the help of the given subcommand(s)
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
@@ -59,3 +61,14 @@ Expect bugs and some missing features.
|
|||||||
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.
|
||||||
|
|
||||||
|
|
||||||
|
## FAQ
|
||||||
|
|
||||||
|
#### 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.
|
||||||
|
An interpreter was the logical (?) next step.
|
||||||
|
Maybe I add 8086 emulation some day.
|
||||||
|
|
||||||
|
#### 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.
|
||||||
|
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.
|
||||||
@@ -11,11 +11,12 @@ enum Command {
|
|||||||
/// Disassemble the binary into 8086 instructions
|
/// Disassemble the binary into 8086 instructions
|
||||||
Disasm,
|
Disasm,
|
||||||
|
|
||||||
/// Interpret the binary as 8086 Minix
|
/// Interpret the 8086 instructions
|
||||||
Interpret,
|
Interpret,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Simple prgram to diasm and interpret Minix binaries
|
/// Simple program to disassemble and interpret 8086 a.out compilates, e.g.
|
||||||
|
/// such for MINIX.
|
||||||
#[derive(Parser, Debug)]
|
#[derive(Parser, Debug)]
|
||||||
#[command(version, about, long_about = None)]
|
#[command(version, about, long_about = None)]
|
||||||
struct Args {
|
struct Args {
|
||||||
|
|||||||
Reference in New Issue
Block a user