Skip to Main Content
Although static compiled instruction set simulators (ISSs) are much faster than the interpretive ISSs, they are barely used owing to the restrictions on flexibility and compile time overhead. In this paper, we present new techniques that reduce the compile time overhead and increase the flexibility of the static compiled ISS while keeping the advantages of the static compiled simulation. We remarkably reduce the compile and recompilation time using object format instead of binary format as simulator input "dynamic branch handler" solves the indirect branch problem without loss of simulation speed, and "dynamic code handler" enables to handle the dynamic code whose contents are determined at run-time. We implement those solutions in OBSIM, which is cycle-accurate static compiled ISS. OBSIM is able to perform the simulation at a speed of up to 50 millions of simulated instructions per second on Xeon 2GHz processor. We also achieve about nine times faster recompilation speed than the corresponding static compiled ISS for the embedded software whose code consists of 18 files and 199K lines of total C code.