XST$JOIN - ASCII String Concate 4-FEB-2004 11:02:01 BLISS-32I T1.1-053 Page 1 19-MAR-2002 10:11:42 [LASTOVICA.XPORT.VMSGEN]SJOIN.BLI;1 0 1 MODULE SJOIN ( IDENT = 'X00.06' %TITLE 'XST$JOIN - ASCII String Concatenation' 0 2 %BLISS32( ,ADDRESSING_MODE( EXTERNAL=LONG_RELATIVE ) ) 0 3 %BLISS36( ,ENTRY( XST$JOIN ), OTS='' ) 0 4 ) = 0 5 BEGIN 1 6 1 7 ! 1 8 ! COPYRIGHT (c) 1980 BY 1 9 ! DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. 1 10 ! 1 11 ! THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED 1 12 ! ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE 1 13 ! INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER 1 14 ! COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY 1 15 ! OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY 1 16 ! TRANSFERRED. 1 17 ! 1 18 ! THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE 1 19 ! AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 1 20 ! CORPORATION. 1 21 ! 1 22 ! DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS 1 23 ! SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL. 1 24 ! 1 25 1 26 !++ 1 27 ! 1 28 ! FACILITY: BLISS Library 1 29 ! 1 30 ! ABSTRACT: 1 31 ! 1 32 ! This module implements the XPORT $STR_CONCAT string pseudo-function. 1 33 ! 1 34 ! ENVIRONMENT: User mode - multiple host operating/file systems 1 35 ! 1 36 ! AUTHOR: Ward Clark, CREATION DATE: 25 February 1980 1 37 ! 1 38 !-- SJOIN XST$JOIN - ASCII String Concate 4-FEB-2004 11:02:01 BLISS-32I T1.1-053 Page 2 X00.06 19-MAR-2002 10:11:42 [LASTOVICA.XPORT.VMSGEN]SJOIN.BLI;1 1 40 ! 1 41 ! TABLE OF CONTENTS: 1 42 ! 1 43 1 44 FORWARD ROUTINE 1 45 XST$JOIN : FORTRAN_FUNC; ! ASCII string concatenation routine 1 46 1 47 ! 1 48 ! INCLUDE FILES: 1 49 ! 1 50 1 51 LIBRARY 'XPORT' ; ! Public XPORT control block and macro definitions 1 53 LIBRARY 'XPOSYS' ; ! Internal XPORT macro definitions 1 55 1 56 $XPO_SYS_TEST( $ALL ) ; %PRINT: This module was compiled for any VAX-11 system ; %PRINT: XPORT V1.3-51 XPOSYS V1.3-16 XPO$K_VERSION = 1 XPO$K_LEVEL = 3 1 57 1 58 ! 1 59 ! MACROS: 1 60 ! 1 61 1 62 ! 1 63 ! EQUATED SYMBOLS: 1 64 ! 1 65 1 66 ! 1 67 ! PSECT DECLARATIONS: 1 68 ! 1 69 1 70 $XPO_PSECTS ! Declare XPORT PSECT names and attributes 1 71 1 72 ! 1 73 ! OWN STORAGE: 1 74 ! 1 75 1 76 ! 1 77 ! EXTERNAL REFERENCES: 1 78 ! SJOIN XST$JOIN - ASCII String Concate 4-FEB-2004 11:02:01 BLISS-32I T1.1-053 Page 3 X00.06 19-MAR-2002 10:11:42 [LASTOVICA.XPORT.VMSGEN]SJOIN.BLI;1 1 80 GLOBAL ROUTINE XST$JOIN : FORTRAN_FUNC = 1 81 1 82 !++ 1 83 ! 1 84 ! FUNCTIONAL DESCRIPTION: 1 85 ! 1 86 ! This routine implements the $STR_CONCAT string pseudo-function. 1 87 ! 1 88 ! FORMAL PARAMETERS: 1 89 ! 1 90 ! list of string descriptor addresses 1 91 ! 1 92 ! IMPLICIT INPUTS: 1 93 ! 1 94 ! None 1 95 ! 1 96 ! IMPLICIT OUTPUTS: 1 97 ! 1 98 ! None 1 99 ! 1 100 ! ROUTINE VALUE: 1 101 ! 1 102 ! address of an XPORT temporary string descriptor 1 103 ! 1 104 ! SIDE EFFECTS: 1 105 ! 1 106 ! None 1 107 ! 1 108 !-- 1 109 1 110 BEGIN 2 111 2 112 BUILTIN 2 113 ACTUALCOUNT, ! Number of routine arguments 2 114 ACTUALPARAMETER; ! Argument fetch function 2 115 2 116 LOCAL 2 117 concat_length, 2 118 temporary : REF $STR_DESCRIPTOR( CLASS = DYNAMIC ), 2 119 result_pointer; 2 120 2 121 ! 2 122 ! Initialization 2 123 ! 2 124 2 125 $STR_MAIN_BEGIN( PSEUDO ) ! Beginning of MAIN_BLOCK code block 3 126 3 127 IF ACTUALCOUNT() EQL 1 ! If only 1 string was specified, 3 128 THEN ! a temporary string is not needed. 3 129 BEGIN 4 130 temporary = ACTUALPARAMETER( 1 ); 4 131 $STR_QUIT( NORMAL ); 4 132 END; 3 133 3 134 $STR_ALLOC_TEMP( temporary ); ! Setup an XPORT temporary string descriptor. 3 135 3 136 ! Validate the number of string descriptor arguments. SJOIN XST$JOIN - ASCII String Concate 4-FEB-2004 11:02:01 BLISS-32I T1.1-053 Page 4 X00.06 19-MAR-2002 10:11:42 [LASTOVICA.XPORT.VMSGEN]SJOIN.BLI;1 3 137 3 138 IF ACTUALCOUNT() EQL 0 ! Make sure at least one string was specified. 3 139 THEN 3 140 $STR_QUIT( (XPO$_BAD_ARGS) ); 3 141 3 142 ! 3 143 ! Calculate the resulting string length. 3 144 ! 3 145 3 146 concat_length = 0; 3 147 3 148 INCR index FROM 1 TO ACTUALCOUNT() DO ! Loop thru the argument list. 3 149 BEGIN 4 150 BIND 4 151 string = ACTUALPARAMETER( .index ) : $STR_DESCRIPTOR(); 4 152 4 153 $STR_VALIDATE( string, BAD_SOURCE ); 4 154 4 155 IF .string[STR$H_LENGTH] GTRU ! Make sure the resulting string will not be too long. 4 156 %X'FFFF' - .concat_length 4 157 THEN 4 158 $STR_QUIT( TOO_LONG ); 4 159 4 160 concat_length = .concat_length + .string[STR$H_LENGTH]; 4 161 END; 3 162 3 163 ! 3 164 ! Allocate a resulting string in dynamic memory. 3 165 ! 3 166 3 167 $XPO_IF_NOT( $XPO_GET_MEM( CHARACTERS = .concat_length, P 3 168 DESCRIPTOR = .temporary, P 3 169 FAILURE = 0 ) ) 5 170 THEN 4 171 $STR_QUIT( (.$XPO_STATUS) ); 3 172 3 173 ! 3 174 ! Copy the source strings into the resulting area. 3 175 ! 3 176 3 177 result_pointer = .temporary[STR$A_POINTER]; ! Point to the beginning of the result area. 3 178 3 179 INCR index FROM 1 TO ACTUALCOUNT() DO ! Copy 1 string at a time into the result area. 3 180 BEGIN 4 181 BIND 4 182 string = ACTUALPARAMETER( .index ) : $STR_DESCRIPTOR(); 4 183 4 184 CH$MOVE( .string[STR$H_LENGTH], .string[STR$A_POINTER], .result_pointer ); 4 185 4 186 result_pointer = CH$PLUS( .result_pointer, .string[STR$H_LENGTH] ); 4 187 END; 3 188 3 189 $STR_QUIT( NORMAL ); 3 190 3 191 $STR_MAIN_END; ! End of MAIN_BLOCK code block 2 192 2 193 ! SJOIN XST$JOIN - ASCII String Concate 4-FEB-2004 11:02:01 BLISS-32I T1.1-053 Page 5 X00.06 19-MAR-2002 10:11:42 [LASTOVICA.XPORT.VMSGEN]SJOIN.BLI;1 2 194 ! Free any XPORT temporary strings input to this concatenation function. 2 195 ! 2 196 2 197 INCR index FROM 1 TO ACTUALCOUNT() DO ! Free 1 string at a time. 2 198 $STR_FREE_TEMP( ACTUALPARAMETER( .index ) ); 2 199 2 200 ! 2 201 ! Modify the temporary string descriptor in the event of an error. 2 202 ! 2 203 2 204 IF NOT .primary_code ! If the conversion failed, 2 205 THEN ! 2 206 BEGIN ! modify the temporary string descriptor: 3 207 temporary[STR$B_DTYPE] = STR$K_DTYPE_XXX; ! indicate an erroneous temporary string 3 208 temporary[STR$A_POINTER] = .primary_code; ! save the error code for $STR_VALIDATE 3 209 END; 2 210 2 211 ! 2 212 ! Return the address of the temporary string descriptor. 2 213 ! 2 214 2 215 RETURN .temporary 2 216 2 217 END; 1 218 END 1 219 ELUDOM SJOIN Machine Code Listing 4-FEB-2004 11:02:01 BLISS-32I T1.1-053 Page 6 X00.06 19-MAR-2002 10:11:42 [LASTOVICA.XPORT.VMSGEN]SJOIN.BLI;1 .psect _XPO$CODE, CON, LCL, SHR, EXE, NOWRT, NOVEC .proc XST$JOIN .align 32 .global XST$JOIN XST$JOIN: // 000080 { .mmi 0119F8C40300 0000 adds r12 = -96, r12 ;; 010800C50480 0001 adds r18 = 40, r12 000194000440 0002 mov.i r17 = rspfs } { .mmi 0120001003C0 0010 add r15 = @ltoff(@fptr(OTS$HOME_ARGS)), r1 ;; 0080C0F003C0 0011 ld8 r15 = OTS$HOME_ARGS // r15 = [r15] 000008000000 0012 nop.i 0 ;; } { .mmi 0080C0F00400 0020 ld8 r16 = [r15] ;; 000008000000 0021 nop.m 0 000E00120180 0022 mov br6 = r16 } { .mfb 000008000000 0030 nop.m 0 000008000000 0031 nop.f 0 00210000C1C0 0032 br.call.sptk.few br7 = br6 ;; } { .mib 000008000000 0040 nop.m 0 000154022000 0041 mov.i rspfs = r17 004000000000 0042 nop.b 0 ;; } { .mii 002C03475440 0050 alloc r81 = rspfs, 8, 44, 6, 0 0108001014C0 0051 mov r83 = r1 000188001400 0052 mov r80 = br0 } { .mii 010801900A00 0060 mov r40 = r25 000198001480 0061 mov r82 = pr 01CC31902000 0062 cmp4.eq pr0, pr6 = 1, r25 // 000127 } { .mfb 000008000000 0070 nop.m 0 000008000000 0071 nop.f 0 008600006006 0072 (pr6) br.cond.dpnt.few L$4 } { .mmi 010800C600C0 0080 adds r3 = 48, r12 ;; // 000130 008080300A40 0081 ld4 TEMPORARY = [r3] // r41 = [r3] 000008000000 0082 nop.i 0 } { .mfb 000008000000 0090 nop.m 0 000008000000 0091 nop.f 0 00800008C000 0092 br.sptk.few L$21 ;; } 00A0 L$4: // 000134 SJOIN Machine Code Listing 4-FEB-2004 11:02:01 BLISS-32I T1.1-053 Page 7 X00.06 XST$JOIN 19-MAR-2002 10:11:42 [LASTOVICA.XPORT.VMSGEN]SJOIN.BLI;1 { .mii 010800C20240 00A0 adds r9 = 16, r12 010800C28280 00A1 adds r10 = 20, r12 000008000000 00A2 nop.i 0 } { .mlx 010800C202C0 00B0 adds r11 = 16, r12 000000000008 00B1 movl r8 = 33685504 ;; 0180010004 } { .mii 008C80910000 00C0 st4 [r9] = r8 01200000C640 00C1 mov r25 = 6 0000B0001640 00C2 sxt4 r89 = r0 } { .mii 0119F80FF580 00D0 adds r86 = -1, r0 0000B0001600 00D1 sxt4 r88 = r0 0000B00015C0 00D2 sxt4 r87 = r0 } { .mmi 012000011500 00E0 mov r84 = 8 008C80A00000 00E1 st4 [r10] = r0 0000B0B01540 00E2 sxt4 r85 = r11 } { .mfb 000008000000 00F0 nop.m 0 000008000000 00F1 nop.f 0 00A000001000 00F2 br.call.sptk.many br0 = XPO$ALLOC_MEM } { .mii 010800C28AC0 0100 adds r43 = 20, r12 00A0308001C0 0101 tbit.z pr7, pr6 = r8, 0 010805300040 0102 mov r1 = r83 ;; } { .mii 008082B00AC0 0110 ld4 r43 = [r43] 01C000001206 0111 (pr6) cmp.eq.unc pr8, pr0 = r0, r0 ;; 010802B00A48 0112 (pr8) mov TEMPORARY = r43 // r41 = r43 } { .mfb 000008000000 0120 nop.m 0 000008000000 0121 nop.f 0 008600006008 0122 (pr8) br.cond.dpnt.few L$7 } { .mmi 012000100B00 0130 add r44 = @ltoff(XST$NO_MEMORY), r1 ;; 0080C2C00200 0131 ld8 r8 = XST$NO_MEMORY // r8 = [r44] 000008000000 0132 nop.i 0 } { .mfb 000008000000 0140 nop.m 0 000008000000 0141 nop.f 0 00800008E000 0142 br.sptk.few L$9 ;; } 0150 L$7: { .mii SJOIN Machine Code Listing 4-FEB-2004 11:02:01 BLISS-32I T1.1-053 Page 8 X00.06 XST$JOIN 19-MAR-2002 10:11:42 [LASTOVICA.XPORT.VMSGEN]SJOIN.BLI;1 01200001CBC0 0150 mov r47 = 14 0000B2900B40 0151 sxt4 r45 = TEMPORARY // r45 = r41 01200807AC40 0152 mov r49 = 189 } { .mmi 01C452800000 0160 cmp4.eq pr0, pr10 = r0, r40 ;; // 000138 00AC42D00080 0161 st2 [r45] = r0, 2 // 000134 000008000000 0162 nop.i 0 ;; } { .mmi 00AC02D5E040 0170 st1 [r45] = r47, 1 ;; 00AC02D62040 0171 st1 [r45] = r49, 1 000008000000 0172 nop.i 0 ;; } { .mfb 00BC8AD01F00 0180 st4 [r45] = r0, -4 000008000000 0181 nop.f 0 00860000600A 0182 (pr10) br.cond.dpnt.few L$10 // 000138 } { .mlx 000008000000 0190 nop.m 0 000000000000 0191 movl PRIMARY_CODE = 2138130 // r42 = 2138130 // 000140 0194004495 } { .mfb 000008000000 01A0 nop.m 0 000008000000 01A1 nop.f 0 00800006C000 01A2 br.sptk.few L$6 ;; } 01B0 L$10: // 000138 { .mii 018462800000 01B0 cmp4.lt pr0, pr12 = r0, r40 // 000148 012000002D40 01B1 mov INDEX = 1 // r53 = 1 010800000D00 01B2 mov CONCAT_LENGTH = r0 ;; // r52 = r0 // 000146 } { .mfb 01C00000108C 01C0 (pr12) cmp.eq.unc pr2, pr0 = r0, r0 // 000148 000008000000 01C1 nop.f 0 00860001E002 01C2 (pr2) br.cond.dpnt.few L$12 } { .mii 012FF80FEDC0 01D0 addl r55 = 65535, r0 // 000156 010800C50D80 01D1 adds r54 = 40, r12 // 000151 000008000000 01D2 nop.i 0 ;; } 01E0 L$14: // 000150 { .mii 012000002640 01E0 mov r25 = 1 // 000153 0000B3500E00 01E1 sxt4 r56 = INDEX // r56 = r53 // 000151 010803502D40 01E2 adds r53 = 1, r53 ;; } { .mmi 010093670E00 01F0 shladd r56 = r56, 3, r54 ;; 008083800E00 01F1 ld4 r56 = [r56] 000008000000 01F2 nop.i 0 ;; } { .mii SJOIN Machine Code Listing 4-FEB-2004 11:02:01 BLISS-32I T1.1-053 Page 9 X00.06 XST$JOIN 19-MAR-2002 10:11:42 [LASTOVICA.XPORT.VMSGEN]SJOIN.BLI;1 000008000000 0200 nop.m 0 0000B3800E40 0201 sxt4 r57 = r56 // 000150 0000B3801500 0202 sxt4 r84 = r56 // 000153 } { .mfb 000008000000 0210 nop.m 0 000008000000 0211 nop.f 0 00A000001000 0212 br.call.sptk.many br0 = XST$VALIDATE } { .mib 010805300040 0220 mov r1 = r83 00A0308001C0 0221 tbit.z pr7, pr6 = r8, 0 00860000A007 0222 (pr7) br.cond.dpnt.few L$16 ;; } { .mii 008043900E40 0230 ld2 r57 = [r57] // 000155 01002B46EE80 0231 sub r58 = r55, CONCAT_LENGTH ;; // r58 = r55, r52 // 000156 01A403974240 0232 cmp4.ltu pr9, pr0 = r58, r57 // 000155 } { .mfb 000008000000 0240 nop.m 0 000008000000 0241 nop.f 0 00860000A009 0242 (pr9) br.cond.dpnt.few L$18 } { .mib 018453550000 0250 cmp4.lt pr0, pr10 = r40, INDEX // pr0, pr10 = r40, r53 // 000148 010003968D00 0251 add CONCAT_LENGTH = CONCAT_LENGTH, // r52 = r52, r57 // 000160 r57 0095FFFF200A 0252 (pr10) br.cond.dptk.few L$14 // 000148 } { .mfb 000008000000 0260 nop.m 0 000008000000 0261 nop.f 0 00800000A000 0262 br.sptk.few L$12 ;; } 0270 L$16: // 000153 { .mlx 000008000000 0270 nop.m 0 000000000000 0271 movl PRIMARY_CODE = 2402378 // r42 = 2402378 0195025295 } { .mfb 000008000000 0280 nop.m 0 000008000000 0281 nop.f 0 008000050000 0282 br.sptk.few L$6 ;; } 0290 L$18: // 000155 { .mlx 000008000000 0290 nop.m 0 000000000000 0291 movl PRIMARY_CODE = 2402466 // r42 = 2402466 // 000158 0195124895 } { .mfb 000008000000 02A0 nop.m 0 000008000000 02A1 nop.f 0 00800004C000 02A2 br.sptk.few L$6 ;; } SJOIN Machine Code Listing 4-FEB-2004 11:02:01 BLISS-32I T1.1-053 Page 10 X00.06 XST$JOIN 19-MAR-2002 10:11:42 [LASTOVICA.XPORT.VMSGEN]SJOIN.BLI;1 02B0 L$12: // 000169 { .mii 01200000C640 02B0 mov r25 = 6 0000B0001640 02B1 sxt4 r89 = r0 0000B0001600 02B2 sxt4 r88 = r0 } { .mii 0119F80FF580 02C0 adds r86 = -1, r0 0000B00015C0 02C1 sxt4 r87 = r0 0000B2901540 02C2 sxt4 r85 = TEMPORARY // r85 = r41 } { .mib 000008000000 02D0 nop.m 0 0000B3401500 02D1 sxt4 r84 = CONCAT_LENGTH // r84 = r52 00A000001000 02D2 br.call.sptk.many br0 = XPO$ALLOC_MEM } { .mib 010805300040 02E0 mov r1 = r83 00A0308001C0 02E1 tbit.z pr7, pr6 = $XPO$STATUS, 0 // pr7, pr6 = r8, 0 008600004006 02E2 (pr6) br.cond.dpnt.few L$19 } { .mfb 010800800A80 02F0 mov PRIMARY_CODE = $XPO$STATUS // r42 = r8 // 000171 000008000000 02F1 nop.f 0 008000042000 02F2 br.sptk.few L$6 ;; } 0300 L$19: // 000169 { .mii 010802D08B40 0300 adds r45 = 4, r45 012000002EC0 0301 mov INDEX = 1 // r59 = 1 // 000179 000008000000 0302 nop.i 0 ;; } { .mfb 008082D00B40 0310 ld4 RESULT_POINTER = [r45] // r45 = [r45] // 000177 000008000000 0311 nop.f 0 00860003C002 0312 (pr2) br.cond.dpnt.few L$21 // 000179 } { .mii 0119FA8FCF00 0320 adds r60 = -2, r40 010800C50F40 0321 adds r61 = 40, r12 ;; // 000182 01845BC00000 0322 cmp4.lt pr0, pr11 = r0, r60 // 000181 } { .mmi 018443C50240 0330 cmp4.lt pr9, pr8 = r40, r60 ;; // 000179 01C24000024B 0331 (pr11) cmp.eq.or.andcm pr9, pr8 = r0, r0 000008000000 0332 nop.i 0 } { .bbb 008600002008 0340 (pr8) br.cond.dpnt.few L$25 // 000181 004000000000 0341 nop.b 0 008600028009 0342 (pr9) br.cond.dpnt.few L$33 ;; } 0350 L$25: { .mii 010090076FC0 0350 shladd r63 = INDEX, 3, r0 // r63 = r59, 3, r0 // 000182 0000B3B00F80 0351 sxt4 r62 = INDEX // r62 = r59 0000B2D01500 0352 sxt4 r84 = RESULT_POINTER ;; // r84 = r45 // 000184 SJOIN Machine Code Listing 4-FEB-2004 11:02:01 BLISS-32I T1.1-053 Page 11 X00.06 XST$JOIN 19-MAR-2002 10:11:42 [LASTOVICA.XPORT.VMSGEN]SJOIN.BLI;1 } { .mii 010093D7CF80 0360 shladd r62 = r62, 3, r61 // 000182 010803F11040 0361 adds r65 = 8, r63 010090076FC0 0362 shladd r63 = INDEX, 3, r0 ;; // r63 = r59, 3, r0 } { .mii 008083E00F80 0370 ld4 r62 = [r62] 0000B4101040 0371 sxt4 r65 = r65 010803F20FC0 0372 adds r63 = 16, r63 } { .mmi 010803B06EC0 0380 adds r59 = 3, r59 ;; 01000417B040 0381 add r65 = r61, r65 0000B3F00FC0 0382 sxt4 r63 = r63 ;; } { .mii 018413B78000 0390 cmp4.lt pr0, pr2 = r60, INDEX // pr0, pr2 = r60, r59 // 000179 0000B3E00F80 0391 sxt4 r62 = r62 // 000181 010003F7AFC0 0392 add r63 = r61, r63 ;; // 000182 } { .mmi 00A043E09540 03A0 ld2 r85 = [r62], 4 ;; // 000184 00B08BEF9000 03A1 ld4 r64 = [r62], -4 0000B5501540 03A2 sxt4 r85 = r85 ;; } { .mib 000008000000 03B0 nop.m 0 0000B4001580 03B1 sxt4 r86 = r64 00A000001000 03B2 br.call.sptk.many br0 = OTS$MOVE } { .mmi 008084101040 03C0 ld4 r65 = [r65] // 000182 008043E00F80 03C1 ld2 r62 = [r62] // 000186 010805300040 03C2 mov r1 = r83 ;; // 000184 } { .mii 010003E5AB40 03D0 add RESULT_POINTER = RESULT_POINTER, // r45 = r45, r62 // 000186 r62 0000B4101040 03D1 sxt4 r65 = r65 ;; // 000181 0000B2D01500 03D2 sxt4 r84 = RESULT_POINTER // r84 = r45 // 000184 } { .mmi 00A044109540 03E0 ld2 r85 = [r65], 4 ;; 00B08C1F90C0 03E1 ld4 r67 = [r65], -4 0000B5501540 03E2 sxt4 r85 = r85 ;; } { .mib 000008000000 03F0 nop.m 0 0000B4301580 03F1 sxt4 r86 = r67 00A000001000 03F2 br.call.sptk.many br0 = OTS$MOVE } { .mmi 008083F01140 0400 ld4 r69 = [r63] // 000182 008044101040 0401 ld2 r65 = [r65] // 000186 010805300040 0402 mov r1 = r83 ;; // 000184 } SJOIN Machine Code Listing 4-FEB-2004 11:02:01 BLISS-32I T1.1-053 Page 12 X00.06 XST$JOIN 19-MAR-2002 10:11:42 [LASTOVICA.XPORT.VMSGEN]SJOIN.BLI;1 { .mii 010823F00FC0 0410 adds r63 = 512, r63 // 000182 0000B4501140 0411 sxt4 r69 = r69 // 000181 01000415AB40 0412 add RESULT_POINTER = RESULT_POINTER, // r45 = r45, r65 // 000186 r65 ;; } { .mib 00CB03F00000 0420 lfetch [r63] // 000182 0000B2D01500 0421 sxt4 r84 = RESULT_POINTER // r84 = r45 // 000184 004000000000 0422 nop.b 0 } { .mmi 00A044509540 0430 ld2 r85 = [r69], 4 ;; 00B08C5F9180 0431 ld4 r70 = [r69], -4 0000B5501540 0432 sxt4 r85 = r85 ;; } { .mib 000008000000 0440 nop.m 0 0000B4601580 0441 sxt4 r86 = r70 00A000001000 0442 br.call.sptk.many br0 = OTS$MOVE } { .mii 008044501140 0450 ld2 r69 = [r69] // 000186 010805300040 0451 mov r1 = r83 ;; // 000184 01000455AB40 0452 add RESULT_POINTER = RESULT_POINTER, // r45 = r45, r69 // 000186 r69 } { .mfb 000008000000 0460 nop.m 0 000008000000 0461 nop.f 0 0095FFFDE002 0462 (pr2) br.cond.dptk.few L$25 // 000179 } { .mfb 018403B501C0 0470 cmp4.lt pr7, pr0 = r40, INDEX // pr7, pr0 = r40, r59 000008000000 0471 nop.f 0 008600010007 0472 (pr7) br.cond.dpnt.few L$21 ;; // 000181 } 0480 L$33: { .mii 000008000000 0480 nop.m 0 0000B3B01200 0481 sxt4 r72 = INDEX // r72 = r59 // 000182 0000B2D01500 0482 sxt4 r84 = RESULT_POINTER // r84 = r45 // 000184 } { .mmi 010803B02EC0 0490 adds r59 = 1, r59 ;; // 000182 010093D91200 0491 shladd r72 = r72, 3, r61 018413B50000 0492 cmp4.lt pr0, pr2 = r40, INDEX ;; // pr0, pr2 = r40, r59 // 000179 } { .mmi 008084801200 04A0 ld4 r72 = [r72] ;; // 000182 000008000000 04A1 nop.m 0 0000B4801200 04A2 sxt4 r72 = r72 ;; // 000181 } { .mmi 00A044809540 04B0 ld2 r85 = [r72], 4 ;; // 000184 00B08C8F9240 04B1 ld4 r73 = [r72], -4 0000B5501540 04B2 sxt4 r85 = r85 ;; SJOIN Machine Code Listing 4-FEB-2004 11:02:01 BLISS-32I T1.1-053 Page 13 X00.06 XST$JOIN 19-MAR-2002 10:11:42 [LASTOVICA.XPORT.VMSGEN]SJOIN.BLI;1 } { .mib 000008000000 04C0 nop.m 0 0000B4901580 04C1 sxt4 r86 = r73 00A000001000 04C2 br.call.sptk.many br0 = OTS$MOVE } { .mii 008044801200 04D0 ld2 r72 = [r72] // 000186 010805300040 04D1 mov r1 = r83 ;; // 000184 01000485AB40 04D2 add RESULT_POINTER = RESULT_POINTER, // r45 = r45, r72 // 000186 r72 } { .mfb 000008000000 04E0 nop.m 0 000008000000 04E1 nop.f 0 0095FFFF4002 04E2 (pr2) br.cond.dptk.few L$33 // 000179 } 04F0 L$21: { .mfi 012000002A80 04F0 mov PRIMARY_CODE = 1 // r42 = 1 // 000189 000008000000 04F1 nop.f 0 000008000000 04F2 nop.i 0 } 0500 L$6: // 000197 { .mib 018C32800000 0500 cmp4.lt pr0, pr6 = 0, r40 0120000032C0 0501 mov INDEX = 1 // r75 = 1 00860000E006 0502 (pr6) br.cond.dpnt.few L$38 } { .mfi 010800C51300 0510 adds r76 = 40, r12 // 000198 000008000000 0511 nop.f 0 000008000000 0512 nop.i 0 ;; } 0520 L$40: { .mii 012000002640 0520 mov r25 = 1 0000B4B01340 0521 sxt4 r77 = INDEX // r77 = r75 010804B032C0 0522 adds r75 = 1, r75 ;; } { .mii 010094C9B340 0530 shladd r77 = r77, 3, r76 018414B50000 0531 cmp4.lt pr0, pr2 = r40, INDEX // pr0, pr2 = r40, r75 // 000197 000008000000 0532 nop.i 0 ;; } { .mmi 008084D01500 0540 ld4 r84 = [r77] ;; // 000198 000008000000 0541 nop.m 0 0000B5401500 0542 sxt4 r84 = r84 } { .mfb 000008000000 0550 nop.m 0 000008000000 0551 nop.f 0 00A000001000 0552 br.call.sptk.many br0 = XST$FREE_TEMP } { .mfb 010805300040 0560 mov r1 = r83 SJOIN Machine Code Listing 4-FEB-2004 11:02:01 BLISS-32I T1.1-053 Page 14 X00.06 XST$JOIN 19-MAR-2002 10:11:42 [LASTOVICA.XPORT.VMSGEN]SJOIN.BLI;1 000008000000 0561 nop.f 0 0095FFFF8002 0562 (pr2) br.cond.dptk.few L$40 // 000197 } 0570 L$38: { .mib 000008000000 0570 nop.m 0 00A032A001C0 0571 tbit.z pr7, pr6 = PRIMARY_CODE, 0 // pr7, pr6 = r42, 0 // 000204 008600006006 0572 (pr6) br.cond.dpnt.few L$41 } { .mii 000008000000 0580 nop.m 0 0000B2901380 0581 sxt4 r78 = TEMPORARY ;; // r78 = r41 // 000207 010804E05380 0582 adds r78 = 2, r78 ;; } { .mmi 00AC04E00080 0590 st1 [r78] = r0, 2 ;; 008C84E54000 0591 st4 [r78] = PRIMARY_CODE // [r78] = r42 // 000208 000008000000 0592 nop.i 0 } 05A0 L$41: // 000204 { .mib 000008000000 05A0 nop.m 0 0000B2900200 05A1 sxt4 r8 = TEMPORARY // r8 = r41 // 000215 004000000000 05A2 nop.b 0 } 05B0 L$9: { .mii 000008000000 05B0 nop.m 0 0016000A47C0 05B1 mov pr = r82, -65474 0001540A2000 05B2 mov.i rspfs = r81 ;; } { .mib 010800CC0300 05C0 adds r12 = 96, r12 000E001A0000 05C1 mov br0 = r80 000108001100 05C2 br.ret.sptk.many br0 ;; } .endp XST$JOIN Routine Size: 1488 bytes, Routine Base: _XPO$CODE + 0000 .section .data .type OTS$HOME_ARGS, @function .global OTS$HOME_ARGS .section .data .type XPO$ALLOC_MEM, @function .global XPO$ALLOC_MEM .global XST$NO_MEMORY .section .data .type XST$VALIDATE, @function .global XST$VALIDATE .section .data .type XPO$ALLOC_MEM, @function .global XPO$ALLOC_MEM .section .data .type OTS$MOVE, @function .global OTS$MOVE .section .data SJOIN Machine Code Listing 4-FEB-2004 11:02:01 BLISS-32I T1.1-053 Page 15 X00.06 XST$JOIN 19-MAR-2002 10:11:42 [LASTOVICA.XPORT.VMSGEN]SJOIN.BLI;1 .type XST$FREE_TEMP, @function .global XST$FREE_TEMP ; Library Statistics ; ; -------- Symbols -------- Pages ; File Total Loaded Percent Mapped ; ; DISK$NORMS_OWN:[LASTOVICA.XPORT.VMSGEN]XPORT.L32;14 ; 590 51 8 270 ; DISK$NORMS_OWN:[LASTOVICA.XPORT.VMSGEN]XPOSYS.L32;14 ; 91 19 20 27 Source Listing 4-FEB-2004 11:02:01 BLISS-32I T1.1-053 Page 16 Source Listing 19-MAR-2002 10:11:42 [LASTOVICA.XPORT.VMSGEN]SJOIN.BLI;1 COMMAND LINE: BLISSSJOIN/LIST/DEBUG