         Edinburgh IMP77 Compiler - Version 8.4-2024.12.18

     1  %begin
 0000 C8 00 00 01                           ENTER 0000,1
     2  
     3    %string(255) x, s
     4    
     5    %integer i
     6    %string(255)%name sn
     7    %string(255)%array sra(0:9)
 0004 C7 85 E4 FD FF FF 01 00 00 00         MOV DWORD PTR [%EBP-540],#1
 000E C7 85 E8 FD FF FF 00 00 00 00         MOV DWORD PTR [%EBP-536],#0
 0018 C7 85 EC FD FF FF 09 00 00 00         MOV DWORD PTR [%EBP-532],#9
 0022 C7 85 F0 FD FF FF 07 20 00 00         MOV DWORD PTR [%EBP-528],#8199
 002C 8D 85 E4 FD FF FF                     LEA %EAX,[%EBP-540]
 0032 50                                    PUSH %EAX
 0033 E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 0036 83 C4 04                              ADD %ESP,#4
 0039 8D 8D E4 FD FF FF                     LEA %ECX,[%EBP-540]
 003F 89 E3                                 MOV %EBX,%ESP
 0041 29 D3                                 SUB %EBX,%EDX
 0043 89 9D DC FD FF FF                     MOV [%EBP-548],%EBX
 0049 89 8D E0 FD FF FF                     MOV [%EBP-544],%ECX
 004F 01 C3                                 ADD %EBX,%EAX
 0051 89 DC                                 MOV %ESP,%EBX
     8    %string(255)%namearray sna(0:9)
 0053 C7 85 CC FD FF FF 01 00 00 00         MOV DWORD PTR [%EBP-564],#1
 005D C7 85 D0 FD FF FF 00 00 00 00         MOV DWORD PTR [%EBP-560],#0
 0067 C7 85 D4 FD FF FF 09 00 00 00         MOV DWORD PTR [%EBP-556],#9
 0071 C7 85 D8 FD FF FF 87 00 00 00         MOV DWORD PTR [%EBP-552],#135
 007B 8D 85 CC FD FF FF                     LEA %EAX,[%EBP-564]
 0081 50                                    PUSH %EAX
 0082 E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 0085 83 C4 04                              ADD %ESP,#4
 0088 8D 8D CC FD FF FF                     LEA %ECX,[%EBP-564]
 008E 89 E3                                 MOV %EBX,%ESP
 0090 29 D3                                 SUB %EBX,%EDX
 0092 89 9D C4 FD FF FF                     MOV [%EBP-572],%EBX
 0098 89 8D C8 FD FF FF                     MOV [%EBP-568],%ECX
 009E 01 C3                                 ADD %EBX,%EAX
 00A0 89 DC                                 MOV %ESP,%EBX
     9    %string(255)%namearrayname snan
    10    %string(255)%map sm(%integer i); %result == s; %end
 00A2 EB 00                                 JMP L1001
 00A4                      L1002  EQU $
 00A4 C8 00 00 02                           ENTER 0000,2
 00A8 8B 75 FC                              MOV %ESI,[%EBP-4]
 00AB 8D 86 FC FD FF FF                     LEA %EAX,[%ESI-516]
 00B1 C9                                    LEAVE
 00B2 C3                                    RET
 00B3                      L1001  EQU $
