Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ (1) — Plan9 1st Edition

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

nm(1)

db(1)

VI(1)

NAME

vi, ki − instruction simulators

SYNOPSIS

­vi [ ­textfile ]
­vi ­pid
­ki [ ­textfile ]
­ki ­pid

DESCRIPTION

­Vi simulates the execution of a MIPS binary in a Plan 9 environment.  It has two main uses: as a debugger and as a statistics gatherer.  Programs running under ­vi execute about two hundred times slower than normal—but faster than single stepping under ­db.  ­Ki is similar to ­vi but interprets SPARC binaries.  The following discussion refers to ­vi but applies to ­ki as well. 

­Vi will simulate the execution of a named ­textfile.  It will also make a copy of an existing process with process id ­pid and simulate its continuation. 

As a debugger ­vi offers more complete information than db(1). Tracing can be performed at the level of instructions, system calls, or function calls. ­Vi allows breakpoints to be triggered when specified addresses in memory are accessed.  A report of instruction counts, load delay fills and distribution is produced for each run.  ­Vi simulates the CPU’s caches and MMU to assist the optimization of compilers and programs. 

The command interface mirrors the interface to db; see db(1) for a detailed description. Data formats and addressing are compatible with ­db except for disassembly: ­vi offers only MIPS (db -mmipsco) mnemonics for machine instructions.  ­Ki offers both Plan 9 and Sun SPARC formats. 

Several extra commands allow extended tracing and printing of statistics:

$t[0ics]
The ­t command controls tracing. Zero cancels all tracing options. 

­i Enable instruction tracing

­c Enable call tracing

­s Enable system call tracing

$i[itsp]
The ­i command prints statistics accumulated by all code run in this session. 

­i Print instruction counts and frequency. 

­p Print cycle profile. 

­t (Vi only) Print TLB and cache statistics. 

­s Print memory reference, working set and size statistics. 

:b[arwe]
­Vi allows breakpoints to be set on any memory location.  These breakpoints monitor when a location is accessed, read, written, or equals a certain value.  For equality the compared value is the ­count (see db(1)) supplied to the command.

SEE ALSO

nm(1), db(1)

BUGS

The code generated by ­vc and ­kc are well supported, but some unusual instructions are unimplemented. 
Some Plan 9 system calls such as ­fork cause simulated traps.  The floating point simulation makes assumptions about the underlying machine floating point support. The floating point conversions performed by vi may cause a loss of precision. 

Plan 9  —  January 03, 1993

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026