[Vm-dev] squeak decompiler

Whiter Walt whiter.walt at gmail.com
Mon Oct 20 12:57:42 UTC 2014


thanks for your reply!
it is a pity, there is no documentation about decompiling. Anyway, 
thanks for your summary/introduction about decompiling squeak bytecode...


Am 20.10.2014 11:31, schrieb Clément Bera:
> Hello,
> I don't think there's much documentation available.
> Basically it builds a method AST from a compiled method. It is 
> composed of the Decompiler that walks over the bytecode and the AST 
> constructor that builds the AST.
> Most nodes maps one to one to AST nodes and are easy to decompile. The 
> main complexity comes from the decompilation of inlined control flow 
> structures, which is based on heuristics:
> - loops are decompiled to while loops and if a certain pattern is met 
> (there's an iterator incremented at each loop iteration) then the 
> while loop is replaced by #to:do: or #to:by:do:
> - conditions are decompiled to ifTrue:ifFalse:, except if the pattern 
> matches a #ifNil:ifNotNil: (there's == nil bytecodes), and except if 
> the conditional jumps jumps to a push true or push false bytecode, in 
> which case it is decompiled to #and: or #or:
> - dup mixed with jumps are decompiled to #caseOf: or #caseOf:otherwise:
> There's a little complexity from cascade too. They're detected with 
> dup bytecode without jumps on the contrary to #caseOf: .
> Note that the Decompiler is unreliable, recompiling the whole image 
> from decompiled sources crashes, and seemingly it has not been 
> possible to do that in the past decade (it was possible in Smalltalk 
> 80). So you can consider that the decompiler can decompile 99% of 
> methods but not all of them.
> An interesting work would be to improve the decompiler so that the 
> image does not crash when all the methods are recompiled from 
> decompiled sources.
> Regards,
> Clement
> 2014-10-20 10:51 GMT+02:00 Whiter Walt <whiter.walt at gmail.com 
> <mailto:whiter.walt at gmail.com>>:
>     Hi,
>     I am interested in the Squeak Decompiler class. Is there any
>     technical information in the net, which explains the
>     functionality? Or maybe it follows some common "rules", I can find
>     in some paper or book?
>     cheers
>     Walt

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20141020/7dd6b6ee/attachment.htm

More information about the Vm-dev mailing list