HP (Hewlett-Packard) IA-64 Computer Accessories User Manual


 
6-4 Program Simulation Copyright © 2000 Hewlett-Packard Co.
Ski IA-64 Simulator Reference Manual 1.0L
example is xski my_program”. The second way is to use the load, iaload,orromload commands, which take the
filename as the first argument, for example, “load my_program”.
6.5.2 Summary of Program Loading Commands
load filename [args]+
Prepare for IA-64 application-mode simulation: Load the file specified by filename and prepares to pass the program
args encoded using the C-language argc/argv mechanism. The file must be an IA-64 ELF file.
iaload filename address [mapfile [args]+]
Prepare for IA-32 application-mode simulation: Load the IA-32 executable file specified by filename, which must be
an MS-DOS .com or .exe file and prepare to pass the program args encoded using MS-DOS command line
argument conventions. The address specifies where Ski should load the program. This should be a physical address;
virtual addressing is only supported for system-mode programs. The value you provide is used, along with
information from the .exe file or MS-DOS defaults for a .com file, to setup the IA-32 execution environment, such
as segment descriptors, the stack pointer, etc. The mapfile is an ASCII text file providing the mappings between
symbols and addresses; it must be compatible in format with the mapfile produced by the Microsoft “ML” linker. The
psr.is bit is set.
romload filename address [mapfile]
Prepare for IA-64, IA-32, or mixed system-mode simulation: Load the MS-DOS .com-format file specified by
filename. (The MS-DOS .com format is essentially raw binary.) Address and mapfile are as described for the iaload
command above. The address can be physical or virtual, depending on the setting of the psr.it bit, as described in
Section 4.4.1.3, “Addresses”.
6.5.3 Notes about Program Loading
6.5.3.1 Adding Information after Loading
Sometimes, the load file doesn’t contain enough information. In this case, you can use a command file (see Chapter 9,
“Command Files”) to add more information. You execute the command file at the appropriate time, generally after loading
the program. For example, perhaps you want to test how an application program handles error conditions that are hard to
create in a “real” hardware environment. You could load the program and use a command file to create the error condition.
Then you would run the program and test its behavior.
As another example, perhaps you want to simulate the transfer of control from a bootstrap program, an interrupt, or an
application program to the operating system. You could load the operating system as a system-mode program and use a
command file to set up memory and registers to their appropriate state at the instant of the control transfer.
6.5.3.2 Creating the argc, argv, and envp Parameters
The first time an application-mode simulated program starts, it receives command line parameters and environment vari-
ables using the C language argc/argv/envp mechanism. (IA-32 application-mode programs do not receive environment
variables.) By default, the program receives the same command line parameters you gave to Ski when you started it. For
example, if you invoked Ski as “xski my_program foo bar”, Ski would start up using the X Window System interface,
load the executable IA-64 program my_program, and use “foo”, bar”, and environment variables to initialize the argc,
argv and envp parameters passed on the memory stack. The environment variables are a copy of the variables Ski received
from the shell when it started.
Instead of specifying the executable program on Ski’s invocation line as in the example above, you can use the load or
iaload commands to load the executable program. You can add extra arguments to load and iaload. Later, when you
invoke the run command, Ski will pass the extra arguments to the simulated program as command line parameters. For
example, you could issue the command load my_program foo bar”. When you run the program, Ski would pass
foo” and “bar” to the program as command line parameters using the argc/argv/envp mechanism. Note that IA-32 appli-
cation-mode programs must be loaded with the iaload command; they cannot be loaded from the Ski invocation line.