123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- .TH VI 1
- .SH NAME
- 0i, 5i, ki, vi \- instruction simulators
- .SH SYNOPSIS
- .B vi
- [
- .I textfile
- ]
- .br
- .B vi
- .I pid
- .br
- .B 0i
- [
- .I textfile
- ]
- .br
- .B 0i
- .I pid
- .br
- .B 5i
- [
- .I textfile
- ]
- .br
- .B 5i
- .I pid
- .br
- .B ki
- [
- .I textfile
- ]
- .br
- .B ki
- .I pid
- .SH DESCRIPTION
- .I 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
- .I vi
- execute about two hundred times
- slower than normal\(embut faster than
- single stepping under
- .IR db .
- .IR 0i ,
- .IR 5i ,
- and
- .IR ki
- are similar to
- .I vi
- but interpret little-endian MIPS, ARM 7500, and SPARC binaries.
- The following discussion refers to
- .I vi
- but applies to the others
- as well.
- .PP
- .I Vi
- will simulate the execution of a named
- .IR textfile .
- It will also make a copy of an existing process with process id
- .I pid
- and simulate its continuation.
- .PP
- As a debugger
- .I vi
- offers more complete information
- than
- .IR db (1).
- Tracing can be performed at the level of instructions,
- system calls, or function calls.
- .I 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.
- .I Vi
- simulates the CPU's caches and MMU
- to assist the optimization of compilers and programs.
- .PP
- The command interface mirrors the interface to
- .IR db ;
- see
- .IR db (1)
- for a detailed description.
- Data formats and addressing are compatible with
- .I db
- except
- for disassembly:
- .I vi
- offers only MIPS
- .RB ( db
- .BR -mmipsco )
- mnemonics for
- machine instructions.
- .I Ki
- offers both Plan 9 and Sun SPARC formats.
- .PP
- Several extra commands allow
- extended tracing and printing of statistics:
- .TP
- .BR $t [ 0ics ]
- The
- .I t
- command controls tracing. Zero cancels all tracing
- options.
- .RS
- .TP
- .B i
- Enable instruction tracing
- .TP
- .B c
- Enable call tracing
- .TP
- .B s
- Enable system call tracing
- .RE
- .TP
- .BR $i [ itsp ]
- The
- .B i
- command prints statistics accumulated by
- all code run in this session.
- .RS
- .TP
- .B i
- Print instruction counts and frequency.
- .TP
- .B p
- Print cycle profile.
- .TP
- .B t
- .RI ( Vi
- only) Print TLB and cache statistics.
- .TP
- .B s
- Print memory reference, working set and size statistics.
- .RE
- .TP
- .BR :b [ arwe ]
- .I 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
- .I count
- (see
- .IR db (1))
- supplied to the command.
- .SH SOURCE
- .B /sys/src/cmd/vi
- etc.
- .SH "SEE ALSO"
- .IR nm (1),
- .IR db (1)
- .SH BUGS
- The code generated by
- the compilers
- is well supported, but some unusual instructions are unimplemented.
- Some Plan 9 system calls such as
- .I rfork
- cause simulated traps.
- The floating point simulation makes assumptions about the interpreting
- machine's floating point support. The floating point conversions performed
- by
- .I vi
- may cause a loss of precision.
|