         Edinburgh IMP77 Compiler - Version 8.4-2024.12.18

     1  ! File of externals followed by a main program.
     2  
     3  %recordformat rf ( %integer i, %real r, %integer rf)  ;! Are record format vars in a sub-scope?  Or is it just that formats are in a different name space?
     4  
     5  ! owns and externals are simpler declarations
     6  %externalinteger xi1
     7  %externalintegername xin1
     8  %externalreal xr1
     9  %externalinteger xi2,xi3
    10  %externalreal xcr1 = 3.1415
    11  %externalrealarray xra1(0:9)
    12  %externalrealarrayname xran1
    13  %externallongreal xclr1 = 3.1415
    14  %externallongrealarray xlra1(0:9)
    15  %externallongrealarrayname xlran1
    16  %externalintegernamearray xina1(0:9)
    17  %externalintegernamearrayname xinan1
    18  %externalstring(82) xs1
    19  %externalstring(82)%name xsn1
    20  %externalstring(82)%array xsa1(4:7)
    21  %externalstring(82)%arrayname xsan1
    22  %externalstring(82)%namearray xsna1(4:7)
    23  %externalstring(82)%namearrayname xsnan1
    24  %externalrecord (rf) xrec1
    25  %externalrecord (rf) %name xrecn1
    26  %externalrecord (rf) %array xreca1(2:3)
    27  %externalrecord (rf) %array %name xrecan1
    28  %externalrecord (rf) %name %array xrecna1(2:3)
    29  %externalrecord (rf) %name %array %name xrecnan1
    30  
    31  %externalintegerfn ifn1
 0000                      L1000  EQU $
 0000 C8 00 00 01                           ENTER 0000,1
    32    %result = xi1
 0004 A1 00 00 00 00                        MOV %EAX,[DATA+0000]
 0009 C9                                    LEAVE
 000A C3                                    RET
    33  %end
    34  %externalintegermap imap1
    35    %result == xi1
 000B                      L1001  EQU $
 000B C8 00 00 01                           ENTER 0000,1
 000F B8 00 00 00 00                        MOV %EAX,DATA+#0
 0014 C9                                    LEAVE
 0015 C3                                    RET
    36  %end
    37  %externalroutine rt1
    38    %integer i1
 0016                      L1002  EQU $
 0016 C8 00 00 01                           ENTER 0000,1
    39    %routine rt1
 001A EB 00                                 JMP L1003
 001C                      L1004  EQU $
 001C C8 00 00 02                           ENTER 0000,2
    40    %end
 0020 C9                                    LEAVE
 0021 C3                                    RET
 0022                      L1003  EQU $
    41  %end
?RT1 unused
?I1 unused
    42  %externalpredicate test1
    43    %true
 0022 C9                                    LEAVE
 0023 C3                                    RET
 0024                      L1005  EQU $
 0024 C8 00 00 01                           ENTER 0000,1
 0028 B8 FF FF FF FF                        MOV %EAX,#-1
 002D C9                                    LEAVE
 002E C3                                    RET
    44  %end
    45    
    46  %begin
 002F C8 00 00 01                           ENTER 0000,1
    47    %integermapspec imap1
    48    %integer i1
    49    %integername in1
    50    %shortinteger si1
    51    %shortintegername sin1
    52    %byteinteger bi1
    53    %byteintegername bin1
    54    %real r1
    55    %realslong
    56    %real qr1
    57    %realsnormal
    58    %constreal cr1 = 3.1415
    59    %longreal lr1
    60    %constlongreal clr1 = 3.1415
    61    %integerfn ifn1
 0033 EB 00                                 JMP L1008
 0035                      L1009  EQU $
 0035 C8 00 00 02                           ENTER 0000,2
    62      %result = i1
 0039 8B 75 FC                              MOV %ESI,[%EBP-4]
 003C 8B 46 F8                              MOV %EAX,[%ESI-8]
 003F C9                                    LEAVE
 0040 C3                                    RET
    63    %end
 0041                      L1008  EQU $
    64    %integermap imap1
    65      %result == i1
 0041                      L1007  EQU $
 0041 C8 00 00 02                           ENTER 0000,2
 0045 8B 7D FC                              MOV %EDI,[%EBP-4]
 0048 8D 47 F8                              LEA %EAX,[%EDI-8]
 004B C9                                    LEAVE
 004C C3                                    RET
    66    %end
 004D                      L1008  EQU $
    67    %routine rt1
    68      %integer i1
 004D                      L1010  EQU $
 004D C8 00 00 02                           ENTER 0000,2
    69      %integer local1
    70      %routine rt1
 0051 EB 00                                 JMP L1011
 0053                      L1012  EQU $
 0053 C8 00 00 03                           ENTER 0000,3
    71        %integer local1
    72        local1 = 1
 0057 C7 45 F0 01 00 00 00                  MOV DWORD PTR [%EBP-16],#1
    73        i1 = 1
 005E 8B 5D F8                              MOV %EBX,[%EBP-8]
 0061 C7 43 F4 01 00 00 00                  MOV DWORD PTR [%EBX-12],#1
    74      %end
 0068 C9                                    LEAVE
 0069 C3                                    RET
 006A                      L1011  EQU $
    75      local1 = 2
    76      i1 = 2
 006A C7 45 F0 02 00 00 00                  MOV DWORD PTR [%EBP-16],#2
 0071 C7 45 F4 02 00 00 00                  MOV DWORD PTR [%EBP-12],#2
    77    %end
 0078 C9                                    LEAVE
 0079 C3                                    RET
 007A                      L1008  EQU $
