TAL Programmer's Guide
INNERLIST Listing
Compiler Listing
15–8 096254 Tandem Computers Incorporated
Figure 15-5. INNERLIST Listing
 ?INNERLIST
 1 000000 0 0 INT PROC compute_hash (name, table_len);
 2 000000 1 0 INT .name;
 3 000000 1 0 INT(32) table_len;
 4 000000 1 0 BEGIN
 5 000000 1 1 INT int_table_len := $INT (table_len);
 6 000000 1 1 INT hash_val := 0;
 7 000000 1 1 USE name_index;
000000 1 LDD L-004
000001 0 STAR 0
000002 1 LDI +000
000003 7 PUSH 711
 8 000004 1 1 USE name_limit;
 9 000004 1 1
 10 000004 1 1 name_limit := name.<8:14>;
000004 0 LOAD L-005,I
000005 0 LRS 01
000006 0 ANRI +177
000007 7 STAR 6
 11 000010 1 1 FOR name_index := 0 TO name_limit DO
000010 0 LDI -001
000011 0 STAR 7
Optimizer replacing the last 2 instructions.with next 1
000010 7 LDXI -001,7
000011 0 LDRA 6
000012 0 BUN +000
 12 000013 1 1 hash_val := ((hash_val '<<' 3) LOR
 13 hash_val.<0:2>) XOR name[name_index];
000013 1 LOAD L+002
000014 1 LLS 03
000015 2 LOAD L+002
000016 2 LRS 15
000017 1 LOR
000020 2 LOAD L-005,I,7
000021 1 XOR
000022 0 STOR L+002
000023 7 BOX -011,7
 14 000024 1 1 DROP name_index;
 15 000024 1 1 DROP name_limit;
 16 000024 1 1 RETURN $UDBL ($INT (hash_val '*' 23971)) '\'
 17 int_table_len;
000024 0 LDI +000
000025 1 LOAD L+002
000026 2 LDLI +135
000027 2 ORRI 243
000030 2 LMPY
000031 1 STAR 1
000032 2 LOAD L+001
000033 1 LDIV
000034 0 STRP 0
000035 0 EXIT 006
 18 000036 1 1 END; !compute_hash










