Releases: Milo-D/libvmcu-Virtual-MCU-Library
v.0.5.5
v.0.5.4
v.0.5.4
-
Added first Submodule for the Analyzer: Static SFR Analysis
-
This submodule explores special function registers in disassembly
-
once an address to a special function register has been detected
by the module, an annotation will be created with its corresponding name -
example: out 0x3f, r1 ; SREG
-
-
Minor refactor of timer8.
-
New Debugcommand: xeb - examine EEPROM as bitmap
-
Cleanup: unused Headers, unused variables
v.0.5.3
v.0.5.3 - 2020-01-23
-
Added: Instruction Decomposer - Stage 1 of the Analyzer Pipeline
- decomposes AVR Opcodes into its components
-
Extended Analyzer Pipeline:
- Stage 0: Decoder (decodes binaries, extracts opcodes)
- Stage 1: Decomposer (decomposes opcodes into its operands)
- Stage 2: Disassembler (disassembles opcodes into mnemonics)
- Stage 3: Analyzer (performs static analysis on disassembly)
-
Timer0: Minor work on Prescaler.
-
Added: EEPROM Write-Only Mode
- Now supporting all modes of EEPROM programming
-
Added: Opcode view in disassembly.
v.0.5.2
v.0.5.2 - 2020-01-13
-
This update reduces heap allocations for an overall better memory performance
-
Further improvements regarding memory consumption are coming soon
-
Now using sstream in mnemonics generator and debugprinter
- avoiding unnecessary heap allocations
-
Added: stringstream collection (sstream.c, sstream.h)
- will be replacing queue collection (queue.c, queue.h)
v.0.5.1
v.0.5.1 - 2020-01-10
-
Systemprinter refactored
- Rename sytemprinter.* to debugprinter.*
- Seperated printer functionality into six files:
- gpnl_printer.* (printer for the gpr panel)
- spnl_printer.* (printer for the sreg panel)
- fpnl_printer.* (printer for the flash panel)
- dpnl_printer.* (printer for the data panel)
- epnl_printer.* (printer for the eeprom panel)
- rpnl_printer.* (printer for the right panel)
- functionality stayed the same
-
Added credits for the architecture diagram.
-
Fixed comments for push/pop mnemonic.
v.0.5.0
v.0.5.0 - 2020-12-31
-
Added: Analyzer Module.
- The Analyzer Module consists of multiple (future) submodules.
- Each submodule will be covering exactly one aspect of static code analysis.
- Planned submodules:
- ISR analysis (explore details about ISRs in your code)
- SFR analysis (annotate addresses which target special function registers)
- Function analysis (analyse function calls and maybe even their arguments/return-values)
- many more...
- The analyzer is a work in progress
-
Performance: Reached 17 MHz execution speed. It is now possible to simulate default Arduino in realtime.
-
Refactor of toplevel structures
- table_t class is now only for user-defined entries like breakpoints, etc.
- system_t class does not contain table_t class anymore.
- report_t class is the report of the analyzer after decoding and disassembling hexfile.
-
Displaying hexadecimal addresses instead of line numbers in sidepanel.
-
Table commands (like break, unbreak) are now requiring a hexadecimal address
-
Added: Diagram of the analyzer dataflow
-
Added: New screenshot
-
DebugWindow Refactor (II)
- panel properties are now calculated seperately in <g,s,f,d,e,o,r> pnl_ctor
v.0.4.5
v.0.4.5 - 2020-12-21
-
DebugWindow refactored.
- No use of generic panels in DebugWindow anymore
- Created subdirectory: src/cli/util/ and include/cli/util
- Panel class is now stored in cli/util/
- Created individual panels (gpnl_t, etc.) in cli/debug/
- gpnl_t, spnl_t, fpnl_t, dpnl_t, epnl_t, opnl_t, rpnl_t are extending panel_t (cli/util/panel.h)
- Created _win_properties which holds data related to the window (WINDOW*) state (height, width, y, x)
- struct _properties extends struct _win_properties (adding page properties)
- Panels are now initialized by struct _properties*
- Prompt is now initialized by struct _win_properties* (prompt has no page properties)
- Right now extending panel_t class has no real benefits, since all individual panels are the same,
but this will change in the future.
-
Added: 'cc' debugcommand. Create comments in disassembly with 'cc '
-
Statusregister can be read/written now by writing to its dataspace address (0x005f)
v.0.4.4
v.0.4.4 - 2020-12-01
-
Major Performance Enhancement
- 56% better runtime performance
- before: 7.250.000 Cycles per second (7,25 MHz)
- after: 12.800.000 Cycles per second (12,8 MHz)
- Tested on an Intel Core i5. So actual execution speed may differ.
- Goal: atleast 20 MHz
- 56% better runtime performance
-
Fixed some issues in the Makefile
v.0.4.3
v.0.4.3 - 2020-11-17
-
Added new Debugcommand: jc (jump cycles)
- Fast forwarding simulation without the need for setting breakpoints
- Useful when waiting for an event in an endless loop, like EEPROM Ready or a Timer Overflow.
-
Bugfix: Timer increments now, even when executing illegal opcode.
-
Timer Interrupts are now handled in TIFR0 and TIMSK0, too.
v.0.4.2
v.0.4.2 - 2020-11-13
-
Added two functions to system_t:
- sys_set_sfr(system_t*, const uint16_t, const int)
- sys_clear_sfr(system_t*, const uint16_t, const int)
-
The first 32 registers in IO-Space are now set/cleared by writing single bits when using sbi, cbi
-
Headless Mode is now ignoring EEPROM values equals to 0xff, in order to minimize output
-
Bugfix: Flag clearing in TIFR0
-
Added new testfile: kmp.asm (KMP Pattern Matching for M328P)