XST$SCAN - String Scanning Func 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 1 19-MAR-2002 10:11:44 [LASTOVICA.XPORT.VMSGEN]SSCAN.BLI;1 0 1 MODULE SSCAN ( IDENT = 'X00.06' %TITLE 'XST$SCAN - String Scanning Function' 0 2 %BLISS32( ,ADDRESSING_MODE( EXTERNAL=LONG_RELATIVE ) ) 0 3 %BLISS36( ,ENTRY( XST$SCAN ),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 $STR_SCAN function. 1 33 ! 1 34 ! ENVIRONMENT: User mode - multiple host operating/file systems 1 35 ! 1 36 ! AUTHOR: Ward Clark, CREATION DATE: 20 February 1980 1 37 ! 1 38 !-- SSCAN XST$SCAN - String Scanning Func 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 2 X00.06 19-MAR-2002 10:11:44 [LASTOVICA.XPORT.VMSGEN]SSCAN.BLI;1 1 40 ! 1 41 ! TABLE OF CONTENTS: 1 42 ! 1 43 1 44 FORWARD ROUTINE 1 45 XST$SCAN; ! String scanning function 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 ! SSCAN XST$SCAN - String Scanning Func 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 3 X00.06 19-MAR-2002 10:11:44 [LASTOVICA.XPORT.VMSGEN]SSCAN.BLI;1 1 80 GLOBAL ROUTINE XST$SCAN( options, string, pattern, output, delimiter, success_action, failure_action ) = 1 81 1 82 !++ 1 83 ! 1 84 ! FUNCTIONAL DESCRIPTION: 1 85 ! 1 86 ! This routine implements the $STR_SCAN function. 1 87 ! 1 88 ! FORMAL PARAMETERS: 1 89 ! 1 90 ! options - string handling options 1 91 ! string - address of the source string descriptor 1 92 ! pattern - address of the pattern descriptor 1 93 ! output - address of a substring or target descriptor 1 94 ! delimiter - address of substring delimiter deposit fullword 1 95 ! success_action - address of a success action routine 1 96 ! failure_action - address of a failure action routine 1 97 ! 1 98 ! IMPLICIT INPUTS: 1 99 ! 1 100 ! None 1 101 ! 1 102 ! IMPLICIT OUTPUTS: 1 103 ! 1 104 ! None 1 105 ! 1 106 ! COMPLETION CODES: (secondary passed to action routine only) 1 107 ! 1 108 ! STR$_NORMAL - successful string scan 1 109 ! STR$_END_STRING - successful string scan, end of string reached 1 110 ! STR$_FAILURE - unsuccessful string scan 1 111 ! 1 112 ! STR$_BAD_PATTRN - invalid pattern string 1 113 ! secondary = STR$_NULL_STRNG - null string not permitted 1 114 ! failure completion code from $STR_VALIDATE 1 115 ! STR$_BAD_SOURCE - invalid source string 1 116 ! secondary = STR$_BAD_CLASS - invalid descriptor class (REMAINDER= only) 1 117 ! STR$_NO_TEMP - temporary string not permitted 1 118 ! failure completion code from $STR_VALIDATE 1 119 ! STR$_BAD_TARGET - invalid target string 1 120 ! secondary = STR$_BAD_CLASS - invalid descriptor class (SUBSTRING= only) 1 121 ! STR$_CONFLICT - same descriptor as STRING= 1 122 ! failure completion code from $STR_VALIDATE 1 123 ! failure completion code from $STR_COPY 1 124 ! 1 125 ! SIDE EFFECTS: 1 126 ! 1 127 ! None 1 128 ! 1 129 !-- 1 130 1 131 BEGIN 2 132 2 133 MAP 2 134 options : $STR_OPTIONS, 2 135 string : REF $STR_DESCRIPTOR( CLASS = BOUNDED ), 2 136 pattern : REF $STR_DESCRIPTOR(), SSCAN XST$SCAN - String Scanning Func 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 4 X00.06 19-MAR-2002 10:11:44 [LASTOVICA.XPORT.VMSGEN]SSCAN.BLI;1 2 137 output : REF $STR_DESCRIPTOR( CLASS = BOUNDED ); 2 138 2 139 LOCAL 2 140 source_length, ! Length of source string 2 141 source_pointer, ! Pointer to source string 2 142 sub_length, ! Length of resulting substring 2 143 sub_pointer; ! Pointer to resulting substring 2 144 2 145 ! 2 146 ! Initialization 2 147 ! 2 148 2 149 $STR_MAIN_BEGIN( SCAN ) 3 150 3 151 ! 3 152 ! Validate the source string descriptor. 3 153 ! 3 154 3 155 $STR_VALIDATE( .string, BAD_SOURCE ); 3 156 3 157 IF .options[STR$V_REMAINDER] AND ! If REMAINDER= was specified instead of STRING= 3 158 ( .string[STR$B_CLASS] NEQ STR$K_CLASS_B AND ! and the descriptor class is not BOUNDED or 4 159 .string[STR$B_CLASS] NEQ STR$K_CLASS_DB ) ! DYNAMIC_BOUNDED, 4 160 THEN ! 3 161 $STR_QUIT( BAD_SOURCE, BAD_CLASS ); ! return an error code to the caller. 3 162 3 163 ! 3 164 ! Validate the pattern descriptor. 3 165 ! 3 166 3 167 $STR_VALIDATE( .pattern, BAD_PATTRN ); 3 168 3 169 IF .pattern[STR$H_LENGTH] EQL 0 ! Make sure a non-null pattern was specified. 3 170 THEN 3 171 $STR_QUIT( BAD_PATTRN, NULL_STRNG ); 3 172 3 173 ! 3 174 ! Validate the substring/target descriptor. 3 175 ! 3 176 3 177 IF .output NEQ 0 ! Check for the following output descriptor errors: 3 178 THEN 3 179 BEGIN 4 180 $STR_VALIDATE( .output, BAD_TARGET ); ! the output descriptor is invalid 4 181 4 182 IF .string EQLA .output AND 4 183 ( NOT .options[STR$V_REMAINDER] OR ! STRING= and SUBSTRING= point to same descriptor 5 184 .options[STR$V_TARGET] ) ! STRING= and TARGET= point to same descriptor 5 185 THEN 4 186 $STR_QUIT( BAD_TARGET, CONFLICT ); 4 187 4 188 IF NOT .options[STR$V_TARGET] 4 189 THEN 4 190 BEGIN 5 191 IF .string[STR$B_CLASS] EQL STR$K_CLASS_XT ! STRING=temporary and SUBSTRING=any_desc 5 192 THEN 5 193 $STR_QUIT( BAD_SOURCE, NO_TEMP ); SSCAN XST$SCAN - String Scanning Func 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 5 X00.06 19-MAR-2002 10:11:44 [LASTOVICA.XPORT.VMSGEN]SSCAN.BLI;1 5 194 5 195 IF .output[STR$B_CLASS] EQL ! SUBSTRING=dynamic_desc 5 196 STR$K_CLASS_D OR 5 197 ( .output[STR$B_CLASS] EQL ! SUBSTRING=dynamic_bounded_desc and 6 198 STR$K_CLASS_DB AND ! REMAINDER=different_desc 6 199 .output NEQ .string ) 6 200 THEN 5 201 $STR_QUIT( BAD_TARGET, BAD_CLASS ); 5 202 END; 4 203 END; 3 204 3 205 ! 3 206 ! Setup the length of and pointer to the string to be scanned. 3 207 ! 3 208 3 209 IF .options[STR$V_REMAINDER] ! REMAINDER= setup 3 210 THEN 3 211 BEGIN 4 212 source_length = .string[STR$H_MAXLEN] - .string[STR$H_PFXLEN] - .string[STR$H_LENGTH]; 4 213 source_pointer = CH$PLUS( .string[STR$A_POINTER], .string[STR$H_LENGTH] ); 4 214 END 4 215 ELSE ! STRING= setup 3 216 BEGIN 4 217 source_length = .string[STR$H_LENGTH]; 4 218 source_pointer = .string[STR$A_POINTER]; 4 219 END; 3 220 3 221 ! 3 222 ! Use the scan function code to select appropriate scan processing. 3 223 ! 3 224 3 225 CASE .options[STR$V_FUNCTION] FROM 1 TO STR$K_STOP OF 3 226 SET SSCAN XST$SCAN - FIND Substring 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 6 X00.06 19-MAR-2002 10:11:44 [LASTOVICA.XPORT.VMSGEN]SSCAN.BLI;1 3 228 %TITLE 'XST$SCAN - FIND Substring' 3 229 3 230 !+ 3 231 ! 3 232 ! $STR_SCAN( FIND = substring, ... ) 3 233 ! 3 234 !- 3 235 3 236 [ STR$K_FIND ] : 3 237 BEGIN 4 238 sub_pointer = CH$FIND_SUB( .source_length, ! Search for the specified substring. 4 239 .source_pointer, 4 240 .pattern[STR$H_LENGTH], 4 241 .pattern[STR$A_POINTER] ); 4 242 4 243 IF CH$FAIL( .sub_pointer ) ! Check for a search failure.sub_ 4 244 THEN 4 245 $STR_QUIT( FAILURE ); 4 246 4 247 sub_length = .pattern[STR$H_LENGTH]; ! The result substring is the same length as 4 248 ! the pattern string. 4 249 END; SSCAN XST$SCAN - SPAN Characters 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 7 X00.06 19-MAR-2002 10:11:44 [LASTOVICA.XPORT.VMSGEN]SSCAN.BLI;1 3 251 %TITLE 'XST$SCAN - SPAN Characters' 3 252 3 253 !+ 3 254 ! 3 255 ! $STR_SCAN( SPAN = character-stream, ... ) 3 256 ! 3 257 !- 3 258 3 259 [ STR$K_SPAN ] : 3 260 BEGIN 4 261 LOCAL 4 262 scan_pointer; ! Local scan pointer 4 263 4 264 scan_pointer = .source_pointer; ! Start search at the beginning of the string. 4 265 4 266 INCR index FROM 1 TO .source_length DO ! Check each character for a match in the pattern string. 4 267 BEGIN 5 268 IF CH$FAIL( CH$FIND_SUB( .pattern[STR$H_LENGTH], .pattern[STR$A_POINTER], 5 269 1, .scan_pointer ) ) 5 270 THEN 5 271 EXITLOOP; 5 272 scan_pointer = CH$PLUS( .scan_pointer, 1 ); ! Point to the next character. 5 273 END; 4 274 4 275 sub_length = CH$DIFF( .scan_pointer, ! Calculate the length of the substring found. 4 276 .source_pointer ); 4 277 4 278 sub_pointer = .source_pointer; ! The substring always starts at the beginning 4 279 ! of the source string. 4 280 END; SSCAN XST$SCAN - STOP At Delimiter 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 8 X00.06 19-MAR-2002 10:11:44 [LASTOVICA.XPORT.VMSGEN]SSCAN.BLI;1 3 282 %TITLE 'XST$SCAN - STOP At Delimiter' 3 283 3 284 !+ 3 285 ! 3 286 ! $STR_SCAN( STOP = character-stream, ... ) 3 287 ! 3 288 !- 3 289 3 290 [ STR$K_STOP ] : 3 291 BEGIN 4 292 LOCAL 4 293 scan_pointer; ! Local scan pointer 4 294 4 295 scan_pointer = .source_pointer; ! Start search at the beginning of the string. 4 296 4 297 INCR index FROM 1 TO .source_length DO ! Check each character for no match in the pattern s 4 297 tring. 4 298 BEGIN 5 299 IF NOT CH$FAIL( CH$FIND_SUB( .pattern[STR$H_LENGTH], .pattern[STR$A_POINTER], 5 300 1, .scan_pointer ) ) 5 301 THEN 5 302 EXITLOOP; 5 303 scan_pointer = CH$PLUS( .scan_pointer, 1 ); ! Point to the next character. 5 304 END; 4 305 4 306 sub_length = CH$DIFF( .scan_pointer, ! Calculate the length of the substring found. 4 307 .source_pointer ); 4 308 4 309 sub_pointer = .source_pointer; ! The substring always starts at the beginning 4 310 ! of the source string. 4 311 END; 3 312 3 313 TES; SSCAN XST$SCAN - Common Post-scan Pro 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 9 X00.06 19-MAR-2002 10:11:44 [LASTOVICA.XPORT.VMSGEN]SSCAN.BLI;1 3 315 %TITLE 'XST$SCAN - Common Post-scan Processing' 3 316 3 317 !+ 3 318 ! 3 319 ! Continuation of common scan processing. 3 320 ! 3 321 !- 3 322 3 323 ! 3 324 ! Determine an appropriate scanning success completion code 3 325 ! and return the character following the substring found. 3 326 ! 3 327 3 328 IF CH$PLUS( .sub_pointer, .sub_length ) EQLA ! If the substring is at the end of the source string, 3 329 CH$PLUS( .source_pointer, .source_length ) 3 330 THEN ! 3 331 BEGIN ! 4 332 primary_code = STR$_END_STRING; ! indicate that the end of the string has been reached 4 333 IF .delimiter NEQ 0 ! 4 334 THEN ! 4 335 .delimiter = %CHAR( 0 ); ! and return a null delimiter code. 4 336 END 4 337 ELSE 3 338 BEGIN 4 339 primary_code = 1; ! Otherwise, indicate a normal successful scan 4 340 IF .delimiter NEQ 0 ! and return the character following the substring. 4 341 THEN 4 342 .delimiter = CH$RCHAR( CH$PLUS( .sub_pointer, .sub_length ) ); 4 343 END; 3 344 3 345 ! 3 346 ! If requested, return a copy of the substring found. 3 347 ! 3 348 3 349 IF .output EQL 0 ! If neither SUBSTRING= or TARGET= was specified, 3 350 THEN ! 3 351 $STR_QUIT(); ! jump to return to the caller. 3 352 3 353 IF .options[STR$V_TARGET] ! If TARGET=desc was specified, 3 354 THEN ! return a copy of the substring found. 3 355 BEGIN 4 356 $XPO_IF_NOT( $STR_COPY( STRING = (.sub_length,.sub_pointer), P 4 357 TARGET = .output, P 4 358 FAILURE = 0 ) ) 6 359 THEN 5 360 $STR_QUIT( BAD_TARGET, (.$XPO_STATUS) ); 4 361 END 4 362 4 363 ! 4 364 ! If requested, fill in the caller's substring descriptor. 4 365 ! 4 366 4 367 ELSE 3 368 BEGIN 4 369 IF .output[STR$B_CLASS] EQL STR$K_CLASS_B OR ! Special SUBSTRING=bounded-desc processing 4 370 .output[STR$B_CLASS] EQL STR$K_CLASS_DB 4 371 THEN SSCAN XST$SCAN - Common Post-scan Pro 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 10 X00.06 19-MAR-2002 10:11:44 [LASTOVICA.XPORT.VMSGEN]SSCAN.BLI;1 4 372 BEGIN 5 373 IF .output EQLA .string 5 374 THEN 5 375 BEGIN 6 376 output[STR$H_PFXLEN] = .string[STR$H_PFXLEN] + CH$DIFF( .sub_pointer, .string[STR$A_POINTER] ); 6 377 output[STR$H_MAXLEN] = .string[STR$H_MAXLEN]; 6 378 END 6 379 ELSE 5 380 BEGIN 6 381 output[STR$H_PFXLEN] = CH$DIFF( .sub_pointer, .string[STR$A_POINTER] ); 6 382 output[STR$H_MAXLEN] = .string[STR$H_LENGTH]; 6 383 END; 5 384 END; 4 385 4 386 output[STR$H_LENGTH] = .sub_length; ! SUBSTRING=any_desc processing 4 387 output[STR$A_POINTER] = .sub_pointer; 4 388 END; 3 389 3 390 $STR_MAIN_END; 2 391 2 392 ! 2 393 ! Call an appropriate action routine. 2 394 ! 2 395 2 396 $STR_ACTION_RTN( .options[STR$V_FUNCTION], .string, .pattern ); 2 397 2 398 ! 2 399 ! Free any temporary XPORT strings input to this scanning function. 2 400 ! 2 401 2 402 IF NOT .options[STR$V_NO_FREE_T] ! Unless this is an internal XPORT call, 2 403 THEN ! 2 404 BEGIN ! 3 405 $STR_FREE_TEMP( .string ); ! free the source and pattern strings if they 3 406 $STR_FREE_TEMP( .pattern ); ! are temporary strings. 3 407 END; 2 408 2 409 ! 2 410 ! Return the final completion code to the caller. 2 411 ! 2 412 2 413 RETURN .primary_code 2 414 2 415 END; 1 416 END 1 417 ELUDOM SSCAN Machine Code Listing 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 11 X00.06 19-MAR-2002 10:11:44 [LASTOVICA.XPORT.VMSGEN]SSCAN.BLI;1 .psect _XPO$CODE, CON, LCL, SHR, EXE, NOWRT, NOVEC .proc XST$SCAN .align 32 .global XST$SCAN XST$SCAN: // 000080 { .mii 002C053B3C00 0000 alloc r112 = rspfs, 7, 76, 6, 0 010800101C80 0001 mov r114 = r1 000188001BC0 0002 mov r111 = br0 ;; } { .mmi 0119F8CE0300 0010 adds r12 = -16, r12 012000002640 0011 mov r25 = 1 // 000155 0000B2101CC0 0012 sxt4 r115 = STRING // r115 = r33 } { .mib 010800000A00 0020 mov SECONDARY_CODE = r0 // r40 = r0 // 000149 000198001C40 0021 mov r113 = pr // 000080 00A000001000 0022 br.call.sptk.many br0 = XST$VALIDATE // 000155 } { .mib 010807200040 0030 mov r1 = r114 00A0308001C0 0031 tbit.z pr7, pr6 = $STR$STATUS, 0 // pr7, pr6 = r8, 0 008600006006 0032 (pr6) br.cond.dpnt.few L$2 ;; } { .mlx 010800800A00 0040 mov SECONDARY_CODE = $STR$STATUS // r40 = r8 800000000000 0041 movl PRIMARY_CODE = 2402378 // r41 = 2402378 0195025294 } { .mfb 000008000000 0050 nop.m 0 000008000000 0051 nop.f 0 008000152000 0052 br.sptk.few L$4 ;; } 0060 L$2: { .mii 000008000000 0060 nop.m 0 00A402020A80 0061 extr.u r42 = OPTIONS, 8, 1 ;; // r42 = r32, 8, 1 // 000157 00A042A00240 0062 tbit.z pr9, pr8 = r42, 0 ;; } { .mii 01C0000010C9 0070 (pr9) cmp.eq.unc pr3, pr0 = r0, r0 01C000001088 0071 (pr8) cmp.eq.unc pr2, pr0 = r0, r0 ;; 01C0000012C3 0072 (pr3) cmp.eq.unc pr11, pr0 = r0, r0 } { .mfb 01C000001282 0080 (pr2) cmp.eq.unc pr10, pr0 = r0, r0 000008000000 0081 nop.f 0 008600008003 0082 (pr3) br.cond.dpnt.few L$5 } { .mii 01200807CB00 0090 mov r44 = 190 // 000159 0000B2100AC0 0091 sxt4 r43 = STRING ;; // r43 = r33 // 000158 010802B06AC0 0092 adds r43 = 3, r43 ;; } { .mmi SSCAN Machine Code Listing 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 12 X00.06 XST$SCAN 19-MAR-2002 10:11:44 [LASTOVICA.XPORT.VMSGEN]SSCAN.BLI;1 008002B00AC0 00A0 ld1 r43 = [r43] ;; 01C402C563C0 00A1 cmp4.eq pr15, pr0 = r43, r44 // 000159 01CC62B06340 00A2 cmp4.eq pr13, pr12 = 3, r43 ;; // 000158 } { .mmi 01C26000034F 00B0 (pr15) cmp.eq.or.andcm pr13, pr12 = r0, r0 ;; 01C0000012CD 00B1 (pr13) cmp.eq.unc pr11, pr0 = r0, r0 // 000157 01C00000128C 00B2 (pr12) cmp.eq.unc pr10, pr0 = r0, r0 } 00C0 L$5: { .bbb 00860000200A 00C0 (pr10) br.cond.dpnt.few L$6 004000000000 00C1 nop.b 0 00860000800B 00C2 (pr11) br.cond.dpnt.few L$7 } 00D0 L$6: { .mlx 000008000000 00D0 nop.m 0 800000000000 00D1 movl PRIMARY_CODE = 2402378 // r41 = 2402378 // 000161 0195025294 } { .mlx 000008000000 00E0 nop.m 0 000000000000 00E1 movl SECONDARY_CODE = 2402314 // r40 = 2402314 0195024294 } { .mfb 000008000000 00F0 nop.m 0 000008000000 00F1 nop.f 0 00800013E000 00F2 br.sptk.few L$4 ;; } 0100 L$7: // 000167 { .mib 012000002640 0100 mov r25 = 1 0000B2201CC0 0101 sxt4 r115 = PATTERN // r115 = r34 00A000001000 0102 br.call.sptk.many br0 = XST$VALIDATE } { .mib 010807200040 0110 mov r1 = r114 00A0308001C0 0111 tbit.z pr7, pr6 = $STR$STATUS, 0 // pr7, pr6 = r8, 0 008600006006 0112 (pr6) br.cond.dpnt.few L$8 } { .mlx 010800800A00 0120 mov SECONDARY_CODE = $STR$STATUS // r40 = r8 800000000000 0121 movl PRIMARY_CODE = 2402354 // r41 = 2402354 0195024C94 } { .mfb 000008000000 0130 nop.m 0 000008000000 0131 nop.f 0 008000136000 0132 br.sptk.few L$4 ;; } 0140 L$8: { .mib 000008000000 0140 nop.m 0 0000B2200B40 0141 sxt4 r45 = PATTERN // r45 = r34 // 000169 004000000000 0142 nop.b 0 ;; SSCAN Machine Code Listing 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 13 X00.06 XST$SCAN 19-MAR-2002 10:11:44 [LASTOVICA.XPORT.VMSGEN]SSCAN.BLI;1 } { .mmi 008042D00B80 0150 ld2 r46 = [r45] ;; 01C442E00000 0151 cmp4.eq pr0, pr8 = r0, r46 000008000000 0152 nop.i 0 } { .mfb 000008000000 0160 nop.m 0 000008000000 0161 nop.f 0 008600008008 0162 (pr8) br.cond.dpnt.few L$10 } { .mlx 000008000000 0170 nop.m 0 800000000000 0171 movl PRIMARY_CODE = 2402354 // r41 = 2402354 // 000171 0195024C94 } { .mlx 000008000000 0180 nop.m 0 000000000000 0181 movl SECONDARY_CODE = 2402450 // r40 = 2402450 0195124494 } { .mfb 000008000000 0190 nop.m 0 000008000000 0191 nop.f 0 00800012A000 0192 br.sptk.few L$4 ;; } 01A0 L$10: // 000169 { .mmi 01C4523002C0 01A0 cmp4.eq pr11, pr10 = r0, OUTPUT ;; // pr11, pr10 = r0, r35 // 000177 01C00000114B 01A1 (pr11) cmp.eq.unc pr5, pr0 = r0, r0 01C00000110A 01A2 (pr10) cmp.eq.unc pr4, pr0 = r0, r0 } { .bbb 008600002004 01B0 (pr4) br.cond.dpnt.few L$12 004000000000 01B1 nop.b 0 008600034005 01B2 (pr5) br.cond.dpnt.few L$13 } 01C0 L$12: // 000180 { .mib 012000002640 01C0 mov r25 = 1 0000B2301CC0 01C1 sxt4 r115 = OUTPUT // r115 = r35 00A000001000 01C2 br.call.sptk.many br0 = XST$VALIDATE } { .mib 010807200040 01D0 mov r1 = r114 00A0308001C0 01D1 tbit.z pr7, pr6 = $STR$STATUS, 0 // pr7, pr6 = r8, 0 008600006006 01D2 (pr6) br.cond.dpnt.few L$14 } { .mlx 010800800A00 01E0 mov SECONDARY_CODE = $STR$STATUS // r40 = r8 800000000000 01E1 movl PRIMARY_CODE = 2402402 // r41 = 2402402 0195025894 } { .mfb 000008000000 01F0 nop.m 0 000008000000 01F1 nop.f 0 00800011E000 01F2 br.sptk.few L$4 ;; SSCAN Machine Code Listing 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 14 X00.06 XST$SCAN 19-MAR-2002 10:11:44 [LASTOVICA.XPORT.VMSGEN]SSCAN.BLI;1 } 0200 L$14: { .mii 01C0000013C2 0200 (pr2) cmp.eq.unc pr15, pr0 = r0, r0 // 000183 00A402024BC0 0201 extr.u r47 = OPTIONS, 9, 1 // r47 = r32, 9, 1 // 000184 01C45A342280 0202 cmp4.eq pr10, pr11 = STRING, OUTPUT ;; // pr10, pr11 = r33, r35 // 000182 } { .mii 000008000000 0210 nop.m 0 00A042F00240 0211 tbit.z pr9, pr8 = r47, 0 ;; // 000183 01C000001308 0212 (pr8) cmp.eq.unc pr12, pr0 = r0, r0 ;; } { .mmi 01C27800000C 0220 (pr12) cmp.eq.or.andcm pr0, pr15 = r0, r0 ;; 01C2500002CF 0221 (pr15) cmp.eq.or.andcm pr11, pr10 = r0, r0 // 000182 000008000000 0222 nop.i 0 } { .bbb 00860000200A 0230 (pr10) br.cond.dpnt.few L$16 004000000000 0231 nop.b 0 00860000800B 0232 (pr11) br.cond.dpnt.few L$17 } 0240 L$16: { .mlx 000008000000 0240 nop.m 0 800000000000 0241 movl PRIMARY_CODE = 2402402 // r41 = 2402402 // 000186 0195025894 } { .mlx 000008000000 0250 nop.m 0 000000000000 0251 movl SECONDARY_CODE = 2402410 // r40 = 2402410 0195025A94 } { .mfb 000008000000 0260 nop.m 0 000008000000 0261 nop.f 0 008000110000 0262 br.sptk.few L$4 ;; } 0270 L$17: // 000182 { .mfb 000008000000 0270 nop.m 0 000008000000 0271 nop.f 0 00860001C00C 0272 (pr12) br.cond.dpnt.few L$13 // 000188 } { .mii 01200807AC40 0280 mov r49 = 189 // 000191 0000B2100C00 0281 sxt4 r48 = STRING ;; // r48 = r33 010803006C00 0282 adds r48 = 3, r48 ;; } { .mmi 008003000C00 0290 ld1 r48 = [r48] ;; 01C433160000 0291 cmp4.eq pr0, pr6 = r48, r49 000008000000 0292 nop.i 0 } { .mfb 000008000000 02A0 nop.m 0 000008000000 02A1 nop.f 0 SSCAN Machine Code Listing 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 15 X00.06 XST$SCAN 19-MAR-2002 10:11:44 [LASTOVICA.XPORT.VMSGEN]SSCAN.BLI;1 008600008006 02A2 (pr6) br.cond.dpnt.few L$19 } { .mlx 000008000000 02B0 nop.m 0 800000000000 02B1 movl PRIMARY_CODE = 2402378 // r41 = 2402378 // 000193 0195025294 } { .mlx 000008000000 02C0 nop.m 0 000000000000 02C1 movl SECONDARY_CODE = 2402442 // r40 = 2402442 0195124294 } { .mfb 000008000000 02D0 nop.m 0 000008000000 02D1 nop.f 0 008000102000 02D2 br.sptk.few L$4 ;; } 02E0 L$19: // 000191 { .mii 01200807CCC0 02E0 mov r51 = 190 // 000197 0000B2300C80 02E1 sxt4 r50 = OUTPUT // r50 = r35 // 000195 01C402146240 02E2 cmp4.eq pr9, pr0 = OUTPUT, STRING ;; // pr9, pr0 = r35, r33 // 000199 } { .mmi 010803206C80 02F0 adds r50 = 3, r50 ;; // 000195 008003200C80 02F1 ld1 r50 = [r50] 000008000000 02F2 nop.i 0 ;; } { .mii 01C47B364380 0300 cmp4.eq pr14, pr15 = r50, r51 // 000197 01CC5B204280 0301 cmp4.eq pr10, pr11 = 2, r50 ;; // 000195 01C270000009 0302 (pr9) cmp.eq.or.andcm pr0, pr14 = r0, r0 ;; // 000198 } { .mbb 01C25800028E 0310 (pr14) cmp.eq.or.andcm pr10, pr11 = r0, r0 // 000196 00860000200A 0311 (pr10) br.cond.dpnt.few L$21 // 000195 00860000800B 0312 (pr11) br.cond.dpnt.few L$13 } 0320 L$21: { .mlx 000008000000 0320 nop.m 0 800000000000 0321 movl PRIMARY_CODE = 2402402 // r41 = 2402402 // 000201 0195025894 } { .mlx 000008000000 0330 nop.m 0 000000000000 0331 movl SECONDARY_CODE = 2402314 // r40 = 2402314 0195024294 } { .mfb 000008000000 0340 nop.m 0 000008000000 0341 nop.f 0 0080000F4000 0342 br.sptk.few L$4 ;; } 0350 L$13: // 000177 { .mib 000008000000 0350 nop.m 0 SSCAN Machine Code Listing 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 16 X00.06 XST$SCAN 19-MAR-2002 10:11:44 [LASTOVICA.XPORT.VMSGEN]SSCAN.BLI;1 0000B2100D00 0351 sxt4 r52 = STRING // r52 = r33 // 000381 008600004002 0352 (pr2) br.cond.dpnt.few L$22 // 000209 } { .mfb 000008000000 0360 nop.m 0 000008000000 0361 nop.f 0 00860000A003 0362 (pr3) br.cond.dpnt.few L$23 ;; } 0370 L$22: { .mmi 010803414D00 0370 adds r52 = 10, r52 ;; // 000212 00B04B4FCD80 0371 ld2 r54 = [r52], -2 000008000000 0372 nop.i 0 ;; } { .mmi 00B04B4F8D40 0380 ld2 r53 = [r52], -4 ;; 00B08B4F8E00 0381 ld4 r56 = [r52], -4 // 000213 01002B66AD40 0382 sub r53 = r53, r54 ;; // 000212 } { .mmi 008043400DC0 0390 ld2 r55 = [r52] ;; 01002B76AD40 0391 sub SOURCE_LENGTH = r53, r55 // r53 = r53, r55 010003770E00 0392 add SOURCE_POINTER = r56, r55 // r56 = r56, r55 // 000213 } { .mfb 000008000000 03A0 nop.m 0 000008000000 03A1 nop.f 0 008000004000 03A2 br.sptk.few L$24 ;; // 000209 } 03B0 L$23: { .mmi 00A043408D40 03B0 ld2 SOURCE_LENGTH = [r52], 4 ;; // r53 = [r52], 4 // 000217 00B08B4F8E00 03B1 ld4 SOURCE_POINTER = [r52], -4 // r56 = [r52], -4 // 000218 000008000000 03B2 nop.i 0 } 03C0 L$24: // 000209 { .mii 000008000000 03C0 nop.m 0 00A43A000EC0 03C1 extr.u r59 = OPTIONS, 0, 8 ;; // r59 = r32, 0, 8 // 000225 01CC03B04340 03C2 cmp4.eq pr13, pr0 = 2, r59 } { .mfb 000008000000 03D0 nop.m 0 000008000000 03D1 nop.f 0 00860005400D 03D2 (pr13) br.cond.dpnt.few L$28 } { .mfb 01CC03B061C0 03E0 cmp4.eq pr7, pr0 = 3, r59 000008000000 03E1 nop.f 0 008600012007 03E2 (pr7) br.cond.dpnt.few L$32 } { .mii 010802D00B40 03F0 adds r45 = 0, r45 // 000241 010803501D00 03F1 mov r116 = SOURCE_LENGTH // r116 = r53 // 000238 0000B3801CC0 03F2 sxt4 r115 = SOURCE_POINTER // r115 = r56 // 000239 } { .mmi SSCAN Machine Code Listing 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 17 X00.06 XST$SCAN 19-MAR-2002 10:11:44 [LASTOVICA.XPORT.VMSGEN]SSCAN.BLI;1 010800000FC0 0400 mov r63 = r0 ;; // 000238 00A042D09D80 0401 ld2 r118 = [r45], 4 // 000240 000008000000 0402 nop.i 0 ;; } { .mii 008082D00F00 0410 ld4 r60 = [r45] // 000241 010807600F80 0411 mov r62 = r118 ;; // 000240 0000B3C01D40 0412 sxt4 r117 = r60 // 000241 } { .mfb 000008000000 0420 nop.m 0 000008000000 0421 nop.f 0 00A000001000 0422 br.call.sptk.many br0 = OTS$INDEX // 000238 } { .mii 018410010000 0430 cmp4.lt pr0, pr2 = r8, r0 010003810200 0431 add r8 = r8, SOURCE_POINTER // r8 = r8, r56 010807200040 0432 mov r1 = r114 ;; } { .mmi 010800800FC2 0440 (pr2) mov r63 = r8 ;; 01C41BF00000 0441 cmp4.eq pr0, pr3 = r0, SUB_POINTER // pr0, pr3 = r0, r63 // 000243 000008000000 0442 nop.i 0 } { .mfb 000008000000 0450 nop.m 0 000008000000 0451 nop.f 0 00860008A003 0452 (pr3) br.cond.dpnt.few L$35 } { .mfb 010800000A40 0460 mov PRIMARY_CODE = r0 // r41 = r0 // 000245 000008000000 0461 nop.f 0 0080000D0000 0462 br.sptk.few L$4 ;; } 0470 L$32: // 000292 { .mii 018C3B500000 0470 cmp4.lt pr0, pr7 = 0, SOURCE_LENGTH // pr0, pr7 = 0, r53 // 000297 012000003040 0471 mov INDEX = 1 // r65 = 1 010803801000 0472 mov SCAN_POINTER = SOURCE_POINTER // r64 = r56 // 000295 } { .mfb 000008000000 0480 nop.m 0 000008000000 0481 nop.f 0 00860003C007 0482 (pr7) br.cond.dpnt.few L$38 // 000297 } { .mii 010802D08B40 0490 adds r45 = 4, r45 // 000299 0119FB5FD080 0491 adds r66 = -2, SOURCE_LENGTH // r66 = -2, r53 // 000297 000008000000 0492 nop.i 0 ;; } { .mii 00B08ADF90C0 04A0 ld4 r67 = [r45], -4 // 000299 018464200000 04A1 cmp4.lt pr0, pr12 = r0, r66 // 000297 01844C26A280 04A2 cmp4.lt pr10, pr9 = SOURCE_LENGTH, r66 ;; // pr10, pr9 = r53, r66 } { .mii 008042D01180 04B0 ld2 r70 = [r45] // 000299 SSCAN Machine Code Listing 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 18 X00.06 XST$SCAN 19-MAR-2002 10:11:44 [LASTOVICA.XPORT.VMSGEN]SSCAN.BLI;1 01C24800028C 04B1 (pr12) cmp.eq.or.andcm pr10, pr9 = r0, r0 // 000297 0000B4301100 04B2 sxt4 r68 = r67 // 000299 } { .bbb 008600002009 04C0 (pr9) br.cond.dpnt.few L$42 // 000297 004000000000 04C1 nop.b 0 00860002800A 04C2 (pr10) br.cond.dpnt.few L$47 ;; } 04D0 L$42: { .mii 010804601D00 04D0 mov r116 = r70 // 000299 010804401CC0 04D1 mov r115 = r68 012000003D80 04D2 mov r118 = 1 } { .mib 010804107040 04E0 adds r65 = 3, r65 // 000297 0000B4001D40 04E1 sxt4 r117 = SCAN_POINTER // r117 = r64 // 000300 00A000001000 04E2 br.call.sptk.many br0 = OTS$INDEX // 000299 } { .mii 0100043111C0 04F0 add r71 = r8, r67 0184100100C0 04F1 cmp4.lt pr3, pr2 = r8, r0 010807200040 04F2 mov r1 = r114 ;; } { .mmi 01C4047001C0 0500 cmp4.eq pr7, pr0 = r0, r71 ;; // 000300 01C210000007 0501 (pr7) cmp.eq.or.andcm pr0, pr2 = r0, r0 // 000299 000008000000 0502 nop.i 0 } { .mfb 000008000000 0510 nop.m 0 000008000000 0511 nop.f 0 00860002A002 0512 (pr2) br.cond.dpnt.few L$38 } { .mii 010804003000 0520 adds r64 = 1, r64 010804601D00 0521 mov r116 = r70 010804401CC0 0522 mov r115 = r68 } { .mmi 012000003D80 0530 mov r118 = 1 ;; 000008000000 0531 nop.m 0 0000B4001D40 0532 sxt4 r117 = SCAN_POINTER // r117 = r64 // 000300 } { .mfb 000008000000 0540 nop.m 0 000008000000 0541 nop.f 0 00A000001000 0542 br.call.sptk.many br0 = OTS$INDEX // 000299 } { .mii 010004311200 0550 add r72 = r8, r67 0184100100C0 0551 cmp4.lt pr3, pr2 = r8, r0 010807200040 0552 mov r1 = r114 ;; } { .mmi 01C4048001C0 0560 cmp4.eq pr7, pr0 = r0, r72 ;; // 000300 01C210000007 0561 (pr7) cmp.eq.or.andcm pr0, pr2 = r0, r0 // 000299 SSCAN Machine Code Listing 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 19 X00.06 XST$SCAN 19-MAR-2002 10:11:44 [LASTOVICA.XPORT.VMSGEN]SSCAN.BLI;1 000008000000 0562 nop.i 0 } { .mfb 000008000000 0570 nop.m 0 000008000000 0571 nop.f 0 00860001E002 0572 (pr2) br.cond.dpnt.few L$38 } { .mii 010804003000 0580 adds r64 = 1, r64 010804601D00 0581 mov r116 = r70 010804401CC0 0582 mov r115 = r68 } { .mmi 012000003D80 0590 mov r118 = 1 ;; 000008000000 0591 nop.m 0 0000B4001D40 0592 sxt4 r117 = SCAN_POINTER // r117 = r64 // 000300 } { .mfb 000008000000 05A0 nop.m 0 000008000000 05A1 nop.f 0 00A000001000 05A2 br.call.sptk.many br0 = OTS$INDEX // 000299 } { .mii 010004311240 05B0 add r73 = r8, r67 0184100100C0 05B1 cmp4.lt pr3, pr2 = r8, r0 010807200040 05B2 mov r1 = r114 ;; } { .mmi 01C4049001C0 05C0 cmp4.eq pr7, pr0 = r0, r73 ;; // 000300 01C210000007 05C1 (pr7) cmp.eq.or.andcm pr0, pr2 = r0, r0 // 000299 000008000000 05C2 nop.i 0 } { .mfb 000008000000 05D0 nop.m 0 000008000000 05D1 nop.f 0 008600012002 05D2 (pr2) br.cond.dpnt.few L$38 } { .mib 010804003000 05E0 adds r64 = 1, r64 018444184000 05E1 cmp4.lt pr0, pr8 = r66, INDEX // pr0, pr8 = r66, r65 // 000297 0095FFFDE008 05E2 (pr8) br.cond.dptk.few L$42 } { .mfb 01840416A2C0 05F0 cmp4.lt pr11, pr0 = SOURCE_LENGTH, INDEX // pr11, pr0 = r53, r65 000008000000 05F1 nop.f 0 00860000E00B 05F2 (pr11) br.cond.dpnt.few L$38 ;; } 0600 L$47: { .mii 010804601D00 0600 mov r116 = r70 // 000299 010804401CC0 0601 mov r115 = r68 012000003D80 0602 mov r118 = 1 } { .mib 010804103040 0610 adds r65 = 1, r65 // 000297 0000B4001D40 0611 sxt4 r117 = SCAN_POINTER // r117 = r64 // 000300 00A000001000 0612 br.call.sptk.many br0 = OTS$INDEX // 000299 SSCAN Machine Code Listing 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 20 X00.06 XST$SCAN 19-MAR-2002 10:11:44 [LASTOVICA.XPORT.VMSGEN]SSCAN.BLI;1 } { .mii 010004311280 0620 add r74 = r8, r67 0184100100C0 0621 cmp4.lt pr3, pr2 = r8, r0 010807200040 0622 mov r1 = r114 ;; } { .mmi 01C404A001C0 0630 cmp4.eq pr7, pr0 = r0, r74 ;; // 000300 01C210000007 0631 (pr7) cmp.eq.or.andcm pr0, pr2 = r0, r0 // 000299 000008000000 0632 nop.i 0 } { .mfb 000008000000 0640 nop.m 0 000008000000 0641 nop.f 0 008600004002 0642 (pr2) br.cond.dpnt.few L$38 } { .mib 010804003000 0650 adds r64 = 1, r64 01844416A000 0651 cmp4.lt pr0, pr8 = SOURCE_LENGTH, INDEX // pr0, pr8 = r53, r65 // 000297 0095FFFF6008 0652 (pr8) br.cond.dptk.few L$47 ;; } 0660 L$38: { .mfb 01002B880F80 0660 sub SUB_LENGTH = SCAN_POINTER, // r62 = r64, r56 // 000307 SOURCE_POINTER 000008000000 0661 nop.f 0 008000046000 0662 br.sptk.few L$79 ;; } 0670 L$28: // 000261 { .mii 018C53500000 0670 cmp4.lt pr0, pr10 = 0, SOURCE_LENGTH // pr0, pr10 = 0, r53 // 000266 012000003300 0671 mov INDEX = 1 // r76 = 1 0108038012C0 0672 mov SCAN_POINTER = SOURCE_POINTER // r75 = r56 // 000264 } { .mfb 000008000000 0680 nop.m 0 000008000000 0681 nop.f 0 00860004000A 0682 (pr10) br.cond.dpnt.few L$51 // 000266 } { .mii 010802D08B40 0690 adds r45 = 4, r45 // 000268 0119FB5FD340 0691 adds r77 = -2, SOURCE_LENGTH // r77 = -2, r53 // 000266 000008000000 0692 nop.i 0 ;; } { .mii 00B08ADF9380 06A0 ld4 r78 = [r45], -4 // 000268 01847CD00000 06A1 cmp4.lt pr0, pr15 = r0, r77 // 000266 018464D6A340 06A2 cmp4.lt pr13, pr12 = SOURCE_LENGTH, r77 ;; // pr13, pr12 = r53, r77 } { .mii 008042D01400 06B0 ld2 r80 = [r45] // 000268 01C26000034F 06B1 (pr15) cmp.eq.or.andcm pr13, pr12 = r0, r0 // 000266 0000B4E013C0 06B2 sxt4 r79 = r78 // 000268 } { .bbb 00860000200C 06C0 (pr12) br.cond.dpnt.few L$55 // 000266 004000000000 06C1 nop.b 0 SSCAN Machine Code Listing 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 21 X00.06 XST$SCAN 19-MAR-2002 10:11:44 [LASTOVICA.XPORT.VMSGEN]SSCAN.BLI;1 00860002A00D 06C2 (pr13) br.cond.dpnt.few L$60 ;; } 06D0 L$55: { .mii 010805001D00 06D0 mov r116 = r80 // 000268 010804F01CC0 06D1 mov r115 = r79 012000003D80 06D2 mov r118 = 1 } { .mib 000008000000 06E0 nop.m 0 0000B4B01D40 06E1 sxt4 r117 = SCAN_POINTER // r117 = r75 // 000269 00A000001000 06E2 br.call.sptk.many br0 = OTS$INDEX // 000268 } { .mii 010004E11440 06F0 add r81 = r8, r78 0184100100C0 06F1 cmp4.lt pr3, pr2 = r8, r0 010807200040 06F2 mov r1 = r114 ;; } { .mmi 01C4051001C0 0700 cmp4.eq pr7, pr0 = r0, r81 ;; // 000269 01C2100000C7 0701 (pr7) cmp.eq.or.andcm pr3, pr2 = r0, r0 // 000268 000008000000 0702 nop.i 0 } { .bbb 008600002002 0710 (pr2) br.cond.dpnt.few L$56 004000000000 0711 nop.b 0 00860002E003 0712 (pr3) br.cond.dpnt.few L$51 } 0720 L$56: { .mii 010804B032C0 0720 adds r75 = 1, r75 010805001D00 0721 mov r116 = r80 010804F01CC0 0722 mov r115 = r79 } { .mii 012000003D80 0730 mov r118 = 1 010804C03300 0731 adds r76 = 1, r76 ;; 0000B4B01D40 0732 sxt4 r117 = SCAN_POINTER // r117 = r75 // 000269 } { .mfb 000008000000 0740 nop.m 0 000008000000 0741 nop.f 0 00A000001000 0742 br.call.sptk.many br0 = OTS$INDEX // 000268 } { .mii 010004E11480 0750 add r82 = r8, r78 0184100100C0 0751 cmp4.lt pr3, pr2 = r8, r0 010807200040 0752 mov r1 = r114 ;; } { .mmi 01C4052001C0 0760 cmp4.eq pr7, pr0 = r0, r82 ;; // 000269 01C2100000C7 0761 (pr7) cmp.eq.or.andcm pr3, pr2 = r0, r0 // 000268 000008000000 0762 nop.i 0 } { .bbb 008600002002 0770 (pr2) br.cond.dpnt.few L$57 004000000000 0771 nop.b 0 SSCAN Machine Code Listing 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 22 X00.06 XST$SCAN 19-MAR-2002 10:11:44 [LASTOVICA.XPORT.VMSGEN]SSCAN.BLI;1 008600022003 0772 (pr3) br.cond.dpnt.few L$51 } 0780 L$57: { .mii 010804B032C0 0780 adds r75 = 1, r75 010805001D00 0781 mov r116 = r80 010804F01CC0 0782 mov r115 = r79 } { .mii 012000003D80 0790 mov r118 = 1 010804C03300 0791 adds r76 = 1, r76 ;; 0000B4B01D40 0792 sxt4 r117 = SCAN_POINTER // r117 = r75 // 000269 } { .mfb 000008000000 07A0 nop.m 0 000008000000 07A1 nop.f 0 00A000001000 07A2 br.call.sptk.many br0 = OTS$INDEX // 000268 } { .mii 010004E114C0 07B0 add r83 = r8, r78 0184100100C0 07B1 cmp4.lt pr3, pr2 = r8, r0 010807200040 07B2 mov r1 = r114 ;; } { .mmi 01C4053001C0 07C0 cmp4.eq pr7, pr0 = r0, r83 ;; // 000269 01C2100000C7 07C1 (pr7) cmp.eq.or.andcm pr3, pr2 = r0, r0 // 000268 000008000000 07C2 nop.i 0 } { .bbb 008600002002 07D0 (pr2) br.cond.dpnt.few L$58 004000000000 07D1 nop.b 0 008600016003 07D2 (pr3) br.cond.dpnt.few L$51 } 07E0 L$58: { .mii 010804C03300 07E0 adds r76 = 1, r76 010804B032C0 07E1 adds r75 = 1, r75 ;; 018444C9A000 07E2 cmp4.lt pr0, pr8 = r77, INDEX // pr0, pr8 = r77, r76 // 000266 } { .mfb 000008000000 07F0 nop.m 0 000008000000 07F1 nop.f 0 0095FFFDC008 07F2 (pr8) br.cond.dptk.few L$55 } { .mfb 018404C6A2C0 0800 cmp4.lt pr11, pr0 = SOURCE_LENGTH, INDEX // pr11, pr0 = r53, r76 000008000000 0801 nop.f 0 00860001000B 0802 (pr11) br.cond.dpnt.few L$51 ;; } 0810 L$60: { .mii 010805001D00 0810 mov r116 = r80 // 000268 010804F01CC0 0811 mov r115 = r79 012000003D80 0812 mov r118 = 1 } { .mib 000008000000 0820 nop.m 0 SSCAN Machine Code Listing 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 23 X00.06 XST$SCAN 19-MAR-2002 10:11:44 [LASTOVICA.XPORT.VMSGEN]SSCAN.BLI;1 0000B4B01D40 0821 sxt4 r117 = SCAN_POINTER // r117 = r75 // 000269 00A000001000 0822 br.call.sptk.many br0 = OTS$INDEX // 000268 } { .mii 010004E11500 0830 add r84 = r8, r78 0184100100C0 0831 cmp4.lt pr3, pr2 = r8, r0 010807200040 0832 mov r1 = r114 ;; } { .mmi 01C4054001C0 0840 cmp4.eq pr7, pr0 = r0, r84 ;; // 000269 01C2100000C7 0841 (pr7) cmp.eq.or.andcm pr3, pr2 = r0, r0 // 000268 000008000000 0842 nop.i 0 } { .bbb 008600002002 0850 (pr2) br.cond.dpnt.few L$61 004000000000 0851 nop.b 0 008600006003 0852 (pr3) br.cond.dpnt.few L$51 } 0860 L$61: { .mii 010804C03300 0860 adds r76 = 1, r76 010804B032C0 0861 adds r75 = 1, r75 ;; 018444C6A000 0862 cmp4.lt pr0, pr8 = SOURCE_LENGTH, INDEX // pr0, pr8 = r53, r76 // 000266 } { .mfb 000008000000 0870 nop.m 0 000008000000 0871 nop.f 0 0095FFFF4008 0872 (pr8) br.cond.dptk.few L$60 } 0880 L$51: { .mfi 01002B896F80 0880 sub SUB_LENGTH = SCAN_POINTER, // r62 = r75, r56 // 000276 SOURCE_POINTER 000008000000 0881 nop.f 0 000008000000 0882 nop.i 0 } 0890 L$79: // 000278 { .mfi 010803800FC0 0890 mov SUB_POINTER = SOURCE_POINTER // r63 = r56 000008000000 0891 nop.f 0 000008000000 0892 nop.i 0 ;; } 08A0 L$35: // 000225 { .mii 010003570D40 08A0 add r53 = SOURCE_POINTER, // r53 = r56, r53 // 000329 SOURCE_LENGTH 010003E7F540 08A1 add r85 = SUB_POINTER, SUB_LENGTH ;; // r85 = r63, r62 // 000328 01C4535AA000 08A2 cmp4.eq pr0, pr10 = r85, r53 } { .mfb 000008000000 08B0 nop.m 0 000008000000 08B1 nop.f 0 00860000A00A 08B2 (pr10) br.cond.dpnt.few L$62 } { .mlx 01C402400340 08C0 cmp4.eq pr13, pr0 = r0, DELIMITER // pr13, pr0 = r0, r36 // 000333 800000000000 08C1 movl PRIMARY_CODE = 2394113 // r41 = 2394113 // 000332 SSCAN Machine Code Listing 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 24 X00.06 XST$SCAN 19-MAR-2002 10:11:44 [LASTOVICA.XPORT.VMSGEN]SSCAN.BLI;1 0191024054 } { .mfb 000008000000 08D0 nop.m 0 000008000000 08D1 nop.f 0 00860000E00D 08D2 (pr13) br.cond.dpnt.few L$65 // 000333 } { .mib 000008000000 08E0 nop.m 0 0000B2400900 08E1 sxt4 r36 = DELIMITER // r36 = r36 // 000335 004000000000 08E2 nop.b 0 ;; } { .mfb 008C82400000 08F0 st4 [r36] = r0 000008000000 08F1 nop.f 0 00800000A000 08F2 br.sptk.few L$65 ;; // 000333 } 0900 L$62: // 000328 { .mib 012000002A40 0900 mov PRIMARY_CODE = 1 // r41 = 1 // 000339 01C4024003C0 0901 cmp4.eq pr15, pr0 = r0, DELIMITER // pr15, pr0 = r0, r36 // 000340 00860000800F 0902 (pr15) br.cond.dpnt.few L$65 } { .mii 000008000000 0910 nop.m 0 0000B3E015C0 0911 sxt4 r87 = SUB_LENGTH // r87 = r62 // 000342 0000B3F01580 0912 sxt4 r86 = SUB_POINTER ;; // r86 = r63 } { .mib 0100057AD580 0920 add r86 = r86, r87 0000B2400900 0921 sxt4 r36 = DELIMITER // r36 = r36 004000000000 0922 nop.b 0 ;; } { .mmi 008005601580 0930 ld1 r86 = [r86] ;; 008C824AC000 0931 st4 [r36] = r86 000008000000 0932 nop.i 0 } 0940 L$65: // 000328 { .bbb 008600002004 0940 (pr4) br.cond.dpnt.few L$67 // 000349 004000000000 0941 nop.b 0 008600034005 0942 (pr5) br.cond.dpnt.few L$4 } 0950 L$67: { .mii 000008000000 0950 nop.m 0 00A402025600 0951 extr.u r88 = OPTIONS, 9, 1 ;; // r88 = r32, 9, 1 // 000353 00A0358001C0 0952 tbit.z pr7, pr6 = r88, 0 } { .mfb 000008000000 0960 nop.m 0 000008000000 0961 nop.f 0 008600012007 0962 (pr7) br.cond.dpnt.few L$69 } { .mii 010800C21640 0970 adds r89 = 16, r12 // 000358 SSCAN Machine Code Listing 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 25 X00.06 XST$SCAN 19-MAR-2002 10:11:44 [LASTOVICA.XPORT.VMSGEN]SSCAN.BLI;1 010800C256C0 0971 adds r91 = 18, r12 01201001D680 0972 mov r90 = 270 } { .mmi 010800C29700 0980 adds r92 = 20, r12 010800C21740 0981 adds r93 = 16, r12 01200000A640 0982 mov r25 = 5 ;; } { .mii 008C4597C000 0990 st2 [r89] = SUB_LENGTH // [r89] = r62 0000B0001DC0 0991 sxt4 r119 = r0 0000B0001D80 0992 sxt4 r118 = r0 } { .mii 008C45BB4000 09A0 st2 [r91] = r90 0000B2301D40 09A1 sxt4 r117 = OUTPUT // r117 = r35 0000B5D01D00 09A2 sxt4 r116 = r93 } { .mmb 012400001CC0 09B0 addl r115 = 16384, r0 008C85C7E000 09B1 st4 [r92] = SUB_POINTER // [r92] = r63 00A000001000 09B2 br.call.sptk.many br0 = XST$COPY } { .mib 010807200040 09C0 mov r1 = r114 00A0108000C0 09C1 tbit.z pr3, pr2 = $XPO$STATUS, 0 // pr3, pr2 = r8, 0 008600024002 09C2 (pr2) br.cond.dpnt.few L$4 } { .mlx 010800800A00 09D0 mov SECONDARY_CODE = $XPO$STATUS // r40 = r8 // 000360 800000000000 09D1 movl PRIMARY_CODE = 2402402 // r41 = 2402402 0195025894 } { .mfb 000008000000 09E0 nop.m 0 000008000000 09E1 nop.f 0 008000020000 09E2 br.sptk.few L$4 ;; } 09F0 L$69: // 000353 { .mii 01200807D800 09F0 mov r96 = 190 // 000370 0000B2301780 09F1 sxt4 r94 = OUTPUT ;; // r94 = r35 // 000369 010805E07780 09F2 adds r94 = 3, r94 ;; } { .mmi 00B00DEFB7C0 0A00 ld1 r95 = [r94], -3 ;; 01C4060BE180 0A01 cmp4.eq pr6, pr0 = r95, r96 // 000370 01CC2DF06100 0A02 cmp4.eq pr4, pr5 = 3, r95 ;; // 000369 } { .mbb 01C228000106 0A10 (pr6) cmp.eq.or.andcm pr4, pr5 = r0, r0 008600002004 0A11 (pr4) br.cond.dpnt.few L$71 008600016005 0A12 (pr5) br.cond.dpnt.few L$72 } 0A20 L$71: { .mfb 01C442146000 0A20 cmp4.eq pr0, pr8 = OUTPUT, STRING // pr0, pr8 = r35, r33 // 000373 SSCAN Machine Code Listing 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 26 X00.06 XST$SCAN 19-MAR-2002 10:11:44 [LASTOVICA.XPORT.VMSGEN]SSCAN.BLI;1 000008000000 0A21 nop.f 0 00860000C008 0A22 (pr8) br.cond.dpnt.few L$73 } { .mmi 010803408D00 0A30 adds r52 = 4, r52 ;; // 000376 008083401840 0A31 ld4 r97 = [r52] 010803409900 0A32 adds r100 = 4, r52 ;; // 000377 } { .mii 01080340CD00 0A40 adds r52 = 6, r52 // 000376 01002E17F840 0A41 sub r97 = SUB_POINTER, r97 // r97 = r63, r97 000008000000 0A42 nop.i 0 ;; } { .mmi 008043401880 0A50 ld2 r98 = [r52] ;; 0100061C5840 0A51 add r97 = r98, r97 010805E15780 0A52 adds r94 = 10, r94 ;; } { .mmi 00BC4DEC3F80 0A60 st2 [r94] = r97, -2 008046400D00 0A61 ld2 r52 = [r100] // 000377 000008000000 0A62 nop.i 0 ;; } { .mfb 00BC4DE69E00 0A70 st2 [r94] = r52, -8 000008000000 0A71 nop.f 0 00800000A000 0A72 br.sptk.few L$72 ;; // 000373 } 0A80 L$73: { .mmi 010803408D00 0A80 adds r52 = 4, r52 ;; // 000381 00B08B4F9980 0A81 ld4 r102 = [r52], -4 000008000000 0A82 nop.i 0 ;; } { .mii 01002E67F980 0A90 sub r102 = SUB_POINTER, r102 // r102 = r63, r102 010805E15780 0A91 adds r94 = 10, r94 000008000000 0A92 nop.i 0 ;; } { .mmi 00BC4DECDF80 0AA0 st2 [r94] = r102, -2 008043400D00 0AA1 ld2 r52 = [r52] // 000382 000008000000 0AA2 nop.i 0 ;; } { .mmi 00BC4DE69E00 0AB0 st2 [r94] = r52, -8 ;; 000008000000 0AB1 nop.m 0 000008000000 0AB2 nop.i 0 } 0AC0 L$72: // 000369 { .mmi 010805E09780 0AC0 adds r94 = 4, r94 ;; // 000387 00BC8DE7FF00 0AC1 st4 [r94] = SUB_POINTER, -4 // [r94] = r63, -4 000008000000 0AC2 nop.i 0 ;; } { .mfi 008C45E7C000 0AD0 st2 [r94] = SUB_LENGTH // [r94] = r62 // 000386 SSCAN Machine Code Listing 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 27 X00.06 XST$SCAN 19-MAR-2002 10:11:44 [LASTOVICA.XPORT.VMSGEN]SSCAN.BLI;1 000008000000 0AD1 nop.f 0 000008000000 0AD2 nop.i 0 } 0AE0 L$4: // 000396 { .mii 01C400052280 0AE0 cmp4.eq pr10, pr0 = PRIMARY_CODE, r0 // pr10, pr0 = r41, r0 00A062900340 0AE1 tbit.z pr13, pr12 = PRIMARY_CODE, 0 ;; // pr13, pr12 = r41, 0 01C26800030A 0AE2 (pr10) cmp.eq.or.andcm pr12, pr13 = r0, r0 ;; } { .mmi 010802601ACD 0AF0 (pr13) mov r107 = FAILURE_ACTION ;; // r107 = r38 010802501ACC 0AF1 (pr12) mov r107 = SUCCESS_ACTION // r107 = r37 000008000000 0AF2 nop.i 0 ;; } { .mfb 01C406B003C0 0B00 cmp4.eq pr15, pr0 = r0, $STR$ACTION // pr15, pr0 = r0, r107 000008000000 0B01 nop.f 0 00860001000F 0B02 (pr15) br.cond.dpnt.few L$76 } { .mii 01200000C640 0B10 mov r25 = 6 0000B6B01AC0 0B11 sxt4 r107 = $STR$ACTION // r107 = r107 0000B2201E00 0B12 sxt4 r120 = PATTERN // r120 = r34 } { .mii 012000009CC0 0B20 mov r115 = 4 00A43A001B00 0B21 extr.u r108 = OPTIONS, 0, 8 // r108 = r32, 0, 8 0000B2101DC0 0B22 sxt4 r119 = STRING ;; // r119 = r33 } { .mii 010806B11AC0 0B30 adds r107 = 8, r107 0000B6C01D80 0B31 sxt4 r118 = r108 0000B2801D40 0B32 sxt4 r117 = SECONDARY_CODE ;; // r117 = r40 } { .mib 00B0CEBF0040 0B40 ld8 r1 = [r107], -8 0000B2901D00 0B41 sxt4 r116 = PRIMARY_CODE // r116 = r41 004000000000 0B42 nop.b 0 ;; } { .mmi 0080C6B01AC0 0B50 ld8 r107 = [r107] ;; 000008000000 0B51 nop.m 0 000E001D6180 0B52 mov br6 = r107 } { .mfb 000008000000 0B60 nop.m 0 000008000000 0B61 nop.f 0 00210000C000 0B62 br.call.sptk.few br0 = br6 } { .mii 010800800A40 0B70 mov PRIMARY_CODE = r8 // r41 = r8 010807200040 0B71 mov r1 = r114 000008000000 0B72 nop.i 0 } 0B80 L$76: { .mii 000008000000 0B80 nop.m 0 SSCAN Machine Code Listing 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 28 X00.06 XST$SCAN 19-MAR-2002 10:11:44 [LASTOVICA.XPORT.VMSGEN]SSCAN.BLI;1 00A402038800 0B81 extr.u r32 = OPTIONS, 14, 1 ;; // r32 = r32, 14, 1 // 000402 00A0120000C0 0B82 tbit.z pr3, pr2 = r32, 0 } { .mfb 000008000000 0B90 nop.m 0 000008000000 0B91 nop.f 0 00860000C002 0B92 (pr2) br.cond.dpnt.few L$77 } { .mib 012000002640 0BA0 mov r25 = 1 // 000405 0000B2101CC0 0BA1 sxt4 r115 = STRING // r115 = r33 00A000001000 0BA2 br.call.sptk.many br0 = XST$FREE_TEMP ;; } { .mii 012000002640 0BB0 mov r25 = 1 // 000406 0000B2201CC0 0BB1 sxt4 r115 = PATTERN // r115 = r34 010807200040 0BB2 mov r1 = r114 // 000405 } { .mfb 000008000000 0BC0 nop.m 0 000008000000 0BC1 nop.f 0 004000000000 0BC2 nop.b 0 ;; } { .mfb 000008000000 0BD0 nop.m 0 000008000000 0BD1 nop.f 0 00A000001000 0BD2 br.call.sptk.many br0 = XST$FREE_TEMP // 000406 } { .mfi 010807200040 0BE0 mov r1 = r114 000008000000 0BE1 nop.f 0 000008000000 0BE2 nop.i 0 } 0BF0 L$77: // 000402 { .mii 000008000000 0BF0 nop.m 0 0016000E27C0 0BF1 mov pr = r113, -65474 // 000413 0000B2900200 0BF2 sxt4 r8 = PRIMARY_CODE ;; // r8 = r41 } { .mii 000008000000 0C00 nop.m 0 0001540E0000 0C01 mov.i rspfs = r112 010800C20300 0C02 adds r12 = 16, r12 ;; } { .mib 000008000000 0C10 nop.m 0 000E001DE000 0C11 mov br0 = r111 000108001100 0C12 br.ret.sptk.many br0 ;; } .endp XST$SCAN Routine Size: 3104 bytes, Routine Base: _XPO$CODE + 0000 .section .data .type XST$VALIDATE, @function .global XST$VALIDATE .section .data SSCAN Machine Code Listing 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 29 X00.06 XST$SCAN 19-MAR-2002 10:11:44 [LASTOVICA.XPORT.VMSGEN]SSCAN.BLI;1 .type XST$VALIDATE, @function .global XST$VALIDATE .section .data .type XST$VALIDATE, @function .global XST$VALIDATE .section .data .type OTS$INDEX, @function .global OTS$INDEX .section .data .type XST$COPY, @function .global XST$COPY .section .data .type XST$FREE_TEMP, @function .global XST$FREE_TEMP .section .data .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 68 11 270 ; DISK$NORMS_OWN:[LASTOVICA.XPORT.VMSGEN]XPOSYS.L32;14 ; 91 20 21 27 Source Listing 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 30 Source Listing 19-MAR-2002 10:11:44 [LASTOVICA.XPORT.VMSGEN]SSCAN.BLI;1 COMMAND LINE: BLISSSSCAN/LIST/DEBUG