?I unused
    11    sn == s
    12    x = s
 00B3 8D 85 FC FD FF FF                     LEA %EAX,[%EBP-516]
 00B9 89 85 F4 FD FF FF                     MOV [%EBP-524],%EAX
 00BF 8D 85 FC FE FF FF                     LEA %EAX,[%EBP-260]
 00C5 50                                    PUSH %EAX
 00C6 8D 8D FC FD FF FF                     LEA %ECX,[%EBP-516]
 00CC 51                                    PUSH %ECX
 00CD 68 FF 00 00 00                        PUSH #255
 00D2 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 00D5 83 C4 0C                              ADD %ESP,#12
    13    x = sn
 00D8 8D 85 FC FE FF FF                     LEA %EAX,[%EBP-260]
 00DE 50                                    PUSH %EAX
 00DF 8B 8D F4 FD FF FF                     MOV %ECX,[%EBP-524]
 00E5 51                                    PUSH %ECX
 00E6 68 FF 00 00 00                        PUSH #255
 00EB E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 00EE 83 C4 0C                              ADD %ESP,#12
    14    sn = x
 00F1 8B 85 F4 FD FF FF                     MOV %EAX,[%EBP-524]
 00F7 50                                    PUSH %EAX
 00F8 8D 8D FC FE FF FF                     LEA %ECX,[%EBP-260]
 00FE 51                                    PUSH %ECX
 00FF 68 FF 00 00 00                        PUSH #255
 0104 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0107 83 C4 0C                              ADD %ESP,#12
    15    x = sra(i)
 010A FF B5 F8 FD FF FF                     PUSH DWORD PTR [%EBP-520]
 0110 FF B5 E0 FD FF FF                     PUSH DWORD PTR [%EBP-544]
 0116 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0119 83 C4 08                              ADD %ESP,#8
 011C 89 C7                                 MOV %EDI,%EAX
 011E 03 BD DC FD FF FF                     ADD %EDI,[%EBP-548]
 0124 8D 85 FC FE FF FF                     LEA %EAX,[%EBP-260]
 012A 50                                    PUSH %EAX
 012B 57                                    PUSH %EDI
 012C 68 FF 00 00 00                        PUSH #255
 0131 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0134 83 C4 0C                              ADD %ESP,#12
    16    sn == sra(i)
 0137 FF B5 F8 FD FF FF                     PUSH DWORD PTR [%EBP-520]
 013D FF B5 E0 FD FF FF                     PUSH DWORD PTR [%EBP-544]
 0143 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0146 83 C4 08                              ADD %ESP,#8
 0149 89 C3                                 MOV %EBX,%EAX
 014B 03 9D DC FD FF FF                     ADD %EBX,[%EBP-548]
 0151 89 9D F4 FD FF FF                     MOV [%EBP-524],%EBX
    17    x = sra(i)
 0157 FF B5 F8 FD FF FF                     PUSH DWORD PTR [%EBP-520]
 015D FF B5 E0 FD FF FF                     PUSH DWORD PTR [%EBP-544]
 0163 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0166 83 C4 08                              ADD %ESP,#8
 0169 89 C6                                 MOV %ESI,%EAX
 016B 03 B5 DC FD FF FF                     ADD %ESI,[%EBP-548]
 0171 8D 85 FC FE FF FF                     LEA %EAX,[%EBP-260]
 0177 50                                    PUSH %EAX
 0178 56                                    PUSH %ESI
 0179 68 FF 00 00 00                        PUSH #255
 017E E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0181 83 C4 0C                              ADD %ESP,#12
    18    sra(i) = x
 0184 FF B5 F8 FD FF FF                     PUSH DWORD PTR [%EBP-520]
 018A FF B5 E0 FD FF FF                     PUSH DWORD PTR [%EBP-544]
 0190 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0193 83 C4 08                              ADD %ESP,#8
 0196 89 C7                                 MOV %EDI,%EAX
 0198 03 BD DC FD FF FF                     ADD %EDI,[%EBP-548]
 019E 57                                    PUSH %EDI
 019F 8D 85 FC FE FF FF                     LEA %EAX,[%EBP-260]
 01A5 50                                    PUSH %EAX
 01A6 68 FF 00 00 00                        PUSH #255
 01AB E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 01AE 83 C4 0C                              ADD %ESP,#12
    19    sn == sna(i)
 01B1 FF B5 F8 FD FF FF                     PUSH DWORD PTR [%EBP-520]
 01B7 FF B5 C8 FD FF FF                     PUSH DWORD PTR [%EBP-568]
 01BD E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 01C0 83 C4 08                              ADD %ESP,#8
 01C3 89 C3                                 MOV %EBX,%EAX
 01C5 03 9D C4 FD FF FF                     ADD %EBX,[%EBP-572]
 01CB 8B 1B                                 MOV %EBX,[%EBX]
 01CD 89 9D F4 FD FF FF                     MOV [%EBP-524],%EBX
    20    x = sna(i)
 01D3 FF B5 F8 FD FF FF                     PUSH DWORD PTR [%EBP-520]
 01D9 FF B5 C8 FD FF FF                     PUSH DWORD PTR [%EBP-568]
 01DF E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 01E2 83 C4 08                              ADD %ESP,#8
 01E5 89 C6                                 MOV %ESI,%EAX
 01E7 03 B5 C4 FD FF FF                     ADD %ESI,[%EBP-572]
 01ED 8D 85 FC FE FF FF                     LEA %EAX,[%EBP-260]
 01F3 50                                    PUSH %EAX
 01F4 8B 36                                 MOV %ESI,[%ESI]
 01F6 56                                    PUSH %ESI
 01F7 68 FF 00 00 00                        PUSH #255
 01FC E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 01FF 83 C4 0C                              ADD %ESP,#12
    21    sna(i) = x
 0202 FF B5 F8 FD FF FF                     PUSH DWORD PTR [%EBP-520]
 0208 FF B5 C8 FD FF FF                     PUSH DWORD PTR [%EBP-568]
 020E E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0211 83 C4 08                              ADD %ESP,#8
 0214 89 C7                                 MOV %EDI,%EAX
 0216 03 BD C4 FD FF FF                     ADD %EDI,[%EBP-572]
 021C 8B 3F                                 MOV %EDI,[%EDI]
 021E 57                                    PUSH %EDI
 021F 8D 85 FC FE FF FF                     LEA %EAX,[%EBP-260]
 0225 50                                    PUSH %EAX
 0226 68 FF 00 00 00                        PUSH #255
 022B E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 022E 83 C4 0C                              ADD %ESP,#12
    22    snan == sna
 0231 8B 85 C8 FD FF FF                     MOV %EAX,[%EBP-568]
 0237 89 85 C0 FD FF FF                     MOV [%EBP-576],%EAX
 023D 8B 85 C4 FD FF FF                     MOV %EAX,[%EBP-572]
 0243 89 85 BC FD FF FF                     MOV [%EBP-580],%EAX
    23    sn == snan(i)
 0249 FF B5 F8 FD FF FF                     PUSH DWORD PTR [%EBP-520]
 024F FF B5 C0 FD FF FF                     PUSH DWORD PTR [%EBP-576]
 0255 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0258 83 C4 08                              ADD %ESP,#8
 025B 89 C3                                 MOV %EBX,%EAX
 025D 03 9D BC FD FF FF                     ADD %EBX,[%EBP-580]
 0263 8B 1B                                 MOV %EBX,[%EBX]
 0265 89 9D F4 FD FF FF                     MOV [%EBP-524],%EBX
    24    x = snan(i)
 026B FF B5 F8 FD FF FF                     PUSH DWORD PTR [%EBP-520]
 0271 FF B5 C0 FD FF FF                     PUSH DWORD PTR [%EBP-576]
 0277 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 027A 83 C4 08                              ADD %ESP,#8
 027D 89 C6                                 MOV %ESI,%EAX
 027F 03 B5 BC FD FF FF                     ADD %ESI,[%EBP-580]
 0285 8D 85 FC FE FF FF                     LEA %EAX,[%EBP-260]
 028B 50                                    PUSH %EAX
 028C 8B 36                                 MOV %ESI,[%ESI]
 028E 56                                    PUSH %ESI
 028F 68 FF 00 00 00                        PUSH #255
 0294 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0297 83 C4 0C                              ADD %ESP,#12
    25    snan(i) = x
 029A FF B5 F8 FD FF FF                     PUSH DWORD PTR [%EBP-520]
 02A0 FF B5 C0 FD FF FF                     PUSH DWORD PTR [%EBP-576]
 02A6 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 02A9 83 C4 08                              ADD %ESP,#8
 02AC 89 C7                                 MOV %EDI,%EAX
 02AE 03 BD BC FD FF FF                     ADD %EDI,[%EBP-580]
 02B4 8B 3F                                 MOV %EDI,[%EDI]
 02B6 57                                    PUSH %EDI
 02B7 8D 85 FC FE FF FF                     LEA %EAX,[%EBP-260]
 02BD 50                                    PUSH %EAX
 02BE 68 FF 00 00 00                        PUSH #255
 02C3 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 02C6 83 C4 0C                              ADD %ESP,#12
    26    x = sm(i)
 02C9 FF B5 F8 FD FF FF                     PUSH DWORD PTR [%EBP-520]
 02CF E8 00 00                              CALL 'SM' (INTERNAL L1002 )
 02D2 83 C4 04                              ADD %ESP,#4
 02D5 8D 8D FC FE FF FF                     LEA %ECX,[%EBP-260]
 02DB 51                                    PUSH %ECX
 02DC 50                                    PUSH %EAX
 02DD 68 FF 00 00 00                        PUSH #255
 02E2 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 02E5 83 C4 0C                              ADD %ESP,#12
    27    sn == sm(i)
 02E8 FF B5 F8 FD FF FF                     PUSH DWORD PTR [%EBP-520]
 02EE E8 00 00                              CALL 'SM' (INTERNAL L1002 )
 02F1 83 C4 04                              ADD %ESP,#4
 02F4 89 85 F4 FD FF FF                     MOV [%EBP-524],%EAX
    28    sm(i) = x
 02FA FF B5 F8 FD FF FF                     PUSH DWORD PTR [%EBP-520]
 0300 E8 00 00                              CALL 'SM' (INTERNAL L1002 )
 0303 83 C4 04                              ADD %ESP,#4
 0306 50                                    PUSH %EAX
 0307 8D 8D FC FE FF FF                     LEA %ECX,[%EBP-260]
 030D 51                                    PUSH %ECX
 030E 68 FF 00 00 00                        PUSH #255
 0313 E8 03 00                              CALL '_IMPSTRCPY' (EXTERN 3)
 0316 83 C4 0C                              ADD %ESP,#12
    29  %endofprogram
 0319 C9                                    LEAVE
 031A C3                                    RET

    29 Statements compiled



 ELF object file generated from IMP source file: '/home/gtoal/src/compilers101/new-parser/imps/tests/test190.imp'
 +----------+---------------------+---------+---------+---------+------------+
 | Sections |       Symbols       | Code    | Data    | Diag    | Total size |
 +----------+----------+----------+---------+---------+---------+------------+
 |  (count) | Internal | External | (bytes) | (bytes) | (bytes) | (bytes)    |
 +----------+----------+----------+---------+---------+---------+------------+
 |       11 |        5 |        9 |     849 |       0 |      64 |        913 |
 +----------+----------+----------+---------+---------+---------+------------+


