1COMPILATION LISTING OF SEGMENT nqueens 2 Compiled by: Multics PL/I Compiler, Release 33f, of February 11, 2017 3 Compiled at: Installation and location 4 Compiled on: 08/24/21 1617.6 pst Tue 5 Options: optimize list 6 7 1 nqueens: proc; 8 2 dcl a(11) bin fixed(35); 9 3 dcl count bin fixed(35); 10 4 dcl abs builtin; 11 5 declare n binary fixed (35); /* Counter */ 12 6 count = 0; 13 7 call queen(11); 14 8 return; 15 9 16 10 place: procedure (ps) returns (fixed bin (35)); 17 11 dcl ps bin fixed(35); 18 12 dcl i bin fixed(35) init(0); 19 13 do i=1 to ps-1; 20 14 if a(i) = a(ps) then return(0); 21 15 if abs ( a(i) - a(ps) ) = (ps-i) then return(0); 22 16 end; 23 17 return (1); 24 18 end place; 25 19 26 20 queen: procedure (n); 27 21 dcl n bin fixed (35); 28 22 dcl k bin fixed (35); 29 23 k = 1; 30 24 a(k) = 0; 31 25 do while (k > 0); 32 26 a(k) = a(k) + 1; 33 27 do while ( ( a(k)<= n) & (place(k) =0) ); 34 28 a(k) = a(k) +1; 35 29 end; 36 30 if (a(k) <= n) then do; 37 31 if (k = n ) then do; 38 32 count = count + 1; 39 33 end; 40 34 else do; 41 35 k= k +1; 42 36 a(k) = 0; 43 37 end; /* of inside else */ 44 38 end; /* of first if */ 45 39 else do; 46 40 k = k -1; 47 41 end; 48 42 end; /* of external while loop */ 49 43 end queen; 50 44 51 45 end nqueens; 52 53 SOURCE FILES USED IN THIS COMPILATION. 54 55LINE NUMBER DATE MODIFIED NAME PATHNAME 56 0 08/14/21 1008.5 nqueens.pl1 >user_dir_dir>SysAdmin>Repair>nqueens.pl1 57 58 NAMES DECLARED IN THIS COMPILATION. 59 60IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES 61 (* indicates a set context) 62 63NAMES DECLARED BY DECLARE STATEMENT. 64a 000100 automatic fixed bin(35,0) array dcl 2 set ref 14 14 15 15 24* 26* 26 27 28* 28 65 30 36* 66abs builtin function dcl 4 ref 15 67count 000113 automatic fixed bin(35,0) dcl 3 set ref 6* 32* 32 68i 000122 automatic fixed bin(35,0) initial dcl 12 set ref 12* 13* 14 15 15* 69k 000134 automatic fixed bin(35,0) dcl 22 set ref 23* 24 25 26 26 27 27* 28 28 30 31 70 35* 35 36 40* 40 71n parameter fixed bin(35,0) dcl 21 ref 20 27 30 31 72ps parameter fixed bin(35,0) dcl 11 ref 10 13 14 15 15 73 74NAME DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. 75n automatic fixed bin(35,0) dcl 5 76 77NAMES DECLARED BY EXPLICIT CONTEXT. 78nqueens 000002 constant entry external dcl 1 79place 000015 constant entry internal dcl 10 ref 27 80queen 000076 constant entry internal dcl 20 ref 7 81 82THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. 83 84STORAGE REQUIREMENTS FOR THIS PROGRAM. 85 86 Object Text Link Symbol Defs Static 87Start 0 0 224 234 200 234 88Length 376 200 10 125 23 0 89 90BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME 91nqueens 97 external procedure is an external procedure. 92place internal procedure shares stack frame of external procedure nqueens. 93queen internal procedure shares stack frame of external procedure nqueens. 94 95STORAGE FOR AUTOMATIC VARIABLES. 96 97STACK FRAME LOC IDENTIFIER BLOCK NAME 98nqueens 000100 a nqueens 99 000113 count nqueens 100 000122 i place 101 000134 k queen 102 103THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. 104r_e_as r_le_a return_mac ext_entry 105 106NO EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. 107 108NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. 109 110 111 112CONSTANTS 113000166 aa 000004000000 114000167 aa 000000000000 115000170 aa 600000000041 116000171 aa 000134000000 117000172 aa 600000000041 118000173 aa 000140000000 119 120000174 aa 000002000000 121000175 aa 000000000000 122000176 aa 600000000041 123000177 aa 000135000000 124 125000000 aa 404000000043 126 127BEGIN PROCEDURE nqueens 128ENTRY TO nqueens STATEMENT 1 ON LINE 1 129nqueens: proc; 130 131000001 da 000017200000 132000002 aa 000160 6270 00 eax7 112 133000003 aa 7 00034 3521 20 epp2 pr7|28,* 134000004 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 135000005 aa 000000000000 136000006 aa 000000000000 137 STATEMENT 1 ON LINE 6 138 count = 0; 139 140000007 aa 6 00113 4501 00 stz pr6|75 count 141 STATEMENT 1 ON LINE 7 142 call queen(11); 143 144000010 aa 000013 2360 07 ldq 11,dl 145000011 aa 6 00135 7561 00 stq pr6|93 146000012 aa 000162 3520 04 epp2 114,ic 000174 = 000002000000 147000013 aa 000063 6700 04 tsp4 51,ic 000076 148 STATEMENT 1 ON LINE 8 149 return; 150 151000014 aa 0 00631 7101 00 tra pr0|409 return_mac 152 STATEMENT 1 ON LINE 45 153end nqueens; 154 155BEGIN PROCEDURE place 156ENTRY TO place STATEMENT 1 ON LINE 10 157 place: procedure (ps) returns (fixed bin (35)); 158 159000015 aa 6 00114 6501 00 spri4 pr6|76 160000016 aa 6 00116 2521 00 spri2 pr6|78 161 STATEMENT 1 ON LINE 12 162000017 aa 6 00122 4501 00 stz pr6|82 i 163 STATEMENT 1 ON LINE 13 164 do i=1 to ps-1; 165 166000020 aa 2 00002 3361 20 lcq pr2|2,* ps 167000021 aa 000044 7770 00 llr 36 168000022 aa 000044 7330 00 lrs 36 169000023 aa 000001 0330 07 adl 1,dl 170000024 aa 000000 5330 00 negl 0 171000025 aa 6 00124 7571 00 staq pr6|84 172000026 aa 000001 2360 07 ldq 1,dl 173000027 aa 6 00122 7561 00 stq pr6|82 i 174000030 aa 6 00122 2351 00 lda pr6|82 i 175000031 aa 000044 7330 00 lrs 36 176000032 aa 6 00124 1171 00 cmpaq pr6|84 177000033 aa 000037 6054 04 tpnz 31,ic 000072 178 STATEMENT 1 ON LINE 14 179 if a(i) = a(ps) then return(0); 180 181000034 aa 6 00122 7271 00 lxl7 pr6|82 i 182000035 aa 6 00077 2361 17 ldq pr6|63,7 a 183000036 aa 6 00116 3735 20 epp7 pr6|78,* 184000037 aa 7 00002 7261 20 lxl6 pr7|2,* ps 185000040 aa 6 00077 1161 16 cmpq pr6|63,6 a 186000041 aa 000003 6010 04 tnz 3,ic 000044 187000042 aa 7 00004 4501 20 stz pr7|4,* 188000043 aa 6 00114 6101 00 rtcd pr6|76 189 STATEMENT 1 ON LINE 15 190 if abs ( a(i) - a(ps) ) = (ps-i) then return(0); 191 192000044 aa 7 00002 3361 20 lcq pr7|2,* ps 193000045 aa 000044 7770 00 llr 36 194000046 aa 000044 7330 00 lrs 36 195000047 aa 6 00122 0331 00 adl pr6|82 i 196000050 aa 000000 5330 00 negl 0 197000051 aa 6 00136 7571 00 staq pr6|94 198000052 aa 6 00077 3361 17 lcq pr6|63,7 a 199000053 aa 000044 7770 00 llr 36 200000054 aa 000044 7330 00 lrs 36 201000055 aa 6 00077 0331 16 adl pr6|63,6 a 202000056 aa 000000 5330 00 negl 0 203000057 aa 000002 6050 04 tpl 2,ic 000061 204000060 aa 000000 5330 00 negl 0 205000061 aa 6 00136 1171 00 cmpaq pr6|94 206000062 aa 000003 6010 04 tnz 3,ic 000065 207000063 aa 7 00004 4501 20 stz pr7|4,* 208000064 aa 6 00114 6101 00 rtcd pr6|76 209 STATEMENT 1 ON LINE 16 210 end; 211 212000065 aa 6 00122 2351 00 lda pr6|82 i 213000066 aa 000044 7330 00 lrs 36 214000067 aa 000001 0330 07 adl 1,dl 215000070 aa 6 00122 7561 00 stq pr6|82 i 216000071 aa 777737 7100 04 tra -33,ic 000030 217 STATEMENT 1 ON LINE 17 218 return (1); 219 220000072 aa 000001 2360 07 ldq 1,dl 221000073 aa 6 00116 3735 20 epp7 pr6|78,* 222000074 aa 7 00004 7561 20 stq pr7|4,* 223000075 aa 6 00114 6101 00 rtcd pr6|76 224 STATEMENT 1 ON LINE 18 225 end place; 226 227 END PROCEDURE place 228BEGIN PROCEDURE queen 229ENTRY TO queen STATEMENT 1 ON LINE 20 230 queen: procedure (n); 231000076 aa 6 00126 6501 00 spri4 pr6|86 232000077 aa 6 00130 2521 00 spri2 pr6|88 233 STATEMENT 1 ON LINE 23 234 k = 1; 235 236000100 aa 000001 2360 07 ldq 1,dl 237000101 aa 6 00134 7561 00 stq pr6|92 k 238 STATEMENT 1 ON LINE 24 239 a(k) = 0; 240 241000102 aa 6 00077 4501 06 stz pr6|63,ql a 242 STATEMENT 1 ON LINE 25 243 do while (k > 0); 244 245000103 aa 000000 0110 03 nop 0,du 246000104 aa 6 00134 2361 00 ldq pr6|92 k 247000105 aa 000060 6044 04 tmoz 48,ic 000165 248 STATEMENT 1 ON LINE 26 249 a(k) = a(k) + 1; 250 251000106 aa 6 00077 2351 06 lda pr6|63,ql a 252000107 aa 000044 7330 00 lrs 36 253000110 aa 000001 0330 07 adl 1,dl 254000111 aa 6 00134 7271 00 lxl7 pr6|92 k 255000112 aa 6 00077 7561 17 stq pr6|63,7 a 256 STATEMENT 1 ON LINE 27 257 do while ( ( a(k)<= n) & (place(k) =0) ); 258 259000113 aa 000000 0110 03 nop 0,du 260000114 aa 000052 3520 04 epp2 42,ic 000166 = 000004000000 261000115 aa 777700 6700 04 tsp4 -64,ic 000015 262000116 aa 6 00140 2361 00 ldq pr6|96 263000117 aa 0 00512 7001 00 tsx0 pr0|330 r_e_as 264000120 aa 6 00140 7551 00 sta pr6|96 265000121 aa 6 00134 7271 00 lxl7 pr6|92 k 266000122 aa 6 00077 2361 17 ldq pr6|63,7 a 267000123 aa 6 00130 3735 20 epp7 pr6|88,* 268000124 aa 7 00002 1161 20 cmpq pr7|2,* n 269000125 aa 0 00520 7001 00 tsx0 pr0|336 r_le_a 270000126 aa 6 00140 3151 00 cana pr6|96 271000127 aa 000006 6000 04 tze 6,ic 000135 272 STATEMENT 1 ON LINE 28 273 a(k) = a(k) +1; 274 275000130 aa 6 00077 2351 17 lda pr6|63,7 a 276000131 aa 000044 7330 00 lrs 36 277000132 aa 000001 0330 07 adl 1,dl 278000133 aa 6 00077 7561 17 stq pr6|63,7 a 279 STATEMENT 1 ON LINE 29 280 end; 281 282000134 aa 777760 7100 04 tra -16,ic 000114 283 STATEMENT 1 ON LINE 30 284 if (a(k) <= n) then do; 285 286000135 aa 6 00077 2361 17 ldq pr6|63,7 a 287000136 aa 7 00002 1161 20 cmpq pr7|2,* n 288000137 aa 000017 6054 04 tpnz 15,ic 000156 289 STATEMENT 1 ON LINE 31 290 if (k = n ) then do; 291 292000140 aa 6 00134 2361 00 ldq pr6|92 k 293000141 aa 7 00002 1161 20 cmpq pr7|2,* n 294000142 aa 000006 6010 04 tnz 6,ic 000150 295 STATEMENT 1 ON LINE 32 296 count = count + 1; 297 298000143 aa 6 00113 2351 00 lda pr6|75 count 299000144 aa 000044 7330 00 lrs 36 300000145 aa 000001 0330 07 adl 1,dl 301000146 aa 6 00113 7561 00 stq pr6|75 count 302 STATEMENT 1 ON LINE 33 303 end; 304 305000147 aa 777735 7100 04 tra -35,ic 000104 306 STATEMENT 1 ON LINE 34 307 else do; 308 309 STATEMENT 1 ON LINE 35 310 k= k +1; 311 312000150 aa 000044 7770 00 llr 36 313000151 aa 000044 7330 00 lrs 36 314000152 aa 000001 0330 07 adl 1,dl 315000153 aa 6 00134 7561 00 stq pr6|92 k 316 STATEMENT 1 ON LINE 36 317 a(k) = 0; 318 319000154 aa 6 00077 4501 06 stz pr6|63,ql a 320 STATEMENT 1 ON LINE 37 321 end; 322 323 STATEMENT 1 ON LINE 38 324 end; 325 326000155 aa 777727 7100 04 tra -41,ic 000104 327 STATEMENT 1 ON LINE 39 328 else do; 329 330 STATEMENT 1 ON LINE 40 331 k = k -1; 332 333000156 aa 6 00134 3361 00 lcq pr6|92 k 334000157 aa 000044 7770 00 llr 36 335000160 aa 000044 7330 00 lrs 36 336000161 aa 000001 0330 07 adl 1,dl 337000162 aa 000000 5330 00 negl 0 338000163 aa 6 00134 7561 00 stq pr6|92 k 339 STATEMENT 1 ON LINE 41 340 end; 341 342 STATEMENT 1 ON LINE 42 343 end; 344 345000164 aa 777720 7100 04 tra -48,ic 000104 346 STATEMENT 1 ON LINE 43 347 end queen; 348 349000165 aa 6 00126 6101 00 rtcd pr6|86 350 END PROCEDURE queen 351 END PROCEDURE nqueens 352