Topics

UTTORI ASM ยท IN DEVELOPMENT

Analysis coverage in VS Code

Use analysis coverage in vs code in the Uttori ASM VS Code extension.

The Analysis Coverage view follows the selected Git source project's local evidence binding. Without a selected source binding it discovers up to 32 native analysis.json projects, or reads asm.analysisProject. A broken selected binding reports its error rather than opening an unrelated store. Discovery reads only manifests. Expanding a project validates native metadata and builds projections in background Node processes using the project's asm.analysis.maxMemoryMiB budget (default 4096 MiB). A fatal heap error is isolated from the extension host. SQLite selects and pages the required records. Summaries and at most 200 rows per page cross back to the UI. Sources are expanded lazily, and inline annotations request only visible source lines. Requests within each process run one at a time. Reads have a 60-second execution timeout, excluding time queued behind another view. A failed process reports the operation and memory budget and can be retried by refreshing the view. Summary groups report exclusive classified/unknown/conflict totals, overlapping opcode / operand / data asset classifications, and executed / operand / read / written runtime overlays.

The ROM map is a coalesced list of half-open file-offset segments, paged at 200 rows so expanding a large ROM cannot enqueue the entire map in VS Code at once. CPU and RAM addresses are never guessed into ROM offsets: records without an explicit file address or file offset remain visible under Projection diagnostics.

In a trusted local Git source project, Classify Analysis Range, Set Analysis State / Entry Point and Resolve Indirect Target prepare tracked research edits. The chosen qualified range/site and certain manual provenance remain explicit. Edit Analysis Research opens the proposal as normal JSON; native Undo, Save and Git diffs apply. Save and analyze evidence before preparing the next source generation. Source edits and research are integrated through a previewed native merge. Standalone evidence projects and restricted workspaces remain read-only in these authoring actions. See research editing.

The Sources view groups persisted capture and import evidence. Selecting a location retains its address space, ROM identity, captured bytes, and record provenance.

Opening a location first looks for an exact current debug-map source range with matching ROM output identity and matching source-file hash. If no current source exists, an active Uttori debug session can provide virtual disassembly through DAP. The final fallback is a read-only view of persisted CFG records. It does not re-decode the ROM and marks unavailable operand bytes as ??. Stale source mappings are reported rather than trusted.

Source editors show configurable information independently of instruction documentation. The default compact preset shows file/CPU locations and available qualified execution counts. Use Assembly: Choose Editor Information Preset for compact, authoring, or disassembly defaults; Configure Inline Fields chooses common fields. Authoring uses successful build maps and output bytes without a native analysis project. Resolved operands are captured during encoding and require a rebuild for older maps. The eye button beside Build Binary toggles inline information without disabling hover. asm.editorInfo.* settings control each surface, template fields, placement, and budgets; explicit legacy visibility and column settings remain supported. Decorations use the editor theme. See Editor Information for configuration examples.

Assembly: Inspect Line Information loads detailed project/runtime state, transitions, memory, evidence, and control-flow previews on request, with page selection for long output. Stored evidence is unchanged. CPU aliases retain their own execution counts. Source/dependency changes invalidate the snapshot immediately. Debugger disassembly and navigation keep their existing annotation formatter.

Annotations are presented only when a validated native project and debug map name the same target and exact ROM content SHA-256/size, and the current source bytes still match the debug map's source SHA-256. Editing a mapped source clears its decorations immediately. Saving restores them only if the new bytes match a map. Logical addresses and explicit output offsets are indexed separately and filtered by architecture. The extension never guesses a mapper projection, changes emulator instructions, or lets an invalid analysis project prevent debugger startup.

Compact source overlays query indexed execution counts without decoding detail payloads. Selected state fields, the inspector, and debugger overlays query SQLite for the requested addresses before decoding bounded detail payloads. The first request builds derived address/output indexes. Later reads update only changed entries. Frequently executed instructions show a bounded state/memory preview marked details limited. Execution totals include every matching observation. Debugger startup loads matching manifests, then batches annotation queries for each displayed disassembly page. Bounded annotation queries run outside the editor host. Research proposals are ordinary file edits, and source operations use isolated workers. Bulk Coverage and Sources queries use a separate process, so their queue or failure cannot cancel an edit. Each process uses the configured analysis memory budget and serializes its own requests.