chore: update metadata

This commit is contained in:
2025-05-20 11:22:35 +09:00
parent 1173dd3d63
commit beccff0d79
2 changed files with 34 additions and 20 deletions

View File

@@ -1,9 +1,11 @@
# 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.
- 🛠 8086 Disassembler: Converts 16-bit instructions into an IR.
- 💻 MINIX Emulator: Interprets and executes 8086 MINIX binaries in a simulated environment.
- 🛠 8086 Disassembler: Parses 16-bit instructions into an IR and prints them in a `objdump(1)`-style fasion.
- 💻 8086 Interpreter: Interprets the 8086 instructions, i.e., the MINIX binary.
## Usage
@@ -20,13 +22,13 @@ cargo run -- --help
CLI Options:
```
$ 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>
Commands:
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)
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.
## 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.

View File

@@ -11,11 +11,12 @@ enum Command {
/// Disassemble the binary into 8086 instructions
Disasm,
/// Interpret the binary as 8086 Minix
/// Interpret the 8086 instructions
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)]
#[command(version, about, long_about = None)]
struct Args {