?RT1 unused
    78    %predicate test1
    79      %false
 007A                      L1013  EQU $
 007A C8 00 00 02                           ENTER 0000,2
 007E B8 00 00 00 00                        MOV %EAX,#0
 0083 C9                                    LEAVE
 0084 C3                                    RET
    80    %end
 0085                      L1008  EQU $
    81    %realarray ra1, ra1b(0:9), ra2, ra2b(10:19)
    82    %realarrayname ran1, ran2
 0085 C7 45 C0 01 00 00 00                  MOV DWORD PTR [%EBP-64],#1
 008C C7 45 C4 00 00 00 00                  MOV DWORD PTR [%EBP-60],#0
 0093 C7 45 C8 09 00 00 00                  MOV DWORD PTR [%EBP-56],#9
 009A C7 45 CC 85 00 00 00                  MOV DWORD PTR [%EBP-52],#133
 00A1 8D 45 C0                              LEA %EAX,[%EBP-64]
 00A4 50                                    PUSH %EAX
 00A5 E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 00A8 83 C4 04                              ADD %ESP,#4
 00AB 8D 4D C0                              LEA %ECX,[%EBP-64]
 00AE 89 E3                                 MOV %EBX,%ESP
 00B0 29 D3                                 SUB %EBX,%EDX
 00B2 89 5D B8                              MOV [%EBP-72],%EBX
 00B5 89 4D BC                              MOV [%EBP-68],%ECX
 00B8 01 C3                                 ADD %EBX,%EAX
 00BA 29 D3                                 SUB %EBX,%EDX
 00BC 89 5D B0                              MOV [%EBP-80],%EBX
 00BF 89 4D B4                              MOV [%EBP-76],%ECX
 00C2 01 C3                                 ADD %EBX,%EAX
 00C4 89 DC                                 MOV %ESP,%EBX
 00C6 C7 45 A0 01 00 00 00                  MOV DWORD PTR [%EBP-96],#1
 00CD C7 45 A4 0A 00 00 00                  MOV DWORD PTR [%EBP-92],#10
 00D4 C7 45 A8 13 00 00 00                  MOV DWORD PTR [%EBP-88],#19
 00DB C7 45 AC 85 00 00 00                  MOV DWORD PTR [%EBP-84],#133
 00E2 8D 45 A0                              LEA %EAX,[%EBP-96]
 00E5 50                                    PUSH %EAX
 00E6 E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 00E9 83 C4 04                              ADD %ESP,#4
 00EC 8D 4D A0                              LEA %ECX,[%EBP-96]
 00EF 89 E3                                 MOV %EBX,%ESP
 00F1 29 D3                                 SUB %EBX,%EDX
 00F3 89 5D 98                              MOV [%EBP-104],%EBX
 00F6 89 4D 9C                              MOV [%EBP-100],%ECX
 00F9 01 C3                                 ADD %EBX,%EAX
 00FB 29 D3                                 SUB %EBX,%EDX
 00FD 89 5D 90                              MOV [%EBP-112],%EBX
 0100 89 4D 94                              MOV [%EBP-108],%ECX
 0103 01 C3                                 ADD %EBX,%EAX
 0105 89 DC                                 MOV %ESP,%EBX
    83    %longrealarray lra1, lra1b(0:9), lra2, lra2b(10:19)
 0107 C7 85 70 FF FF FF 01 00 00 00         MOV DWORD PTR [%EBP-144],#1
 0111 C7 85 74 FF FF FF 00 00 00 00         MOV DWORD PTR [%EBP-140],#0
 011B C7 85 78 FF FF FF 09 00 00 00         MOV DWORD PTR [%EBP-136],#9
 0125 C7 85 7C FF FF FF 11 01 00 00         MOV DWORD PTR [%EBP-132],#273
 012F 8D 85 70 FF FF FF                     LEA %EAX,[%EBP-144]
 0135 50                                    PUSH %EAX
 0136 E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 0139 83 C4 04                              ADD %ESP,#4
 013C 8D 8D 70 FF FF FF                     LEA %ECX,[%EBP-144]
 0142 89 E3                                 MOV %EBX,%ESP
 0144 29 D3                                 SUB %EBX,%EDX
 0146 89 9D 68 FF FF FF                     MOV [%EBP-152],%EBX
 014C 89 8D 6C FF FF FF                     MOV [%EBP-148],%ECX
 0152 01 C3                                 ADD %EBX,%EAX
 0154 29 D3                                 SUB %EBX,%EDX
 0156 89 9D 60 FF FF FF                     MOV [%EBP-160],%EBX
 015C 89 8D 64 FF FF FF                     MOV [%EBP-156],%ECX
 0162 01 C3                                 ADD %EBX,%EAX
 0164 89 DC                                 MOV %ESP,%EBX
 0166 C7 85 50 FF FF FF 01 00 00 00         MOV DWORD PTR [%EBP-176],#1
 0170 C7 85 54 FF FF FF 0A 00 00 00         MOV DWORD PTR [%EBP-172],#10
 017A C7 85 58 FF FF FF 13 00 00 00         MOV DWORD PTR [%EBP-168],#19
 0184 C7 85 5C FF FF FF 11 01 00 00         MOV DWORD PTR [%EBP-164],#273
 018E 8D 85 50 FF FF FF                     LEA %EAX,[%EBP-176]
 0194 50                                    PUSH %EAX
 0195 E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 0198 83 C4 04                              ADD %ESP,#4
 019B 8D 8D 50 FF FF FF                     LEA %ECX,[%EBP-176]
 01A1 89 E3                                 MOV %EBX,%ESP
 01A3 29 D3                                 SUB %EBX,%EDX
 01A5 89 9D 48 FF FF FF                     MOV [%EBP-184],%EBX
 01AB 89 8D 4C FF FF FF                     MOV [%EBP-180],%ECX
 01B1 01 C3                                 ADD %EBX,%EAX
 01B3 29 D3                                 SUB %EBX,%EDX
 01B5 89 9D 40 FF FF FF                     MOV [%EBP-192],%EBX
 01BB 89 8D 44 FF FF FF                     MOV [%EBP-188],%ECX
 01C1 01 C3                                 ADD %EBX,%EAX
 01C3 89 DC                                 MOV %ESP,%EBX
    84    %longrealarrayname lran1, lran2
    85    %integernamearray ina1, ina1b(0:9), ina2, ina2b(10:19)
 01C5 C7 85 20 FF FF FF 01 00 00 00         MOV DWORD PTR [%EBP-224],#1
 01CF C7 85 24 FF FF FF 00 00 00 00         MOV DWORD PTR [%EBP-220],#0
 01D9 C7 85 28 FF FF FF 09 00 00 00         MOV DWORD PTR [%EBP-216],#9
 01E3 C7 85 2C FF FF FF 83 00 00 00         MOV DWORD PTR [%EBP-212],#131
 01ED 8D 85 20 FF FF FF                     LEA %EAX,[%EBP-224]
 01F3 50                                    PUSH %EAX
 01F4 E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 01F7 83 C4 04                              ADD %ESP,#4
 01FA 8D 8D 20 FF FF FF                     LEA %ECX,[%EBP-224]
 0200 89 E3                                 MOV %EBX,%ESP
 0202 29 D3                                 SUB %EBX,%EDX
 0204 89 9D 18 FF FF FF                     MOV [%EBP-232],%EBX
 020A 89 8D 1C FF FF FF                     MOV [%EBP-228],%ECX
 0210 01 C3                                 ADD %EBX,%EAX
 0212 29 D3                                 SUB %EBX,%EDX
 0214 89 9D 10 FF FF FF                     MOV [%EBP-240],%EBX
 021A 89 8D 14 FF FF FF                     MOV [%EBP-236],%ECX
 0220 01 C3                                 ADD %EBX,%EAX
 0222 89 DC                                 MOV %ESP,%EBX
 0224 C7 85 00 FF FF FF 01 00 00 00         MOV DWORD PTR [%EBP-256],#1
 022E C7 85 04 FF FF FF 0A 00 00 00         MOV DWORD PTR [%EBP-252],#10
 0238 C7 85 08 FF FF FF 13 00 00 00         MOV DWORD PTR [%EBP-248],#19
 0242 C7 85 0C FF FF FF 83 00 00 00         MOV DWORD PTR [%EBP-244],#131
 024C 8D 85 00 FF FF FF                     LEA %EAX,[%EBP-256]
 0252 50                                    PUSH %EAX
 0253 E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 0256 83 C4 04                              ADD %ESP,#4
 0259 8D 8D 00 FF FF FF                     LEA %ECX,[%EBP-256]
 025F 89 E3                                 MOV %EBX,%ESP
 0261 29 D3                                 SUB %EBX,%EDX
 0263 89 9D F8 FE FF FF                     MOV [%EBP-264],%EBX
 0269 89 8D FC FE FF FF                     MOV [%EBP-260],%ECX
 026F 01 C3                                 ADD %EBX,%EAX
 0271 29 D3                                 SUB %EBX,%EDX
 0273 89 9D F0 FE FF FF                     MOV [%EBP-272],%EBX
 0279 89 8D F4 FE FF FF                     MOV [%EBP-268],%ECX
 027F 01 C3                                 ADD %EBX,%EAX
 0281 89 DC                                 MOV %ESP,%EBX
    86    %integernamearrayname inan1, inan2
    87    %string(82) s1, s2
    88    %string(82)%name sn1, sn2
    89    %string(82)%array sa1, sa1b(4:7), sa2, sa2b(9:10), sa3(1:100)
 0283 C7 85 20 FE FF FF 01 00 00 00         MOV DWORD PTR [%EBP-480],#1
 028D C7 85 24 FE FF FF 04 00 00 00         MOV DWORD PTR [%EBP-476],#4
 0297 C7 85 28 FE FF FF 07 00 00 00         MOV DWORD PTR [%EBP-472],#7
 02A1 C7 85 2C FE FF FF 67 0A 00 00         MOV DWORD PTR [%EBP-468],#2663
 02AB 8D 85 20 FE FF FF                     LEA %EAX,[%EBP-480]
 02B1 50                                    PUSH %EAX
 02B2 E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 02B5 83 C4 04                              ADD %ESP,#4
 02B8 8D 8D 20 FE FF FF                     LEA %ECX,[%EBP-480]
 02BE 89 E3                                 MOV %EBX,%ESP
 02C0 29 D3                                 SUB %EBX,%EDX
 02C2 89 9D 18 FE FF FF                     MOV [%EBP-488],%EBX
 02C8 89 8D 1C FE FF FF                     MOV [%EBP-484],%ECX
 02CE 01 C3                                 ADD %EBX,%EAX
 02D0 29 D3                                 SUB %EBX,%EDX
 02D2 89 9D 10 FE FF FF                     MOV [%EBP-496],%EBX
 02D8 89 8D 14 FE FF FF                     MOV [%EBP-492],%ECX
 02DE 01 C3                                 ADD %EBX,%EAX
 02E0 81 E3 FC FF FF FF                     AND %EBX,#-4
 02E6 89 DC                                 MOV %ESP,%EBX
 02E8 C7 85 00 FE FF FF 01 00 00 00         MOV DWORD PTR [%EBP-512],#1
 02F2 C7 85 04 FE FF FF 09 00 00 00         MOV DWORD PTR [%EBP-508],#9
 02FC C7 85 08 FE FF FF 0A 00 00 00         MOV DWORD PTR [%EBP-504],#10
 0306 C7 85 0C FE FF FF 67 0A 00 00         MOV DWORD PTR [%EBP-500],#2663
 0310 8D 85 00 FE FF FF                     LEA %EAX,[%EBP-512]
 0316 50                                    PUSH %EAX
 0317 E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 031A 83 C4 04                              ADD %ESP,#4
 031D 8D 8D 00 FE FF FF                     LEA %ECX,[%EBP-512]
 0323 89 E3                                 MOV %EBX,%ESP
 0325 29 D3                                 SUB %EBX,%EDX
 0327 89 9D F8 FD FF FF                     MOV [%EBP-520],%EBX
 032D 89 8D FC FD FF FF                     MOV [%EBP-516],%ECX
 0333 01 C3                                 ADD %EBX,%EAX
 0335 29 D3                                 SUB %EBX,%EDX
 0337 89 9D F0 FD FF FF                     MOV [%EBP-528],%EBX
 033D 89 8D F4 FD FF FF                     MOV [%EBP-524],%ECX
 0343 01 C3                                 ADD %EBX,%EAX
 0345 81 E3 FC FF FF FF                     AND %EBX,#-4
 034B 89 DC                                 MOV %ESP,%EBX
 034D C7 85 E0 FD FF FF 01 00 00 00         MOV DWORD PTR [%EBP-544],#1
 0357 C7 85 E4 FD FF FF 01 00 00 00         MOV DWORD PTR [%EBP-540],#1
 0361 C7 85 E8 FD FF FF 64 00 00 00         MOV DWORD PTR [%EBP-536],#100
 036B C7 85 EC FD FF FF 67 0A 00 00         MOV DWORD PTR [%EBP-532],#2663
 0375 8D 85 E0 FD FF FF                     LEA %EAX,[%EBP-544]
 037B 50                                    PUSH %EAX
 037C E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 037F 83 C4 04                              ADD %ESP,#4
 0382 8D 8D E0 FD FF FF                     LEA %ECX,[%EBP-544]
 0388 89 E3                                 MOV %EBX,%ESP
 038A 29 D3                                 SUB %EBX,%EDX
 038C 89 9D D8 FD FF FF                     MOV [%EBP-552],%EBX
 0392 89 8D DC FD FF FF                     MOV [%EBP-548],%ECX
 0398 01 C3                                 ADD %EBX,%EAX
 039A 81 E3 FC FF FF FF                     AND %EBX,#-4
 03A0 89 DC                                 MOV %ESP,%EBX
    90    %string(82)%arrayname san1, san2, san3
    91    %string(82)%namearray sna1, sna2(4:7), sna3(1:2)
 03A2 C7 85 B0 FD FF FF 01 00 00 00         MOV DWORD PTR [%EBP-592],#1
 03AC C7 85 B4 FD FF FF 04 00 00 00         MOV DWORD PTR [%EBP-588],#4
 03B6 C7 85 B8 FD FF FF 07 00 00 00         MOV DWORD PTR [%EBP-584],#7
 03C0 C7 85 BC FD FF FF 87 00 00 00         MOV DWORD PTR [%EBP-580],#135
 03CA 8D 85 B0 FD FF FF                     LEA %EAX,[%EBP-592]
 03D0 50                                    PUSH %EAX
 03D1 E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 03D4 83 C4 04                              ADD %ESP,#4
 03D7 8D 8D B0 FD FF FF                     LEA %ECX,[%EBP-592]
 03DD 89 E3                                 MOV %EBX,%ESP
 03DF 29 D3                                 SUB %EBX,%EDX
 03E1 89 9D A8 FD FF FF                     MOV [%EBP-600],%EBX
 03E7 89 8D AC FD FF FF                     MOV [%EBP-596],%ECX
 03ED 01 C3                                 ADD %EBX,%EAX
 03EF 29 D3                                 SUB %EBX,%EDX
 03F1 89 9D A0 FD FF FF                     MOV [%EBP-608],%EBX
 03F7 89 8D A4 FD FF FF                     MOV [%EBP-604],%ECX
 03FD 01 C3                                 ADD %EBX,%EAX
 03FF 89 DC                                 MOV %ESP,%EBX
 0401 C7 85 90 FD FF FF 01 00 00 00         MOV DWORD PTR [%EBP-624],#1
 040B C7 85 94 FD FF FF 01 00 00 00         MOV DWORD PTR [%EBP-620],#1
 0415 C7 85 98 FD FF FF 02 00 00 00         MOV DWORD PTR [%EBP-616],#2
 041F C7 85 9C FD FF FF 87 00 00 00         MOV DWORD PTR [%EBP-612],#135
 0429 8D 85 90 FD FF FF                     LEA %EAX,[%EBP-624]
 042F 50                                    PUSH %EAX
 0430 E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 0433 83 C4 04                              ADD %ESP,#4
 0436 8D 8D 90 FD FF FF                     LEA %ECX,[%EBP-624]
 043C 89 E3                                 MOV %EBX,%ESP
 043E 29 D3                                 SUB %EBX,%EDX
 0440 89 9D 88 FD FF FF                     MOV [%EBP-632],%EBX
 0446 89 8D 8C FD FF FF                     MOV [%EBP-628],%ECX
 044C 01 C3                                 ADD %EBX,%EAX
 044E 89 DC                                 MOV %ESP,%EBX
    92    %string(82)%namearrayname snan1, snan2
    93    %record (rf) rec1, rec2
    94    %record (rf) %name recn1, recn2
    95    %record (rf) %array reca1,reca2(2:3),reca3(4:5)
 0450 C7 85 48 FD FF FF 01 00 00 00         MOV DWORD PTR [%EBP-696],#1
 045A C7 85 4C FD FF FF 02 00 00 00         MOV DWORD PTR [%EBP-692],#2
 0464 C7 85 50 FD FF FF 03 00 00 00         MOV DWORD PTR [%EBP-688],#3
 046E C7 85 54 FD FF FF 89 01 00 00         MOV DWORD PTR [%EBP-684],#393
 0478 8D 85 48 FD FF FF                     LEA %EAX,[%EBP-696]
 047E 50                                    PUSH %EAX
 047F E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 0482 83 C4 04                              ADD %ESP,#4
 0485 8D 8D 48 FD FF FF                     LEA %ECX,[%EBP-696]
 048B 89 E3                                 MOV %EBX,%ESP
 048D 29 D3                                 SUB %EBX,%EDX
 048F 89 9D 40 FD FF FF                     MOV [%EBP-704],%EBX
 0495 89 8D 44 FD FF FF                     MOV [%EBP-700],%ECX
 049B 01 C3                                 ADD %EBX,%EAX
 049D 29 D3                                 SUB %EBX,%EDX
 049F 89 9D 38 FD FF FF                     MOV [%EBP-712],%EBX
 04A5 89 8D 3C FD FF FF                     MOV [%EBP-708],%ECX
 04AB 01 C3                                 ADD %EBX,%EAX
 04AD 89 DC                                 MOV %ESP,%EBX
 04AF C7 85 28 FD FF FF 01 00 00 00         MOV DWORD PTR [%EBP-728],#1
 04B9 C7 85 2C FD FF FF 04 00 00 00         MOV DWORD PTR [%EBP-724],#4
 04C3 C7 85 30 FD FF FF 05 00 00 00         MOV DWORD PTR [%EBP-720],#5
 04CD C7 85 34 FD FF FF 89 01 00 00         MOV DWORD PTR [%EBP-716],#393
 04D7 8D 85 28 FD FF FF                     LEA %EAX,[%EBP-728]
 04DD 50                                    PUSH %EAX
 04DE E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 04E1 83 C4 04                              ADD %ESP,#4
 04E4 8D 8D 28 FD FF FF                     LEA %ECX,[%EBP-728]
 04EA 89 E3                                 MOV %EBX,%ESP
 04EC 29 D3                                 SUB %EBX,%EDX
 04EE 89 9D 20 FD FF FF                     MOV [%EBP-736],%EBX
 04F4 89 8D 24 FD FF FF                     MOV [%EBP-732],%ECX
 04FA 01 C3                                 ADD %EBX,%EAX
 04FC 89 DC                                 MOV %ESP,%EBX
    96    %record (rf) %array %name recan1,recan2
    97    %record (rf) %name %array recna1,recna2(2:3),recna3(1:2)
 04FE C7 85 00 FD FF FF 01 00 00 00         MOV DWORD PTR [%EBP-768],#1
 0508 C7 85 04 FD FF FF 02 00 00 00         MOV DWORD PTR [%EBP-764],#2
 0512 C7 85 08 FD FF FF 03 00 00 00         MOV DWORD PTR [%EBP-760],#3
 051C C7 85 0C FD FF FF 89 00 00 00         MOV DWORD PTR [%EBP-756],#137
 0526 8D 85 00 FD FF FF                     LEA %EAX,[%EBP-768]
 052C 50                                    PUSH %EAX
 052D E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 0530 83 C4 04                              ADD %ESP,#4
 0533 8D 8D 00 FD FF FF                     LEA %ECX,[%EBP-768]
 0539 89 E3                                 MOV %EBX,%ESP
 053B 29 D3                                 SUB %EBX,%EDX
 053D 89 9D F8 FC FF FF                     MOV [%EBP-776],%EBX
 0543 89 8D FC FC FF FF                     MOV [%EBP-772],%ECX
 0549 01 C3                                 ADD %EBX,%EAX
 054B 29 D3                                 SUB %EBX,%EDX
 054D 89 9D F0 FC FF FF                     MOV [%EBP-784],%EBX
 0553 89 8D F4 FC FF FF                     MOV [%EBP-780],%ECX
 0559 01 C3                                 ADD %EBX,%EAX
 055B 89 DC                                 MOV %ESP,%EBX
 055D C7 85 E0 FC FF FF 01 00 00 00         MOV DWORD PTR [%EBP-800],#1
 0567 C7 85 E4 FC FF FF 01 00 00 00         MOV DWORD PTR [%EBP-796],#1
 0571 C7 85 E8 FC FF FF 02 00 00 00         MOV DWORD PTR [%EBP-792],#2
 057B C7 85 EC FC FF FF 89 00 00 00         MOV DWORD PTR [%EBP-788],#137
 0585 8D 85 E0 FC FF FF                     LEA %EAX,[%EBP-800]
 058B 50                                    PUSH %EAX
 058C E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 058F 83 C4 04                              ADD %ESP,#4
 0592 8D 8D E0 FC FF FF                     LEA %ECX,[%EBP-800]
 0598 89 E3                                 MOV %EBX,%ESP
 059A 29 D3                                 SUB %EBX,%EDX
 059C 89 9D D8 FC FF FF                     MOV [%EBP-808],%EBX
 05A2 89 8D DC FC FF FF                     MOV [%EBP-804],%ECX
 05A8 01 C3                                 ADD %EBX,%EAX
 05AA 89 DC                                 MOV %ESP,%EBX
    98    %record (rf) %name %array %name recnan1,recnan2
    99  
   100    ! owns and externals are simpler declarations
   101    %owninteger oi1
   102    %ownintegername oin1
   103    %ownreal or1
   104    %ownlongreal olr1
   105    %owninteger oi2,oi3
   106    %ownreal ocr1 = 3.1415
   107    %ownlongreal oclr1 = 3.1415
   108    %ownrealarray ora1(0:9)
   109    %ownrealarrayname oran1
   110    %ownlongrealarray olra1(0:9)
   111    %ownlongrealarrayname olran1
   112    %ownintegernamearray oina1(0:9)
   113    %ownintegernamearrayname oinan1
   114    %ownstring(82) os1
   115    %ownstring(82)%name osn1
   116    %ownstring(82)%array osa1(4:7)
   117    %ownstring(82)%arrayname osan1
   118    %ownstring(82)%namearray osna1(4:7)
   119    %ownstring(82)%namearrayname osnan1
   120    %ownrecord (rf) orec1
   121    %ownrecord (rf) %name orecn1
   122    %ownrecord (rf) %array oreca1(2:3)
   123    %ownrecord (rf) %array %name orecan1
   124    %ownrecord (rf) %name %array orecna1(2:3)
   125    %ownrecord (rf) %name %array %name orecnan1
   126  
   127    %switch sw1(0:255), sw2('a':'z')
   128  
   129    %integer %array ia3, ia4(1:10), ia5(2:11,0:1,0:2)
 05AC C7 85 B8 FC FF FF 01 00 00 00         MOV DWORD PTR [%EBP-840],#1
 05B6 C7 85 BC FC FF FF 01 00 00 00         MOV DWORD PTR [%EBP-836],#1
 05C0 C7 85 C0 FC FF FF 0A 00 00 00         MOV DWORD PTR [%EBP-832],#10
 05CA C7 85 C4 FC FF FF 83 00 00 00         MOV DWORD PTR [%EBP-828],#131
 05D4 8D 85 B8 FC FF FF                     LEA %EAX,[%EBP-840]
 05DA 50                                    PUSH %EAX
 05DB E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 05DE 83 C4 04                              ADD %ESP,#4
 05E1 8D 8D B8 FC FF FF                     LEA %ECX,[%EBP-840]
 05E7 89 E3                                 MOV %EBX,%ESP
 05E9 29 D3                                 SUB %EBX,%EDX
 05EB 89 9D B0 FC FF FF                     MOV [%EBP-848],%EBX
 05F1 89 8D B4 FC FF FF                     MOV [%EBP-844],%ECX
 05F7 01 C3                                 ADD %EBX,%EAX
 05F9 29 D3                                 SUB %EBX,%EDX
 05FB 89 9D A8 FC FF FF                     MOV [%EBP-856],%EBX
 0601 89 8D AC FC FF FF                     MOV [%EBP-852],%ECX
 0607 01 C3                                 ADD %EBX,%EAX
 0609 89 DC                                 MOV %ESP,%EBX
 060B C7 85 88 FC FF FF 03 00 00 00         MOV DWORD PTR [%EBP-888],#3
 0615 C7 85 8C FC FF FF 02 00 00 00         MOV DWORD PTR [%EBP-884],#2
 061F C7 85 90 FC FF FF 0B 00 00 00         MOV DWORD PTR [%EBP-880],#11
 0629 C7 85 94 FC FF FF 00 00 00 00         MOV DWORD PTR [%EBP-876],#0
 0633 C7 85 98 FC FF FF 01 00 00 00         MOV DWORD PTR [%EBP-872],#1
 063D C7 85 9C FC FF FF 00 00 00 00         MOV DWORD PTR [%EBP-868],#0
 0647 C7 85 A0 FC FF FF 02 00 00 00         MOV DWORD PTR [%EBP-864],#2
 0651 C7 85 A4 FC FF FF 83 00 00 00         MOV DWORD PTR [%EBP-860],#131
 065B 8D 85 88 FC FF FF                     LEA %EAX,[%EBP-888]
 0661 50                                    PUSH %EAX
 0662 E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 0665 83 C4 04                              ADD %ESP,#4
 0668 8D 8D 88 FC FF FF                     LEA %ECX,[%EBP-888]
 066E 89 E3                                 MOV %EBX,%ESP
 0670 29 D3                                 SUB %EBX,%EDX
 0672 89 9D 80 FC FF FF                     MOV [%EBP-896],%EBX
 0678 89 8D 84 FC FF FF                     MOV [%EBP-892],%ECX
 067E 01 C3                                 ADD %EBX,%EAX
 0680 89 DC                                 MOV %ESP,%EBX
   130  
   131    %integernamearray in3a1(2:11,0:1,0:2)
 0682 C7 85 60 FC FF FF 03 00 00 00         MOV DWORD PTR [%EBP-928],#3
 068C C7 85 64 FC FF FF 02 00 00 00         MOV DWORD PTR [%EBP-924],#2
 0696 C7 85 68 FC FF FF 0B 00 00 00         MOV DWORD PTR [%EBP-920],#11
 06A0 C7 85 6C FC FF FF 00 00 00 00         MOV DWORD PTR [%EBP-916],#0
 06AA C7 85 70 FC FF FF 01 00 00 00         MOV DWORD PTR [%EBP-912],#1
 06B4 C7 85 74 FC FF FF 00 00 00 00         MOV DWORD PTR [%EBP-908],#0
 06BE C7 85 78 FC FF FF 02 00 00 00         MOV DWORD PTR [%EBP-904],#2
 06C8 C7 85 7C FC FF FF 83 00 00 00         MOV DWORD PTR [%EBP-900],#131
 06D2 8D 85 60 FC FF FF                     LEA %EAX,[%EBP-928]
 06D8 50                                    PUSH %EAX
 06D9 E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 06DC 83 C4 04                              ADD %ESP,#4
 06DF 8D 8D 60 FC FF FF                     LEA %ECX,[%EBP-928]
 06E5 89 E3                                 MOV %EBX,%ESP
 06E7 29 D3                                 SUB %EBX,%EDX
 06E9 89 9D 58 FC FF FF                     MOV [%EBP-936],%EBX
 06EF 89 8D 5C FC FF FF                     MOV [%EBP-932],%ECX
 06F5 01 C3                                 ADD %EBX,%EAX
 06F7 89 DC                                 MOV %ESP,%EBX
   132  
   133    i1 = 1
 06F9 C7 45 F8 01 00 00 00                  MOV DWORD PTR [%EBP-8],#1
   134  %endofprogram
 0700 C9                                    LEAVE
 0701 C3                                    RET
