Comments (1)
I think a good compromise is to save the interprocedural control flow graph (ICFG) after the scanning has been completed. That way, when reloading a program, Reko only has to disassemble/rewrite the blocks without having to perform actual scanning. This could probably be parallelized for great speed.
Saving would store the properties of all Procedure
s and Block
s in a file. Each procedure would save the graph of addresses of the blocks that it consists of. Each block would save its start address and its length in memory units (read: bytes on most CPUs).
When loading, the skeleton of the ICFG would be created by loading all the procedures' and blocks' data from the file. Empty procedures and blocks would be created, complete with the graph structure. Then, the contents of the blocks would be read, using as many threads as possible in parallel. Since basic blocks are independent of each other, there would be no contention.
It's probably valuable to create a prototype to measure how much this would speed up loading files.
from reko.
Related Issues (20)
- The `Mark Type` dialog is non-intuitive and needs improvement
- RISC-V: disassembler incorrectly decodes CSRRx instructions HOT 6
- Adding PalmOS 68k Support HOT 8
- RISC-V: immedate operands are incorrectly formatted HOT 3
- Output imported function signatures in the header file HOT 1
- Multidimensional array can not be reconstructed if memory accesses are done at another statements
- cannot build solution HOT 8
- RISC-V: Missing instructions from H and Q extensions HOT 1
- RISC-V: missing c.slli64, c.srai64, c.srli64 hint instructions HOT 1
- Unable to cast object of type 'Reko.ImageLoaders.Omf.OmfLoader' to type 'Reko.Core.Loading.ImageLoader' HOT 3
- no binary output after building on Ubuntu HOT 2
- Disassembly view now corrupts at the start of some procedures. MASTER: WindowsDecompiler HOT 2
- Crash at 'reconstruct data types' HOT 2
- can not open csky elf HOT 2
- Several bugs found: incorrect function argument order, double type value, and strings HOT 2
- Unexpected argument order when decompiling program
- Reko fails to recover floating-point code
- Reko doesn't generate any decompiled code
- Problems with type inference around `printf`
- No string literals are generated
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from reko.