Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ (1) — Plan9 4th Edition

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

nm(1)

db(1)

VI(1)

NAME

5i, ki, vi, qi − instruction simulators

SYNOPSIS

­vi [ ­textfile ]
­vi ­pid
­5i [ ­textfile ]
­5i ­pid
­ki [ ­textfile ]
­ki ­pid
­qi [ ­textfile ]
­qi ­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. 5i, ki, and qi are similar to ­vi but interpret ARM, SPARC, and PowerPC binaries.  The following discussion refers to ­vi but applies to the others 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.

SOURCE

­/sys/src/cmd/vi etc. 

SEE ALSO

nm(1), db(1)

BUGS

The code generated by the compilers is well supported, but some unusual instructions are unimplemented.  Some Plan 9 system calls such as ­rfork cause simulated traps.  The floating point simulation makes assumptions about the interpreting machine’s floating point support. The floating point conversions performed by ­vi may cause a loss of precision. 

Plan 9  —  November 28, 2004

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