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