Storyyeller / Krakatau

Java decompiler, assembler, and disassembler
GNU General Public License v3.0
1.95k stars 219 forks source link

Great job! #117

Closed redking00 closed 6 years ago

redking00 commented 6 years ago

I'm working in a tiny IDE for your great assembler / disassembler tool. I should be grateful if you would examine it. https://github.com/redking00/Volcano

Storyyeller commented 6 years ago

Looks pretty cool! I'll have to check it out in more detail later. One suggestion I have: list the version (i.e. commit hash) of Krakatau used and instructions for Pyinstaller so that others can rebuild the exe if necessary.

redking00 commented 6 years ago

To build a single exe I wrote a merged version (kasm.py) of the two scripts (assemble.py and disassemble.py, from your latest commit) which uses a new argument (-d) to switch between the two functions. I'll fork Krakatau and I will send you a PR, it would be nice if you include this in the main repo. Thanks for your suggestion, I'll include this information in the next commit. I'm sorry, English is not my first language. :)

Storyyeller commented 6 years ago

I've been thinking about rewriting the assembler and disassembler in Javascript. I figured that would make it easier to use, both in Electron apps and in the browser. What do you think?

redking00 commented 6 years ago

That would be nice! I was considering that option when I started Volcano but for the moment is a TODO. Javascript would open some interesting possibilities to your project. I encourage you to do it!

Storyyeller commented 6 years ago

I finished rewriting Krakatau in Javascript, but I'm not sure how to integrate it into Volcano, because I can't figure out how to run/build Volcano. Could you please include instructions for how to do this?

If not, I can try to figure it out on my own, but I might end up doing it a different way than you prefer.

redking00 commented 6 years ago

Volcano uses child_process to spawn the kasm executable with arguments. An option is to use the same method to spawn a headless electron process with the new Krakatau script but personally i would prefer to make a direct call to the krakatau api without spawning new processes at all. Are you planning to upload the code to github?. If it is ready i can try to integrate it in the next release. Volcano distribution is composed of two asar files (app.asar and volcano.asar) plus the krakatau folder, see "resources" into the installation folder. The krakatau folder contains the platform specific files from src/krakatau. Volcano.asar contains the files from src/ui and app.asar the rest. You can unpack the asar files to clarify my explanation. I'll include this information with some inprovements in the next commit (may be tomorrow)

Storyyeller commented 6 years ago

I'll upload it and send a pull request as soon as I can figure out how to make Volcano work.

redking00 commented 6 years ago

I have sent you a repo transfer with the krakatau-js module and I have a question: which cases are supposed to return more than one result from the assemble function?

Storyyeller commented 6 years ago

You can put any number of classes in a single assembly file.

Here's an example: https://github.com/Storyyeller/Krakatau/blob/master/examples/multipleclasses.j

redking00 commented 6 years ago

Thank you, I had not been aware of that.