|
|
Debug only
Privileged Mode
Freezes a code segment, data segment, or virtual address (range) in memory.
FC logaddr [bytelength] Program file
FCG logaddr [bytelength] Group library
FCP logaddr [bytelength] Account library
FCLG logaddr [bytelength] Logon group library
FCLP logaddr [bytelength] Logon account library
FCS logaddr [bytelength] System library
FCU fname logaddr [bytelength] User library
FCA cmabsaddr CM absolute CST
FCAX cmabsaddr CM absolute CST
FDA dstoff CM data segment
FVA virtaddr [bytelength] Virtual address
- logaddr
A full logical code address (LCPTR) specifies three necessary
items:
the logical code file (PROG, GRP, SYS, and
so on).
NM: the virtual space ID number (SID).
CM: the logical segment number.
NM: the virtual byte offset within the space.
CM: the word offset within the code segment.
Logical code addresses can be specified in various levels of detail:
As a full logical code pointer (LCPTR):
- FC procname+20
Procedure name lookups return LCPTRs.
- FC pw+4
Predefined ENV variables of type
LCPTR.
- FC SYS(2.200)
Explicit coercion to a LCPTR type.
As a long pointer (LPTR):
- FC 23.2644
sid.offset or
seg.offset
The logical file is determined based on the command suffix:
As a short pointer (SPTR):
- FC 1024
offset only
For NM, the short pointer offset is converted to a long pointer using
the function STOLOG, which looks up the SID of the loaded
logical file. This is different from the standard short to long
pointer conversion, STOL, which is based on the current
space registers (SRs).
For CM, the current executing logical segment number and the current
executing logical file are used to build a LCPTR.
The search path used for procedure name lookups is based on the command
suffix letter:
- FC
Full search path:
NM: PROG, GRP, PUB, USER(s), SYS.
CM: PROG, GRP, PUB, LGRP, LPUB, SYS.
- FCG
Search GRP, the group library.
- FCP
Search PUB, the account library.
- FCLG
Search LGRP, the logon group library.
- FCLP
Search LPUB, the logon account library.
- FCS
Search SYS, the system library.
- FCU
Search USER, the user library.
For a full description of logical code addresses, refer to the section
"Logical Code Addresses" in chapter 2.
- cmabsaddr
A full CM absolute code address specifies three necessary items:
Either the CST or the CSTX.
The absolute code segment number.
The CM word offset within the code segment.
Absolute code addresses can be specified in two ways:
The search path used for procedure name lookups is based on the command
suffix letter:
- FCA
GRP, PUB, LGRP, LPUB, SYS
- FCAX
PROG
- fname
The file name of the NM USER library. Since multiple NM libraries can
be bound with the XL= option on a :RUN command,
:run nmprog; xl=lib1,lib2.testgrp,lib3
it is necessary to specify the desired NM user library. For example,
FCU lib1 204c
FCU lib2.testgrp test20+1c0
If the file name is not fully qualified, the following defaults are used:
- dstoff
A data segment address (specified as DST.OFFSET) of the data
segment to be frozen in memory. The segment remains frozen until it is
explicitly unfrozen (see UDA command).
- virtaddr
The starting virtual address of the page(s) that are to be frozen in
memory. The pages remain frozen until they are explicitly unfrozen (see
UVA command). Virtaddr can be a short pointer,
a long pointer, or a full logical code pointer.
- bytelength
This parameter is valid only when in nmdebug. It indicates the desired
number of bytes to be frozen. Based on the starting virtual address and
the specified bytelength, the appropriate number of virtual pages are
frozen. If omitted, the default is four bytes. The implementation of this
command dictates that the smallest unit that is actually frozen is one
page of virtual memory. That is, if you say 1 byte, the whole page on
which that byte resides is made resident.
%cmdebug > fc cmpc
Freeze the current CM code segment, as indicated by the CM logical address
CMPC.
%cmdebug > fcs sys(12.0)
Freeze CM logical code segment SYS 12.
$nmdebug > fva 22.104, #1000
Freeze 1000 bytes starting at virtual address 22.104.
None
|