Storing "Windows" Of Program Execution - HP 64700 series User Manual

Emulators
Hide thumbs Also See for 64700 series:
Table of Contents

Advertisement

;-------------------------------------------------
; If high index is greater than low index, swap
; values and move indexes again.
;-------------------------------------------------
MOVE.B
MOVE.B
MOVE.B
BRA.B
;-------------------------------------------------
; A0 = low address (needed to swap dividing value).
;-------------------------------------------------
OUT
MOVE.L
;-------------------------------------------------
; Swap dividing value and high index value.
;-------------------------------------------------
MOVE.B
MOVE.B
;-------------------------------------------------
; The area is now split into two smaller areas.
; The last high index value is the middle of the
; two areas.
The high and low addresses for the
; second QSORT call are pushed first.
;-------------------------------------------------
MOVE.L
ADDQ.L
MOVE.L
SUBQ.L
MOVE.L
MOVE.L
BSR.W
;-------------------------------------------------
; Increment stack pointer after call.
;-------------------------------------------------
ADDA.L
BSR.W
ADDA.L
DONE
RTS
Storing
"Windows" of
Program
Execution
3-36 Examples
[A0],D3
[A1],[A0]
D3,[A1]
INC_LOW
4[A7],A0)
[A1],[A0]
D2,[A1]
8[A7],-[A7]
; Push high.
#1,A1
A1,-[A7]
; Push middle + 1.
#2,A1
A1,-[A7]
; Push middle - 1.
A0,-[A7]
; Push low.
QSORT
#8,A7
QSORT
#8,A7
One common use for branches "per level" is to trace "windows" of
execution. If you're only interested in the execution that occurs
between two instructions, you may not want the trace to contain states
that occur before and after.
Sequence levels are paired in a typical windowing trace specification.
The first sequence level searches for the window enable state, and no
states are stored while searching. When the window enable state is

Advertisement

Table of Contents
loading

Table of Contents