Debugging emulated CM code is relatively straightforward. Since each CM
instruction is fetched and emulated, it is necessary to know
only where you wish to set a breakpoint.
For emulated CM code you can break at any instruction:
$ cmdebug > B PROC+%6
$ cmdebug > B PROC+%10
$ cmdebug > B PROC+%15
|
The debugger places a special BRKP instruction at the specified addresses.
When an emulated breakpoint is encountered, the emulator traps it into Debug
before the original instruction is emulated. The environment variable
entry_mode is set to "cm", and the user enters CMDebug.
CM Object Code
CM Instructions
+-------------+
| PROC+%0 |
| PROC+%1 |
| PROC+%2 |
| PROC+%3 |
P > | PROC+%4 |
| PROC+%5 |
[1] | PROC+%6 | <- Breakpoints are set in the object code
| PROC+%7 | at the specified addresses
[2] | PROC+%10 |
| PROC+%11 |
| PROC+%12 |
| PROC+%13 |
| PROC+%14 |
[3] | PROC+%15 |
| PROC+%16 |
+-------------+
|