An incomplete 8086 simulator, this currently is more functional as a disassembler. I'm putting this on my github primarily to demonstrate my low-level understanding to people who might want to hire me.
If you're aware of the Computer Enhance Performance Aware Programming Series, this is my project for that class. If you're not aware, the series is a sort of engineering class for experienced engineers, in order to improve their understanding of the underlying systems they work on.
Unfortunately, building this program requires having access to a jai compiler. however, I have uploaded a pre-built binary with the project to at least demonstrate that the simulator aspect of it functions to some extent.
Just run the 'simulate-2' binary in your (windows) shell to run some tests. In the console, you will see the step-by-step disassembly of each instruction, as well as the change that instruction makes to some registor or memory address. the final value is the instruction pointer delta. like so:
mov dx, word 6 ; [dx]: 0000 => 0006 ( 0 => 6) [ip]: 0000 => 0003
At the end, you will see a printout of the final resultant registers, e.g.:
; [ax]: 0000 ( 0)
; [bx]: 0006 ( 6)
; [cx]: 0004 ( 4)
; [dx]: 0006 ( 6)
; [sp]: 0000 ( 0)
; [bp]: 03e8 ( 1000)
; [si]: 0006 ( 6)
; [di]: 0000 ( 0)
; [al]: 00 ( 0)
; [ah]: 00 ( 0)
; [bl]: 00 ( 0)
; [bh]: 00 ( 0)
; [cl]: 00 ( 0)
; [ch]: 00 ( 0)
; [dl]: 00 ( 0)
; [dh]: 00 ( 0)
; [ss]: 0000 ( 0)
; [cs]: 0000 ( 0)
; [es]: 0000 ( 0)
; [ds]: 0000 ( 0)
; [ip]: 0023 ( 35)
A file will also be output detailing some performance metrics ('rdtsc_output_after_change.txt'), as well as a bitmap image ('image.data').
I uploaded all of the output files in case you don't want to run the program on your system.