| OCR Text |
Show and the program counter before the instruction is executed. Since it is easy to recreate the values of the instruction counter and the program counter after the instruction they are not included in the event. If an instruction alters control flow, then the new value of program counter is placed in the new value of the result. Additional information that could be included in an event is the information about the operands. Provided that there are at most two operands to an instruction, four words are required to describe them: two for the addresses and two for the values. This would increase the size of an event from six words to ten. Based on experience with applications of introspection, I decided that the information about operands does not justify additional overhead. Therefore, this information is not included in an event, although it may be added in the future. All values, except the old value of the result, can be easily obtained. To obtain the old value of the result, it is necessary to read the location of the result before the new value is stored. A detailed discussion of the implementation of this feature is in the Section 5.4. Events are combined into an execution stream. The execution stream provides four important pieces of information about the executor's behavior: • control flow, • data flow, • trace, • inverse trace. The program counter and the executed instruction provide the control flow. The address of the result provides the data flow. The address of the result and the value of the result provide the trace. The address of the result and the old value at this address provide the inverse trace. 25 |