Jennifer Taylor
b572689107
Apply more rigorous type checking, fix a few bugs caught with that more rigorous type checking.
2021-08-20 18:10:07 +00:00
Jennifer Taylor
c8be6aef23
Eliminate some more gotos, enable finding more types of compound if.
2021-07-15 00:15:52 +00:00
Jennifer Taylor
2895bfc050
Another quick goto eliminiation optimization for decompiler.
2021-07-15 00:15:28 +00:00
Jennifer Taylor
244f54d93f
Add future enhancement TODO to decompiler optimizer.
2021-07-15 00:15:14 +00:00
Jennifer Taylor
392a5e5133
Fix a few edge cases in a few of the decompilation optimizers.
2021-07-15 00:14:48 +00:00
Jennifer Taylor
7ca9e6920f
Enable many more types of switch statements to be detected.
2021-07-15 00:14:29 +00:00
Jennifer Taylor
a8f8b82768
Allow code optimizer to be turned off without tripping on asserts.
2021-07-15 00:13:45 +00:00
Jennifer Taylor
5ebb0a3524
Fix detection of some compound or statements with no false path.
2021-07-15 00:13:25 +00:00
Jennifer Taylor
599825332a
Introduce switch statements and use those to make decompilation better.
2021-07-15 00:13:02 +00:00
Jennifer Taylor
d5a8fbfb4c
Improve compound or detection to get rid of a few more gotos in AFP decompiler.
2021-07-15 00:12:36 +00:00
Jennifer Taylor
9b773fd0a8
Implement compound or statement detection and folding for AFP decompiler.
2021-07-15 00:11:46 +00:00
Jennifer Taylor
a4746f2934
Get rid of remaining dunder calls in unit tests.
2021-05-31 18:14:04 +00:00
Jennifer Taylor
7809ff360f
More type changes for correctness in order to compile with mypyc in the future.
2021-05-31 18:13:43 +00:00
Jennifer Taylor
3281e125cf
Get rid of now-unnecessary verbose flag to all expression/statement renderers.
2021-05-29 22:10:51 +00:00
Jennifer Taylor
322c33a9b8
Massive type refactor for decompiler.
2021-05-29 22:10:31 +00:00
Jennifer Taylor
212ff2be4e
Improved disassembled output when setting register values.
2021-05-22 21:52:40 +00:00
Jennifer Taylor
337440cb14
Handle decompiling bytecode which does not use function call results properly.
2021-05-16 22:18:23 +00:00
Jennifer Taylor
afb5eaa6fb
Add todo to fix decompiling some Pop'n animation bytecodes.
2021-05-15 04:23:04 +00:00
Jennifer Taylor
26c2a99a6e
Tie up loose ends by adding TODOs and documentation for a few remaining bits in decompiler.
2021-05-11 17:01:35 +00:00
Jennifer Taylor
ee3e272787
Properly plumb verbosity flags to all of decompiler pieces, clean up some code.
2021-05-10 00:12:28 +00:00
Jennifer Taylor
da1dba8f2b
Implement GET_TIME opcode used by some DDR PS3 files.
2021-05-09 19:18:48 +00:00
Jennifer Taylor
2252390706
Implement one more opcode needed for some Bishi levels.
2021-05-06 19:37:55 +00:00
Jennifer Taylor
b81d2aeaae
Fix one last case where we can get surprise gotos.
2021-05-05 19:32:08 +00:00
Jennifer Taylor
203fdd3a10
Fix tricky case where we have nowhere to jump to after a While loop inside an if.
2021-05-05 19:31:45 +00:00
Jennifer Taylor
481c5a50ce
Implement one more opcode that I've seen in Bishi levels.
2021-05-05 00:57:31 +00:00
Jennifer Taylor
9544287b13
Deal with empty if statements (usually compiled-out debug switches).
2021-05-05 00:56:59 +00:00
Jennifer Taylor
25278d76c5
Fix stack walking bug with respect to pre-converted if statements.
2021-05-05 00:56:33 +00:00
Jennifer Taylor
f75b9f038e
Implement a few more opcodes to get a few more Bishi files decompiling.
2021-05-05 00:55:02 +00:00
Jennifer Taylor
636e1876bc
Add while loop detection and conversion.
2021-05-05 00:54:34 +00:00
Jennifer Taylor
2f79a6401d
Fix massive bug which dropped function calls without returns from the finished output.
2021-05-05 00:53:58 +00:00
Jennifer Taylor
f09fd79a45
Add for loop detection and conversion.
2021-05-05 00:53:38 +00:00
Jennifer Taylor
e17f7c2bdb
Add some tests for for/while loops in anticipation of optimizing output.
2021-05-05 00:53:02 +00:00
Jennifer Taylor
83f4f43e9e
Implement a few more opcodes, fix stack ordering with multiple entries after reconciliation.
2021-05-04 02:32:32 +00:00
Jennifer Taylor
eddb8dc208
Several more code output optimizations done.
2021-05-04 02:32:04 +00:00
Jennifer Taylor
44b3628a85
Fix logic error in merging stacks when if statements didn't have a true and false body.
2021-05-04 02:31:07 +00:00
Jennifer Taylor
4790385022
Fix a logic error in if statement unwrapping, remove duplicated code in favor of a better true/false detection algorithm.
2021-05-04 02:30:37 +00:00
Jennifer Taylor
108d7c228d
Handle having bytecode with no actual entries.
2021-05-04 02:29:53 +00:00
Jennifer Taylor
54b4c88d65
It seems that some bytecode leaves extra stuff on the stack sometimes, I think this is fine?
2021-05-04 02:29:27 +00:00
Jennifer Taylor
70c7448aa0
Fix nasty bug where sometimes we would have gotos without corresponding labels.
2021-05-02 03:50:48 +00:00
Jennifer Taylor
336ef6fc3d
Check in some beta code for a new style of if detection that does not work yet.
2021-05-02 03:50:19 +00:00
Jennifer Taylor
7493db034f
Add in basic throw, test code generation of mostly the same code as we tested the code graph with.
2021-05-02 03:49:35 +00:00
Jennifer Taylor
829597a871
Address the fact that I never handled END actions (they end processing as they are encountered).
2021-05-02 03:48:38 +00:00
Jennifer Taylor
261c3d7fbd
Start a unit test framework for decompilation, in the hopes of eventually tracking down a logic bug in if extraction.
2021-05-02 03:48:07 +00:00
Jennifer Taylor
820a86845d
Fix shallowest successor find when multiple nodes lead to the same location, fix if swap optimization and add BITAND and NOT_BITAND if support.
2021-04-26 03:24:47 +00:00
Jennifer Taylor
8cf219cb25
Avoid duplicating labels outside of and inside of do-while statements. Avoid going to or generating negative labels (artificially inserted nodes).
2021-04-26 03:24:24 +00:00
Jennifer Taylor
b7523b5521
Fix if processing by getting rid of negation early optimization. There was a path that
...
was negating but not being checked when doing the final render, leaving some if statements
inverted. Moved the optimization to a final pass for more generalized correctness.
2021-04-26 02:50:19 +00:00
Jennifer Taylor
2d4f6cadfb
Much more complicated stack walking algorithm that chains the stack through chunks and also calculates when temporary variables are needed.
2021-04-26 01:28:48 +00:00
Jennifer Taylor
4d0bfe5637
Fix an edge case in if detection where we reused IDs incorrectly by stopping the reuse of IDs. Also, convert returns much earlier in the stack.
2021-04-26 01:27:51 +00:00
Jennifer Taylor
06bd9d1245
Fix logic error where we lost if statement jump points because __gather_chunks was too-aggressively dropping end pointers.
2021-04-26 01:26:50 +00:00
Jennifer Taylor
6f78668e9a
Fix up exceptions and add more invariant checks to loop generation code.
2021-04-26 01:25:32 +00:00