Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

prof(1)

pixstats(1)

pixie(1)  —  Commands

NAME

pixie − add profiling code to a program

SYNOPSIS

pixie in_prog_name [ options ]

DESCRIPTION

The pixie utility reads an executable program, partitions it into basic blocks, and writes an equivalent program containing additional code that counts the execution of each basic block. (A basic block is a region of the program that can be entered only at the beginning and exited only at the end).  The pixie utility also generates a file containing the address of each of the basic blocks. 

When you run the pixie-generated program, it will (provided it terminates normally or via a call to exit(2)) generate a file containing the basic block counts. The name of the file is that of the original program with any leading directory names removed and .Counts appended. Programs that call fork() generate multiple basic block counts files, each with the process-id number appended to the name. The prof(1) and pixstats(1) utilities can analyze these files and produce a listing of profiling data. 

FLAGS

−[no]quiet
[Permits] or suppresses messages summarizing the binary-to-binary translation process. Default: −noquiet. 

−bbaddrs name
Specify a name for the file of basic block addresses.  Default is to remove any leading directory names from the in_prog_name and append .Addrs. 

−bbcounts name
Specifies the full filename of the basic block counts file. Default: in_prog_name.Counts. 

−[no]pids
[Disable] or enable the addition of the process-id number to the filename of the basic block counts file. This is useful for collecting information for multiple invocations of the pixie output file. Default: −nopids. 

−o name
Specifies the name of the pixie-generated program.  The default is to remove any leading directory names from the in_prog_name and append .pixie. 

RESTRICTIONS

The handler function address to the signal system calls is not translated, and so programs that receive signals will not work pixified. 

Programs that call vfork() will not work pixified because the child process will modify the parent state required for pixie operation.  Use fork() instead. 

Pixified code is substantially larger than the original code.  Conditional branches that used to fit in the 21-bit branch displacement field may no longer fit, generating a pixie error. 

RELATED INFORMATION

prof(1), pixstats(1). 

Programmer’s Guide

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