From bc9df97ea737dfef94c9f0afc6f7ec4ad4022121 Mon Sep 17 00:00:00 2001 From: Marco Thomas Date: Tue, 17 Jun 2025 15:35:13 +0200 Subject: [PATCH] Update README.md --- README.md | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 7f9d8f3..a025005 100644 --- a/README.md +++ b/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: -- 📦 a.out Parser: Parses legacy MINIX 1.x executables. -- 🛠 8086 Disassembler: Parses 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. +- a.out Parser to parse legacy MINIX 1.x executables. +- 8086 disassembler to parse the 16-bit instructions into an IR and prints them in a `objdump(1)`-style fashion. +- 8086 interpreter which interprets the instructions with MINIX 1.x conventions in mind. ## Usage @@ -29,7 +29,7 @@ CLI Options: $ cargo run -- --help Simple program to disassemble and interpret 8086 a.out compilates, e.g. such for MINIX -Usage: minix-8086-rs [OPTIONS] +Usage: 8086-rs [OPTIONS] Commands: 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. Expect bugs and some missing features. 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 @@ -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`. ``` $ 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. @@ -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? 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. +An interpreter for these assembly instructions was the logical (?) next step. +Maybe I add raw 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. \ No newline at end of file +In hindsight, using `nom` would have been the cleaner option, but hey, something I only learned by not using `nom` for once.