-
Notifications
You must be signed in to change notification settings - Fork 0
moritz93/Decompiler
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
================= DECOMPILER README ================= The decompiler takes a SimpleScalar disassembly file (.s), which is then translated to a LLVM disassembly file (.ll). The .s file must not contain any library subroutines. In order to handle the initialized global memory properly, additionally, the corresponding binary file (.o) has to be located in the same folder. The only external library is jGraphT, that is already included in the .jar file. Execute decompiler.jar to run the translator: java -jar decompiler.jar test.s The single argument is the .s file’s path. The .ll file will be saved to the same folder, where the source file is located. Execution from command line: 1. Compile .java files with the use of external .jar files located in /lib: mkdir bin; javac -d bin -cp lib/\* -sourcepath src src/main/main.java Afterwards, all .class files are located in /bin 2. Run the translator: java -cp bin:.:lib/\* main.Main aes.s ======= This file explains how you write a ".c" file of your own and go through all the steps to validate the design in the binary to LLVM translation project ======= 1. Write a .c file, say test.c 2. Compile test.c into simplescalar binary test.o sslittle-na-sstrix-gcc.cde -o test.o test.c 3. Disassemble binary test.o into test.s sslittle-na-sstrix-objdump.cde -d test.o > test.s 4. Run the translator (depends on the design of translator) to produce LLVM code test.ll <Translator> test.s > test.ll 5. Run LLVM assembler to produce LLVM bitcode test.bc llvm-as test.ll (this will produce test.bc) #note: if the translation is wrong, the assembler will fail to produce test.bc 6. Run simplescalar binary: sim-outorder test.o (this should run without failure) 7. Run LLVM bitcode klee --write-smt2s test.bc (this should run without failure) #note: if the translation is wrong, this step might generate unpredictable output, such as crashes #### The goal is to compare executions in step 6 and step 7. They should produce a. Same number of memory accesses, b. Same sequence of memory accesses ####
About
Decompiler from SimpleScalar to LLVM
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published