On Wed, 2004-09-15 at 07:14, Ron Melby wrote: > I am trying to read odt headers and match them to the symbol table (this is > based on your IRP0-3, Dave McKenzie) and with the symbol structure header > x'00',x'40',x'80' and x'c0' information that Gene Gaunt provided, I can > match symbols to odt with the exception of *ENTRY, as close as i can > remember it shows as an address 0001 C0 06 *ENTRY 00000A0A this last A0A > changing depending on some other things that don't have a clear connection. The 00000A0A doesn't belong to *ENTRY; it's the beginning of the next symbol table entry. Symbol table entries start with a 4-byte link to next symbol table entry in chain (FFFFFFFF if last). The offsets in the hash table (and the links in the symbol table) are calculated from the beginning of the 4-byte "number of hash buckets" (00000233) at the beginning of the symbol table. So the *ENTRY entry probably looks something like: FFFFFFFF 0001 C0 06 *ENTRY The 0001 is the ODT number. That's how you map symbol table entries to ODT entries. > The odt header is like 0020 2801. In trivial programs it seems that i can > just match symbol to odt definition 1 for 1 in rrn order. However, > the RPG compiler inserts .(dot) symbols while QPRCRTPG does not (at least > under v3r2m0 in cisc), > that is: > > DCL CON .cERR CHAR(08) INIT('*ERR ') ; > will not show in a symbol table created by QPRCRTPG > so rrn doesn't work......... > > but I am not fleet of wetware and although looking at my file I see what > should and should not be hooked together sym/odt that is, my synaptic snafu > has not found the algorithm to attach same to same. However, it must be > reasonably doable since others have done it and IBM can debug from it. > > I am very obviously trying to build a RTVMISRC but what a colossal chore for > the plodding mind. > > Gene the MATPG under risc is informative but different in nature than the > current symbol table layout under QPRCRTPG that I am using, It applies to CISC also (with some additions not in CISC). > thusly: > > behind the symbol name are 4 char and only 4 char These 4 chars belong to the next symbol table entry (see above). > DCL statements get FFFFFFFF > Branch point gets 40404040 (with exception) > > the *entry gets a number i.e 00000A0A > and in this case: > > BP_RTX: ; > RTX * ; > > the bp with the RTX gets a number i.e. 00000053 > but my big issue is hooking symbol *ENTRY to its odt header. Use the ODT number in the symbol table entry (see above). > thanks all, > Ron
As an Amazon Associate we earn from qualifying purchases.
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.