You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I find that many functions e.g. constructors tend to preserve some registers, which the compiler gleefully takes advantage of. The typical outcome is variables like extraout_ECX in the decompiler output of the caller of such a function. Inlining (when applicable, which isn't always the case) leads to bloat in the size of the decompiler output
I have a very hacky workaround involving adding bogus calling conventions (an example for x86 windows at sad-dev@d6f6bbb ), but surely this can't be the only way? I also do not see a way to specify inputs as IN/OUT/INOUT, even by hacking the cspec, so any suggestions are most welcome
My guess is that any sane solution would involve extending the schema to store function prototype related overrides e.g. preserved registers, OUT directives, etc. I can probably implement this for a POC pull request, but don't know enough about the decompiler to say how much would need to be changed to take advantage of this new information.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
I find that many functions e.g. constructors tend to preserve some registers, which the compiler gleefully takes advantage of. The typical outcome is variables like
extraout_ECX
in the decompiler output of the caller of such a function. Inlining (when applicable, which isn't always the case) leads to bloat in the size of the decompiler outputI have a very hacky workaround involving adding bogus calling conventions (an example for x86 windows at sad-dev@d6f6bbb ), but surely this can't be the only way? I also do not see a way to specify inputs as
IN/OUT/INOUT
, even by hacking the cspec, so any suggestions are most welcomeMy guess is that any sane solution would involve extending the schema to store function prototype related overrides e.g. preserved registers, OUT directives, etc. I can probably implement this for a POC pull request, but don't know enough about the decompiler to say how much would need to be changed to take advantage of this new information.
Beta Was this translation helpful? Give feedback.
All reactions