?IN3A1 unused
?IA5 unused
?IA4 unused
?IA3 unused
?SW2 unused
?SW1 unused
?ORECNAN1 unused
?ORECNA1 unused
?ORECAN1 unused
?ORECA1 unused
?ORECN1 unused
?OREC1 unused
?OSNAN1 unused
?OSNA1 unused
?OSAN1 unused
?OSA1 unused
?OSN1 unused
?OS1 unused
?OINAN1 unused
?OINA1 unused
?OLRAN1 unused
?OLRA1 unused
?ORAN1 unused
?ORA1 unused
?OCLR1 unused
?OCR1 unused
?OI3 unused
?OI2 unused
?OLR1 unused
?OR1 unused
?OIN1 unused
?OI1 unused
?RECNAN2 unused
?RECNAN1 unused
?RECNA3 unused
?RECNA2 unused
?RECNA1 unused
?RECAN2 unused
?RECAN1 unused
?RECA3 unused
?RECA2 unused
?RECA1 unused
?RECN2 unused
?RECN1 unused
?REC2 unused
?REC1 unused
?SNAN2 unused
?SNAN1 unused
?SNA3 unused
?SNA2 unused
?SNA1 unused
?SAN3 unused
?SAN2 unused
?SAN1 unused
?SA3 unused
?SA2B unused
?SA2 unused
?SA1B unused
?SA1 unused
?SN2 unused
?SN1 unused
?S2 unused
?S1 unused
?INAN2 unused
?INAN1 unused
?INA2B unused
?INA2 unused
?INA1B unused
?INA1 unused
?LRAN2 unused
?LRAN1 unused
?LRA2B unused
?LRA2 unused
?LRA1B unused
?LRA1 unused
?RAN2 unused
?RAN1 unused
?RA2B unused
?RA2 unused
?RA1B unused
?RA1 unused
?TEST1 unused
?RT1 unused
?IFN1 unused
?CLR1 unused
?LR1 unused
?CR1 unused
?QR1 unused
?R1 unused
?BIN1 unused
?BI1 unused
?SIN1 unused
?SI1 unused
?IN1 unused
?IMAP1 unused

   122 Statements compiled



 ELF object file generated from IMP source file: '/home/gtoal/src/compilers101/new-parser/imps/tests/test.imp'
 +----------+---------------------+---------+---------+---------+------------+
 | Sections |       Symbols       | Code    | Data    | Diag    | Total size |
 +----------+----------+----------+---------+---------+---------+------------+
 |  (count) | Internal | External | (bytes) | (bytes) | (bytes) | (bytes)    |
 +----------+----------+----------+---------+---------+---------+------------+
 |       15 |       17 |       36 |    1830 |    3056 |     352 |       5238 |
 +----------+----------+----------+---------+---------+---------+------------+


