         Edinburgh IMP77 Compiler - Version 8.4-2024.12.18

     1  %begin
 0000 C8 00 00 01                           ENTER 0000,1
     2  
     3    %real x, r
     4  
     5    %integer i
     6    %realname rn
     7    %realarray rra(0:9)
 0004 C7 45 DC 01 00 00 00                  MOV DWORD PTR [%EBP-36],#1
 000B C7 45 E0 00 00 00 00                  MOV DWORD PTR [%EBP-32],#0
 0012 C7 45 E4 09 00 00 00                  MOV DWORD PTR [%EBP-28],#9
 0019 C7 45 E8 85 00 00 00                  MOV DWORD PTR [%EBP-24],#133
 0020 8D 45 DC                              LEA %EAX,[%EBP-36]
 0023 50                                    PUSH %EAX
 0024 E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 0027 83 C4 04                              ADD %ESP,#4
 002A 8D 4D DC                              LEA %ECX,[%EBP-36]
 002D 89 E3                                 MOV %EBX,%ESP
 002F 29 D3                                 SUB %EBX,%EDX
 0031 89 5D D4                              MOV [%EBP-44],%EBX
 0034 89 4D D8                              MOV [%EBP-40],%ECX
 0037 01 C3                                 ADD %EBX,%EAX
 0039 89 DC                                 MOV %ESP,%EBX
     8    %realnamearray rna(0:9)
 003B C7 45 C4 01 00 00 00                  MOV DWORD PTR [%EBP-60],#1
 0042 C7 45 C8 00 00 00 00                  MOV DWORD PTR [%EBP-56],#0
 0049 C7 45 CC 09 00 00 00                  MOV DWORD PTR [%EBP-52],#9
 0050 C7 45 D0 85 00 00 00                  MOV DWORD PTR [%EBP-48],#133
 0057 8D 45 C4                              LEA %EAX,[%EBP-60]
 005A 50                                    PUSH %EAX
 005B E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 005E 83 C4 04                              ADD %ESP,#4
 0061 8D 4D C4                              LEA %ECX,[%EBP-60]
 0064 89 E3                                 MOV %EBX,%ESP
 0066 29 D3                                 SUB %EBX,%EDX
 0068 89 5D BC                              MOV [%EBP-68],%EBX
 006B 89 4D C0                              MOV [%EBP-64],%ECX
 006E 01 C3                                 ADD %EBX,%EAX
 0070 89 DC                                 MOV %ESP,%EBX
     9    %realnamearrayname rnan
    10    %realmap rm(%integer i); %result == r; %end
 0072 EB 00                                 JMP L1001
 0074                      L1002  EQU $
 0074 C8 00 00 02                           ENTER 0000,2
 0078 8B 75 FC                              MOV %ESI,[%EBP-4]
 007B 8D 46 F4                              LEA %EAX,[%ESI-12]
 007E C9                                    LEAVE
 007F C3                                    RET
 0080                      L1001  EQU $
?I unused
    11    %realmap rm2(%integer i); %result == rn; %end
