mirror of https://github.com/nmlgc/ReC98.git
[Research] Find out why we can't decompile TH05's hud_bar_put()
Part of P0033, funded by zorg.
This commit is contained in:
parent
f8213c5a32
commit
7f971a0d1c
|
@ -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.
|
Loading…
Reference in New Issue