2 KiB
Obsidian X86 Flow Graph
What is this?
This is a plugin for Obsidian, that converts x86 assembly into a flow diagram using Obsidian Canvases
Usage
This plugin adds a command called x86-create-flow-diagram. To use this plugin you must highlight a valid x86 code block (without the ``` at the start and end) and run the command.
This plugin requires a specific format for the assembly in order to properly generate nodes and edges for the flow graph.
The key format features are as a follows:
- All instructions must be indeneted
- Location for jumps must have no spaces before the location name
- jmp instruction must be used for unconditional jumps (1 branch)
- any other instruction beginning with a j is treated as a conditional jump (2 branches)
This is an example of a valid x86 code block for use with this plugin
cmp [ebp+var_8], 1
jz loc_401027
cmp [ebp+var_8], 2
jz loc_40103D
cmp [ebp+var_8], 3
jz loc_401053
jmp loc_401058
loc_401027
Code for case 1
jmp loc_401058
loc_40103D
Code for case 2
jmp loc_401058
loc_401053
Code for case 3
loc_401058
Program end
running x86-create-flow-diagram on the above codeblock would result in the following graph being produced:
It won't look as nice as this at first, all of the blocks will be in a single column. You'll have to drag them around to make it look pretty. I'm working on doing this a little better...
Plugin in practice
Roadmap
TODO:
- Add true/false labels to edges
- Handle ``` characters on both sides of selected text
- Move nodes to left or right to increase readbility (kinda)
- Insert Link to graph below codeblock
- Test, test, test...

