|
|
Returns the starting point of the procedure containing the indicated CM logical
code address.
Syntax
cmstart (cmlogaddr)
Start addresses correspond to the CODE column in the PMAP
generated by the Segmenter. Refer to the CM program example below.
Formal Declaration
cmstart:lcptr (cmlogaddr:lcptr)
Parameters
- cmlogaddr
A CM logical code pointer address for which the starting address of
the containing level one procedure is to be returned.
Cmlogaddr must be a full CM logical code address
(LCPTR). For example:
- CMPC
Current CM program counter
- CMPW+4
Top of CM program window + 4
- PROG(2.102)
Program file logical seg 2 offset 102
- fopen+102
CM procedure fopen + %102 (assumes CM mode)
- cmaddr('fopen')+%102
CM procedure fopen + %102 (NM or CM mode
Examples
Assume that the following single segment CM program has been compiled, linked
with the PMAP and FPMAP options, and is now being executed:
PROGRAM test (input,output);
PROCEDURE one;
begin {one}
writeln('ONE');
end; {one}
PROCEDURE two;
PROCEDURE three;
begin {three}
writeln('THREE');
end; {three}
begin {two}
writeln('TWO');
three;
end; {two}
begin {main body} {Outer block is named "ob'" by the compiler}
one;
two;
end. {main body}
PROGRAM FILE PTEST.DEMO.TELESUP
SEG' 0
NAME STT CODE ENTRY SEG
OB' 1 0 13
TERMINATE' 5 ?
P'RESET 6 ?
P'REWRITE 7 ?
P'CLOSEIO 10 ?
P'INITHEAP'3000 11 ?
TWO 2 71 123
P'WRITELN 12 ?
P'WRITESTR 13 ?
ONE 3 142 155
SEGMENT LENGTH 210
PRIMARY DB 2 INITIAL STACK 10240 CAPABILITY 600
SECONDARY DB 430 INITIAL DL 0 TOTAL CODE 210
TOTAL DB 432 MAXIMUM DATA ? TOTAL RECORDS 11
ELAPSED TIME 00:00:01.365 PROCESSOR TIME 00:00.740
END OF PREPARE
%cmdebug > wl ob'
PROG %0.0
%cmdebug > wl cmstart(ob')
PROG %0.0
Two methods of displaying the start address of the procedure ob'.
%cmdebug > wl ?ob'
PROG %0.13
%cmdebug > wl cmentry(ob')
PROG %0.13
Two methods of displaying the entry address of the procedure ob'.
%cmdebug > wl cmstart(one)
PROG %0.142
%cmdebug > wl cmentry(one)
PROG %0.155
%cmdebug > wl cmentry(one+10)
PROG %0.155
%cmdebug > wl cmstart(two)
PROG %0.71
%cmdebug > wl cmstart(two+5)
PROG %0.7
%cmdebug > wl cmentry(two)
PROG %0.123
Limitations, Restrictions
The names and addresses of nested CM procedures, such as procedure
three, are not available within the CM FPMAP records.
Addresses that fall within nested procedures (three) are returned as
offsets relative to the parent procedure (two).
|