         Edinburgh IMP77 Compiler - Version 8.4-2024.12.18

     1  %begin
 0000 C8 00 00 01                           ENTER 0000,1
     2    %integer i
     3    %integerarray ia1(3:5)
 0004 C7 45 E8 01 00 00 00                  MOV DWORD PTR [%EBP-24],#1
 000B C7 45 EC 03 00 00 00                  MOV DWORD PTR [%EBP-20],#3
 0012 C7 45 F0 05 00 00 00                  MOV DWORD PTR [%EBP-16],#5
 0019 C7 45 F4 83 00 00 00                  MOV DWORD PTR [%EBP-12],#131
 0020 8D 45 E8                              LEA %EAX,[%EBP-24]
 0023 50                                    PUSH %EAX
 0024 E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 0027 83 C4 04                              ADD %ESP,#4
 002A 8D 4D E8                              LEA %ECX,[%EBP-24]
 002D 89 E3                                 MOV %EBX,%ESP
 002F 29 D3                                 SUB %EBX,%EDX
 0031 89 5D E0                              MOV [%EBP-32],%EBX
 0034 89 4D E4                              MOV [%EBP-28],%ECX
 0037 01 C3                                 ADD %EBX,%EAX
 0039 89 DC                                 MOV %ESP,%EBX
     4    %integerarrayname ian1
     5    %integerarray ia2(2:4,3:6)
 003B C7 45 C0 02 00 00 00                  MOV DWORD PTR [%EBP-64],#2
 0042 C7 45 C4 02 00 00 00                  MOV DWORD PTR [%EBP-60],#2
 0049 C7 45 C8 04 00 00 00                  MOV DWORD PTR [%EBP-56],#4
 0050 C7 45 CC 03 00 00 00                  MOV DWORD PTR [%EBP-52],#3
 0057 C7 45 D0 06 00 00 00                  MOV DWORD PTR [%EBP-48],#6
 005E C7 45 D4 83 00 00 00                  MOV DWORD PTR [%EBP-44],#131
 0065 8D 45 C0                              LEA %EAX,[%EBP-64]
 0068 50                                    PUSH %EAX
 0069 E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 006C 83 C4 04                              ADD %ESP,#4
 006F 8D 4D C0                              LEA %ECX,[%EBP-64]
 0072 89 E3                                 MOV %EBX,%ESP
 0074 29 D3                                 SUB %EBX,%EDX
 0076 89 5D B8                              MOV [%EBP-72],%EBX
 0079 89 4D BC                              MOV [%EBP-68],%ECX
 007C 01 C3                                 ADD %EBX,%EAX
 007E 89 DC                                 MOV %ESP,%EBX
     6    %integerarray(2)%name ian2
     7  
     8    ia1(3) = i
 0080 6A 03                                 PUSH #3
 0082 FF 75 E4                              PUSH DWORD PTR [%EBP-28]
 0085 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0088 83 C4 08                              ADD %ESP,#8
 008B 89 C6                                 MOV %ESI,%EAX
 008D 03 75 E0                              ADD %ESI,[%EBP-32]
 0090 8B 45 F8                              MOV %EAX,[%EBP-8]
 0093 89 06                                 MOV [%ESI],%EAX
     9    i = ia1(3)
 0095 6A 03                                 PUSH #3
 0097 FF 75 E4                              PUSH DWORD PTR [%EBP-28]
 009A E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 009D 83 C4 08                              ADD %ESP,#8
 00A0 89 C7                                 MOV %EDI,%EAX
 00A2 03 7D E0                              ADD %EDI,[%EBP-32]
 00A5 8B 3F                                 MOV %EDI,[%EDI]
 00A7 89 7D F8                              MOV [%EBP-8],%EDI
    10  
    11    ia2(2,3) = i
 00AA 6A 02                                 PUSH #2
 00AC 6A 03                                 PUSH #3
 00AE FF 75 BC                              PUSH DWORD PTR [%EBP-68]
 00B1 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 00B4 83 C4 0C                              ADD %ESP,#12
 00B7 89 C3                                 MOV %EBX,%EAX
 00B9 03 5D B8                              ADD %EBX,[%EBP-72]
 00BC 8B 45 F8                              MOV %EAX,[%EBP-8]
 00BF 89 03                                 MOV [%EBX],%EAX
    12    i = ia2(2,3)
 00C1 6A 02                                 PUSH #2
 00C3 6A 03                                 PUSH #3
 00C5 FF 75 BC                              PUSH DWORD PTR [%EBP-68]
 00C8 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 00CB 83 C4 0C                              ADD %ESP,#12
 00CE 89 C6                                 MOV %ESI,%EAX
 00D0 03 75 B8                              ADD %ESI,[%EBP-72]
 00D3 8B 36                                 MOV %ESI,[%ESI]
 00D5 89 75 F8                              MOV [%EBP-8],%ESI
    13  
    14    ian1 == ia1
 00D8 8B 45 E4                              MOV %EAX,[%EBP-28]
 00DB 89 45 DC                              MOV [%EBP-36],%EAX
 00DE 8B 45 E0                              MOV %EAX,[%EBP-32]
 00E1 89 45 D8                              MOV [%EBP-40],%EAX
    15    ian1(3) = i
 00E4 6A 03                                 PUSH #3
 00E6 FF 75 DC                              PUSH DWORD PTR [%EBP-36]
 00E9 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 00EC 83 C4 08                              ADD %ESP,#8
 00EF 89 C7                                 MOV %EDI,%EAX
 00F1 03 7D D8                              ADD %EDI,[%EBP-40]
 00F4 8B 45 F8                              MOV %EAX,[%EBP-8]
 00F7 89 07                                 MOV [%EDI],%EAX
    16    i = ian1(3)
 00F9 6A 03                                 PUSH #3
 00FB FF 75 DC                              PUSH DWORD PTR [%EBP-36]
 00FE E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0101 83 C4 08                              ADD %ESP,#8
 0104 89 C3                                 MOV %EBX,%EAX
 0106 03 5D D8                              ADD %EBX,[%EBP-40]
 0109 8B 1B                                 MOV %EBX,[%EBX]
 010B 89 5D F8                              MOV [%EBP-8],%EBX
    17    
    18    ian2 == ia2
 010E 8B 45 BC                              MOV %EAX,[%EBP-68]
 0111 89 45 B4                              MOV [%EBP-76],%EAX
 0114 8B 45 B8                              MOV %EAX,[%EBP-72]
 0117 89 45 B0                              MOV [%EBP-80],%EAX
    19    ian2(2,3) = i
 011A 6A 02                                 PUSH #2
 011C 6A 03                                 PUSH #3
 011E FF 75 B4                              PUSH DWORD PTR [%EBP-76]
 0121 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0124 83 C4 0C                              ADD %ESP,#12
 0127 89 C6                                 MOV %ESI,%EAX
 0129 03 75 B0                              ADD %ESI,[%EBP-80]
 012C 8B 45 F8                              MOV %EAX,[%EBP-8]
 012F 89 06                                 MOV [%ESI],%EAX
    20    i = ian2(2,3)
 0131 6A 02                                 PUSH #2
 0133 6A 03                                 PUSH #3
 0135 FF 75 B4                              PUSH DWORD PTR [%EBP-76]
 0138 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 013B 83 C4 0C                              ADD %ESP,#12
 013E 89 C7                                 MOV %EDI,%EAX
 0140 03 7D B0                              ADD %EDI,[%EBP-80]
 0143 8B 3F                                 MOV %EDI,[%EDI]
 0145 89 7D F8                              MOV [%EBP-8],%EDI
    21    
    22  %endofprogram
 0148 C9                                    LEAVE
 0149 C3                                    RET

    17 Statements compiled



 ELF object file generated from IMP source file: '/home/gtoal/src/compilers101/new-parser/imps/tests/test46.imp'
 +----------+---------------------+---------+---------+---------+------------+
 | Sections |       Symbols       | Code    | Data    | Diag    | Total size |
 +----------+----------+----------+---------+---------+---------+------------+
 |  (count) | Internal | External | (bytes) | (bytes) | (bytes) | (bytes)    |
 +----------+----------+----------+---------+---------+---------+------------+
 |       11 |        4 |        8 |     350 |       0 |      32 |        382 |
 +----------+----------+----------+---------+---------+---------+------------+