?I unused
    12    %realmap rm3(%integer i); %result == rra(i); %end
    13    %realmap rm4(%integer i); %result == rna(i); %end
    14    %realmap rm5(%integer i); %result == rnan(i); %end
    15    rn == r
    16    x = r
 0080                      L1003  EQU $
 0080 C8 00 00 02                           ENTER 0000,2
 0084 8B 7D FC                              MOV %EDI,[%EBP-4]
 0087 8B 47 EC                              MOV %EAX,[%EDI-20]
 008A C9                                    LEAVE
 008B C3                                    RET
 008C                      L1001  EQU $
 008C                      L1004  EQU $
 008C C8 00 00 02                           ENTER 0000,2
 0090 FF 75 08                              PUSH DWORD PTR [%EBP+8]
 0093 8B 5D FC                              MOV %EBX,[%EBP-4]
 0096 FF 73 D8                              PUSH DWORD PTR [%EBX-40]
 0099 89 5D F4                              MOV [%EBP-12],%EBX
 009C E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 009F 83 C4 08                              ADD %ESP,#8
 00A2 89 C6                                 MOV %ESI,%EAX
 00A4 8B 7D F4                              MOV %EDI,[%EBP-12]
 00A7 03 77 D4                              ADD %ESI,[%EDI-44]
 00AA 89 F0                                 MOV %EAX,%ESI
 00AC C9                                    LEAVE
 00AD C3                                    RET
 00AE                      L1001  EQU $
 00AE                      L1005  EQU $
 00AE C8 00 00 02                           ENTER 0000,2
 00B2 FF 75 08                              PUSH DWORD PTR [%EBP+8]
 00B5 8B 5D FC                              MOV %EBX,[%EBP-4]
 00B8 FF 73 C0                              PUSH DWORD PTR [%EBX-64]
 00BB 89 5D F4                              MOV [%EBP-12],%EBX
 00BE E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 00C1 83 C4 08                              ADD %ESP,#8
 00C4 89 C6                                 MOV %ESI,%EAX
 00C6 8B 7D F4                              MOV %EDI,[%EBP-12]
 00C9 03 77 BC                              ADD %ESI,[%EDI-68]
 00CC 8B 06                                 MOV %EAX,[%ESI]
 00CE C9                                    LEAVE
 00CF C3                                    RET
 00D0                      L1001  EQU $
 00D0                      L1006  EQU $
 00D0 C8 00 00 02                           ENTER 0000,2
 00D4 FF 75 08                              PUSH DWORD PTR [%EBP+8]
 00D7 8B 5D FC                              MOV %EBX,[%EBP-4]
 00DA FF 73 B8                              PUSH DWORD PTR [%EBX-72]
 00DD 89 5D F4                              MOV [%EBP-12],%EBX
 00E0 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 00E3 83 C4 08                              ADD %ESP,#8
 00E6 89 C6                                 MOV %ESI,%EAX
 00E8 8B 7D F4                              MOV %EDI,[%EBP-12]
 00EB 03 77 B4                              ADD %ESI,[%EDI-76]
 00EE 8B 06                                 MOV %EAX,[%ESI]
 00F0 C9                                    LEAVE
 00F1 C3                                    RET
 00F2                      L1001  EQU $
 00F2 8D 45 F4                              LEA %EAX,[%EBP-12]
 00F5 89 45 EC                              MOV [%EBP-20],%EAX
 00F8 D9 45 F4                              FLD DWORD [%EBP-12]
 00FB D9 5D F8                              FSTP DWORD [%EBP-8]
    17    r = x
 00FE D9 45 F8                              FLD DWORD [%EBP-8]
 0101 D9 5D F4                              FSTP DWORD [%EBP-12]
    18    x = rn
 0104 8B 5D EC                              MOV %EBX,[%EBP-20]
 0107 D9 03                                 FLD DWORD [%EBX]
 0109 D9 5D F8                              FSTP DWORD [%EBP-8]
    19    rn = x
 010C 8B 75 EC                              MOV %ESI,[%EBP-20]
 010F D9 45 F8                              FLD DWORD [%EBP-8]
 0112 D9 1E                                 FSTP DWORD [%ESI]
    20    x = rra(i)
 0114 FF 75 F0                              PUSH DWORD PTR [%EBP-16]
 0117 FF 75 D8                              PUSH DWORD PTR [%EBP-40]
 011A E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 011D 83 C4 08                              ADD %ESP,#8
 0120 89 C7                                 MOV %EDI,%EAX
 0122 03 7D D4                              ADD %EDI,[%EBP-44]
 0125 D9 07                                 FLD DWORD [%EDI]
 0127 D9 5D F8                              FSTP DWORD [%EBP-8]
    21    rra(i) = x
 012A FF 75 F0                              PUSH DWORD PTR [%EBP-16]
 012D FF 75 D8                              PUSH DWORD PTR [%EBP-40]
 0130 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0133 83 C4 08                              ADD %ESP,#8
 0136 89 C3                                 MOV %EBX,%EAX
 0138 03 5D D4                              ADD %EBX,[%EBP-44]
 013B D9 45 F8                              FLD DWORD [%EBP-8]
 013E D9 1B                                 FSTP DWORD [%EBX]
    22    rn == rra(i)
 0140 FF 75 F0                              PUSH DWORD PTR [%EBP-16]
 0143 FF 75 D8                              PUSH DWORD PTR [%EBP-40]
 0146 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0149 83 C4 08                              ADD %ESP,#8
 014C 89 C6                                 MOV %ESI,%EAX
 014E 03 75 D4                              ADD %ESI,[%EBP-44]
 0151 89 75 EC                              MOV [%EBP-20],%ESI
    23    x = rra(i)
 0154 FF 75 F0                              PUSH DWORD PTR [%EBP-16]
 0157 FF 75 D8                              PUSH DWORD PTR [%EBP-40]
 015A E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 015D 83 C4 08                              ADD %ESP,#8
 0160 89 C7                                 MOV %EDI,%EAX
 0162 03 7D D4                              ADD %EDI,[%EBP-44]
 0165 D9 07                                 FLD DWORD [%EDI]
 0167 D9 5D F8                              FSTP DWORD [%EBP-8]
    24    rn == rna(i)
 016A FF 75 F0                              PUSH DWORD PTR [%EBP-16]
 016D FF 75 C0                              PUSH DWORD PTR [%EBP-64]
 0170 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0173 83 C4 08                              ADD %ESP,#8
 0176 89 C3                                 MOV %EBX,%EAX
 0178 03 5D BC                              ADD %EBX,[%EBP-68]
 017B 8B 1B                                 MOV %EBX,[%EBX]
 017D 89 5D EC                              MOV [%EBP-20],%EBX
    25    rna(i) = x
 0180 FF 75 F0                              PUSH DWORD PTR [%EBP-16]
 0183 FF 75 C0                              PUSH DWORD PTR [%EBP-64]
 0186 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0189 83 C4 08                              ADD %ESP,#8
 018C 89 C6                                 MOV %ESI,%EAX
 018E 03 75 BC                              ADD %ESI,[%EBP-68]
 0191 8B 36                                 MOV %ESI,[%ESI]
 0193 D9 45 F8                              FLD DWORD [%EBP-8]
 0196 D9 1E                                 FSTP DWORD [%ESI]
    26    x = rna(i)
 0198 FF 75 F0                              PUSH DWORD PTR [%EBP-16]
 019B FF 75 C0                              PUSH DWORD PTR [%EBP-64]
 019E E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 01A1 83 C4 08                              ADD %ESP,#8
 01A4 89 C7                                 MOV %EDI,%EAX
 01A6 03 7D BC                              ADD %EDI,[%EBP-68]
 01A9 8B 3F                                 MOV %EDI,[%EDI]
 01AB D9 07                                 FLD DWORD [%EDI]
 01AD D9 5D F8                              FSTP DWORD [%EBP-8]
    27    rnan == rna
 01B0 8B 45 C0                              MOV %EAX,[%EBP-64]
 01B3 89 45 B8                              MOV [%EBP-72],%EAX
 01B6 8B 45 BC                              MOV %EAX,[%EBP-68]
 01B9 89 45 B4                              MOV [%EBP-76],%EAX
    28    rn == rnan(i)
 01BC FF 75 F0                              PUSH DWORD PTR [%EBP-16]
 01BF FF 75 B8                              PUSH DWORD PTR [%EBP-72]
 01C2 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 01C5 83 C4 08                              ADD %ESP,#8
 01C8 89 C3                                 MOV %EBX,%EAX
 01CA 03 5D B4                              ADD %EBX,[%EBP-76]
 01CD 8B 1B                                 MOV %EBX,[%EBX]
 01CF 89 5D EC                              MOV [%EBP-20],%EBX
    29    rnan(i) = x
 01D2 FF 75 F0                              PUSH DWORD PTR [%EBP-16]
 01D5 FF 75 B8                              PUSH DWORD PTR [%EBP-72]
 01D8 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 01DB 83 C4 08                              ADD %ESP,#8
 01DE 89 C6                                 MOV %ESI,%EAX
 01E0 03 75 B4                              ADD %ESI,[%EBP-76]
 01E3 8B 36                                 MOV %ESI,[%ESI]
 01E5 D9 45 F8                              FLD DWORD [%EBP-8]
 01E8 D9 1E                                 FSTP DWORD [%ESI]
    30    x = rnan(i)
 01EA FF 75 F0                              PUSH DWORD PTR [%EBP-16]
 01ED FF 75 B8                              PUSH DWORD PTR [%EBP-72]
 01F0 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 01F3 83 C4 08                              ADD %ESP,#8
 01F6 89 C7                                 MOV %EDI,%EAX
 01F8 03 7D B4                              ADD %EDI,[%EBP-76]
 01FB 8B 3F                                 MOV %EDI,[%EDI]
 01FD D9 07                                 FLD DWORD [%EDI]
 01FF D9 5D F8                              FSTP DWORD [%EBP-8]
    31    x = rm(i)
 0202 FF 75 F0                              PUSH DWORD PTR [%EBP-16]
 0205 E8 00 00                              CALL 'RM' (INTERNAL L1002 )
 0208 83 C4 04                              ADD %ESP,#4
 020B D9 00                                 FLD DWORD [%EAX]
 020D D9 5D F8                              FSTP DWORD [%EBP-8]
    32    rn == rm(i)
 0210 FF 75 F0                              PUSH DWORD PTR [%EBP-16]
 0213 E8 00 00                              CALL 'RM' (INTERNAL L1002 )
 0216 83 C4 04                              ADD %ESP,#4
 0219 89 45 EC                              MOV [%EBP-20],%EAX
    33    rm(i) = x
 021C FF 75 F0                              PUSH DWORD PTR [%EBP-16]
 021F E8 00 00                              CALL 'RM' (INTERNAL L1002 )
 0222 83 C4 04                              ADD %ESP,#4
 0225 D9 45 F8                              FLD DWORD [%EBP-8]
 0228 D9 18                                 FSTP DWORD [%EAX]
    34  %endofprogram
 022A C9                                    LEAVE
 022B C3                                    RET
?RM5 unused
?RM4 unused
?RM3 unused
?RM2 unused

    42 Statements compiled



 ELF object file generated from IMP source file: '/home/gtoal/src/compilers101/new-parser/imps/tests/test188.imp'
 +----------+---------------------+---------+---------+---------+------------+
 | Sections |       Symbols       | Code    | Data    | Diag    | Total size |
 +----------+----------+----------+---------+---------+---------+------------+
 |  (count) | Internal | External | (bytes) | (bytes) | (bytes) | (bytes)    |
 +----------+----------+----------+---------+---------+---------+------------+
 |       11 |        9 |        8 |     595 |       0 |     192 |        787 |
 +----------+----------+----------+---------+---------+---------+------------+


