flat assembler
Message board for the users of flat assembler.
Index
> Projects and Ideas > Cross-platform, universal schematic development environment. |
Author |
|
bitRAKE 14 Sep 2020, 19:52
|
|||
14 Sep 2020, 19:52 |
|
KostX 14 Sep 2020, 20:04
Yes, kind of. Take a screen shot of my program looking.[/img]
|
||||||||||||||||||||||||||||
14 Sep 2020, 20:04 |
|
AsmGuru62 14 Sep 2020, 20:16
I tried to make that same thing once, long ago. It got bulky and slow to create a useful code.
The system was able to create few types of blocks: sequence block, condition check (IF statement, basically), loop, variables block. Then those things were connected with lines (mouse dragging mostly). Connected blocks become subroutines or functions, then sets of those plus some variables block become the object. Anyhow, long story short - it quickly become too tedious to code in this monstrosity. I realized, that it is way faster to just write code with help of some wizard-like interface, or just have a cache of code fragments where you pick a fragment and with one click it will insert all lines of the fragment. Just curios: what language you are using to do this? When you say "cross-platform" -- do you mean different OS-es or different CPU-s? I am guessing both? If so, you should formalize all your blocks. Formalizing means describing your code inside blocks with terms, which do not mention any CPU specifics (registers), because if you mention r15 - it will not do well for x86, but OK for x64 and not good at all for ARM. You see? And how do you optimize code? Like if you have to load a register with same value in sequence of two code blocks -- you need to avoid the redundant load. It is interesting project -- and looking great -- nice screens. If you need any code to write -- I can help. P.S. The secret of large project is just naming your functions properly: module_function. Code: proc GarbageCollector_Allocate uses ebx ecx, BlkSize:DWORD ; ; ... your solution here ... ; ret endp |
|||
14 Sep 2020, 20:16 |
|
KostX 15 Sep 2020, 05:36
Quote: Then those things were connected with lines (mouse dragging mostly). Connected blocks become subroutines or functions, then sets of those plus some variables block become the object. I thought about that and what I became to: If connect both data and code lines, really, as you said, project becomes such as a "spiderweb". I'm not linked this way. On the other hand full denial of lines usage (as in scratch or blockly) makes project not so understandable. So I decided to connect with lines only these things that responsible for code. And all data setups through block parameters (see screen shot below). How about values (variables)??? When compiler passes through scheme it can calculate distance from locations where some value used repeatedly. So, if value uses globally (at many locations withing whole project) in becomes a global varible. By access type these ones can be separated by read-only, read-write and uninitialized. If value use within a function it becomes a local variable. If value uses between several instructions lines it stores in a register. Which register to use decides component library internal settings. Quote: When you say "cross-platform" -- do you mean different OS-es or different CPU-s? Of course both. Quote: you should formalize all your blocks. Each component from library links to its according operation file (.cso). Take a look at these directories: \Configurations\Constructor script\Components\A_equal_B\A_equal_B__Operation.cso \Configurations\Constructor script\Components\ShowMsg\ShowMsg__Operation.cso \Configurations\Constructor script\Components\Terminate\Terminate__Operation.cso \Configurations\Windows\Components\A_equal_B\A_equal_B__Operation.cso \Configurations\Windows\Components\ShowMsg\ShowMsg__Operation.cso \Configurations\Windows\Components\Terminate\Terminate__Operation.cso Thus, when compilation performs, constructor passes through all blocks and links to data according to currently selected target platform (selected in bold).
|
||||||||||
15 Sep 2020, 05:36 |
|
idle 26 Apr 2021, 19:07
IDA has build [3d] graph option for code disassembly.
Stats, profiling? and fun. And you are to do GIANT reverse job. IF COND THEN DO visualisation into pseudo code, in fact. The truth is that you are to spend years with the deal. Anyway, interesting stuff. |
|||
26 Apr 2021, 19:07 |
|
< Last Thread | Next Thread > |
Forum Rules:
|
Copyright © 1999-2024, Tomasz Grysztar. Also on GitHub, YouTube.
Website powered by rwasa.