TROTH@RICEVM1.RICE.EDU (Rick Troth) (08/21/90)
In the save area ... registers 14 thru 12 are placed at offset 12, which means R14 goes to +12, R15 goes to +16, R0 goes to +20, R1 goes to +24, and so on. Offset 4 points to the next SAVE area, right? And offset 8 to the previous SAVE area, right? So what does offset zero refer to? If you say "R13 goes there", I won't shoot you. Pointing to itself would provide validity checking, but is that what offset zero does? If not, then what? Rick Troth <TROTH@RICEVM1.RICE.EDU> ------------- Rice ONCS VM Systems Support
PROHVK32@TREARN.BITNET (Cem Turgay) (08/21/90)
> Offset 4 points to the next SAVE area, right? And offset 8 > to he previous SAVE area, right? Yes, right. > So what does offset zero refer to? If you say "R13 goes > there", I won't shoot you. Pointing to itself would provide > validity checking, but is that what offset zero does? If > not, then what? The offset zero used by the PL/1 compiler. Especially for PL/1 ! What does it ? May it used by spesific parameter pointers or link list pointers of PL/1. Also this area will be used by CMS rel 8. How can used ? I will think it when I write it ! B-D *HAH HAH* BR-BCT-CLI-DDR-EX-HDR-ICM-ISK-LDR-MVC-NR-PACK-RRB-SIO-TIO-UNPK-ADR-SRDA X Cem Turgay L L student of Ege University Computer Center of Izmir OEYO8729@TREARN R E programmer at DAPRO Computer Co. Izmir, TURKEY PROHVK32@TREARN S C IBM 3090 VM/SP Hpo. Rel.5 OPRJ14 @TREARN S L I know that I don't know A CLRIO-DISCS-EDMK-IVSK-LPSW-MXR-SER-SRDL-STOSM-MVI-CLM-LER-VADR-VST-VLZR
VALDIS@VTVM1.CC.VT.EDU (Valdis Kletnieks) (08/21/90)
On Mon, 20 Aug 90 19:52:36 CDT Rick Troth said: > So what does offset zero refer to? If you say "R13 goes there", >I won't shoot you. Pointing to itself would provide validity checking, >but is that what offset zero does? If not, then what? Offset 0 is used by the PL/I compiler (At least at the F level, I'd have to read up on what the Optimizing and Version 2 compilers do). It uses this area as a pointer to the 'pseudo-register' area. Since it's 3:30AM, I'll avoid trying to explain pseudo-registers - the PL/I Programmer's Guide does it better than I could hope to at this time of night.... Disclaimer: My last serious PL/I work was on a 360/65 running OS/MVT.. ;-) Valdis Kletnieks Computer Systems Engineer Virginia Tech
icking@gmdzi.UUCP (Werner Icking) (08/21/90)
TROTH@RICEVM1.RICE.EDU (Rick Troth) writes: > In the save area ... registers 14 thru 12 are placed at offset 12, >which means R14 goes to +12, R15 goes to +16, R0 goes to +20, R1 goes to +24, >and so on. Offset 4 points to the next SAVE area, right? And offset 8 to >the previous SAVE area, right? > So what does offset zero refer to? If you say "R13 goes there", >I won't shoot you. Pointing to itself would provide validity checking, >but is that what offset zero does? If not, then what? We - a group of people programming 360-code in the late 60-th and beginning 70-th - used offset zero for the length of the save area when writing re- enterable programms. The first 18 words of the save area were used for the length, the chaining and registers 12 to 14, the remainder for the variables of the programme. With this layout a supervisor programm was able to remove a programme and all its data from memory by cutting the save area chain in reverse order and releasing the memory as stated by the length field. A typical programm entry was like this: USING *,15 B BEGIN DC AL1(..),C'name copyright date etc.' .. means length of this BEGIN STM 14,12,12(13) LA 0,DSA# GETMAIN ... allocate memory for the new save area ST 0,0(,1) note the length MVC 4(4,1),4(13) propagate forward pointer ST 13,8(,1) set the backward pointer ST 1,4(,13) set new forward pointer LR 13,1 activate the new save area ... DSA DSECT DS 18F standard register save area TEMP8 DS D DW work area ... DSA# EQU *-DSA In reality all this was "hidden" in macros and subroutines. E.g. the GETMAIN was in a subroutine, doing a conditional GETMAIN, returning to the caller of the programme (not the subroutine!) a return code of -4 if the GETMAIN was not successful, ... -- Werner Icking icking@gmdzi.gmd.de (+49 2241) 14-2443 Gesellschaft fuer Mathematik und Datenverarbeitung mbH (GMD) Schloss Birlinghoven, P.O.Box 1240, D-5205 Sankt Augustin 1, FRGermany
icking@gmdzi.UUCP (Werner Icking) (08/21/90)
TROTH@RICEVM1.RICE.EDU (Rick Troth) writes: > In the save area ... registers 14 thru 12 are placed at offset 12, >which means R14 goes to +12, R15 goes to +16, R0 goes to +20, R1 goes to +24, >and so on. Offset 4 points to the next SAVE area, right? And offset 8 to >the previous SAVE area, right? > So what does offset zero refer to? If you say "R13 goes there", >I won't shoot you. Pointing to itself would provide validity checking, >but is that what offset zero does? If not, then what? We - a group of people programming 360-code in the late 60-th and beginning 70-th - used offset zero for the length of the save area when writing re- enterable programms. The first 18 words of the save area were used for the length, the chaining and registers 12 to 14, the remainder for the variables of the programme. With this layout a supervisor programm was able to remove a programme and all its data from memory by cutting the save area chain in reverse order and releasing the memory as stated by the length field. A typical programm entry was like this: USING *,15 B BEGIN DC AL1(..),C'name copyright date etc.' .. means length of this BEGIN STM 14,12,12(13) LA 0,DSA# GETMAIN ... allocate memory for the new save area ST 0,0(,1) note the length MVC 4(4,1),4(13) propagate forward pointer ST 13,8(,1) set the backward pointer ST 1,4(,13) set new forward pointer LR 13,1 activate the new save area ... DSA DSECT DS 18F standard register save area TEMP8 DS D DW work area ... DSA# EQU *-DSA In reality all this was "hidden" in macros and subroutines. E.g. the GETMAIN was in a subroutine, doing a conditional GETMAIN, returning to the caller of the programme (not the subroutine!) a return code of -4 if the GETMAIN was not successful, ... -- Werner Icking icking@gmdzi.gmd.de (+49 2241) 14-2443 Gesellschaft fuer Mathematik und Datenverarbeitung mbH (GMD) Schloss Birlinghoven, P.O.Box 1240, D-5205 Sankt Augustin 1, FRGermany
Al_K_Shing@cup.portal.com (08/22/90)
> > In the save area ... registers 14 thru 12 are placed at offset 12, >which means R14 goes to +12, R15 goes to +16, R0 goes to +20, R1 goes to +24, >and so on. Offset 4 points to the next SAVE area, right? And offset 8 to >the previous SAVE area, right? > > So what does offset zero refer to? If you say "R13 goes there", >I won't shoot you. Pointing to itself would provide validity checking, >but is that what offset zero does? If not, then what? > If memory serves, offset zero is used by PL/I for something. It is not generally used in linking Assembler routines. > Rick Troth <TROTH@RICEVM1.RICE.EDU> ------------- Rice ONCS VM Systems Suppor t Al Shing