[Research] Find out why we can't decompile TH05's hud_bar_put()

Part of P0033, funded by zorg.
This commit is contained in:
nmlgc 2019-09-20 19:53:52 +02:00
parent f8213c5a32
commit 7f971a0d1c
1 changed files with 17 additions and 0 deletions

View File

@ -0,0 +1,17 @@
## Limits of decompilability
### `MOV BX, SP`-style functions, no stack frame
These almost certainly weren't compiled from C. By disabling stack frames
using `#pragma option -k-`, it *might* be possible to still get the exact same
code out of Turbo C++ even though it will most certainly look horrible, and
barely more readable than assembly (or even less so), with tons of inline ASM
and register pseudovariables. However, it's futile to even try if the function
contains one of the following:
* A reference to the `DI` register. In that case, Turbo C++ always inserts a
`PUSH DI` at the beginning (before the `MOV BX, SP`), and a `POP DI` before
returning.
**Certainty:** Confirmed through reverse-engineering `TCC.EXE`, no way
around it.