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