Help contents
Assembly language flow charts
Supported languages
Visustin generates flow charts for certain assembly languages. The supported assemblers and processor families are as follows:
- MASM/Intel x86. Microsoft Macro Assembler v6.1.
- NASM/Intel x86. The Netwide Assembler v2.07.
- IAR/MSP430. IAR Assembler v2.x for Texas Instruments’ MSP430 Microcontroller Family.
The following Intel x86 processor instruction sets are supported: 8086, 80186, 80286, 80386, 80486, Pentium, P6, MMX, SSE, SSE2, FPU x87.
Other processors or assemblers than those listed above are not supported. If you require support please write us.
Supported instruction types
Visustin recognizes all the instructions that are relevant to flowcharting:
- Unconditional jumps such as JMP.
- Conditional jumps such as JNZ.
- Looping instructions such as LOOP.
- Interrupt calls such as INT.
- Return instructions such as RET.
- Halt instructions such as HLT.
- Exception instructions such as UD2.
- Prefix instructions such as REP and LOCK.
All other instructions types are supported as well but have no specific visualization.
Supported syntax features
- Processor instructions
- Line labels
- Comments
- Procedures
- Structured assembly, such as .if, .else and .while in MASM
- Conditional compilation directives (such as if or %if)
- Repetitive compilation directives (such as repeat or %rep)
- Segment definitions (.CODE, .DATA etc.)
Some data segments are not visualized, because they contain no control flow.
Limitations
- Procedure calls are not resolved.
- The flow analysis is static. Run-time conditions such as register contents are not simulated. If a jump target is determined dynamically (say read from a jump table), the jump target will be unknown to Visustin.
- Actions performed by interrupts are unknown to Visustin. If a DOS program terminates by calling
int 21h, Visustin will not notice it.
- Conditional set/move instructions (SETcc, CMOVcc) are not visualized in any special way.
- Macros are not expanded, so a macro call looks like a simple statement and not the action the macro does. NASM macros proc, endproc and return (nagoa.inc) are supported, though.
Inline asm blocks
Some higher-level languages, such as C and Delphi, support inline assembly language blocks. To flowchart the block, select the relevant Assembler mode and load the asm block into Visustin. Be sure not to flowchart any of the other language code at the same time, since Visustin flowcharts a single language at a time.
©Aivosto Oy