decomp.me icon indicating copy to clipboard operation
decomp.me copied to clipboard

Support for MS-DOS Microsoft QuickC Compiler

Open palmerj opened this issue 1 year ago • 3 comments

Is your feature request related to a problem? Please describe. I want to decompile and create C code that can be recompiled to the same binary for 16bit real mode MS-DOS EXE. The binary is pretty small at 64kb.

Describe the solution you'd like My EXE is compiled with QuickC 2.50. I'm unsure how to add the decompiled ASM into decomp.me. I've loaded the binary in Ghidra, okay? So maybe I can copy and paste ASM for each function from there? I don't see any ASM obj dump type tool in QC 2.5. I'm also not sure how to get some initial decompiled C code from the ASM. Maybe that needs to also be taken from Ghidra, although I see that C code is a pretty poor representation and is pretty far away from what the C likely was.

Describe alternatives you've considered I guess some sort of python tooling could be created to help prepare the inputs?

Additional context The binaries for the QC 2.5 compiler can be found here https://winworldpc.com/product/quick-c/2x

palmerj avatar Sep 28 '24 00:09 palmerj

FYI, any copy of objdump is able to have its output configured for clean asm output, like such:
image
(using objdump --disassemble=add_assembler_option -M i386,att /usr/local/sce/ee/gcc/bin/ee-gcc in this case)

ieee802dot11ac avatar Sep 28 '24 00:09 ieee802dot11ac

objdump --disassemble=add_assembler_option -M i386,att GAME.EXE objdump: HENRYD.EXE: file format not recognized

I think that's because it's a 16bit DOS MZ EXE

palmerj avatar Sep 28 '24 09:09 palmerj

Actually this seems to work:

objdump -D -x -s -f --file-offsets -b binary -mi386 -Maddr16,data16 GAME.EXE > GAME.ASM

But I'm not sure if how to decode the jump and call addresses. These need to be matched to segment and addresses.

I assume becauase there are no symbols, you can't dump specific functions or split the ASM to to ASM per function. That would require some specific analysis and tooling.

palmerj avatar Sep 28 '24 10:09 palmerj