         Edinburgh IMP77 Compiler - Version 8.4-2024.12.18

     1  %begin
 0000 C8 00 00 01                           ENTER 0000,1
     2     %begin
 0004 E8 00 00                              CALL '$L1001' (INTERNAL L1001 )
 0007 EB 00                                 JMP L1002
 0009                      L1001  EQU $
 0009 C8 00 00 02                           ENTER 0000,2
     3        %begin
 000D E8 00 00                              CALL '$L1003' (INTERNAL L1003 )
 0010 EB 00                                 JMP L1004
 0012                      L1003  EQU $
 0012 C8 00 00 03                           ENTER 0000,3
     4           %begin
 0016 E8 00 00                              CALL '$L1005' (INTERNAL L1005 )
 0019 EB 00                                 JMP L1006
 001B                      L1005  EQU $
 001B C8 00 00 04                           ENTER 0000,4
     5              %begin
 001F E8 00 00                              CALL '$L1007' (INTERNAL L1007 )
 0022 EB 00                                 JMP L1008
 0024                      L1007  EQU $
 0024 C8 00 00 05                           ENTER 0000,5
     6                 %integer x,y
     7                 %integerarray a(1:X+y)
 0028 8B 45 E8                              MOV %EAX,[%EBP-24]
 002B 03 45 E4                              ADD %EAX,[%EBP-28]
 002E C7 45 D4 01 00 00 00                  MOV DWORD PTR [%EBP-44],#1
 0035 C7 45 D8 01 00 00 00                  MOV DWORD PTR [%EBP-40],#1
 003C 89 45 DC                              MOV [%EBP-36],%EAX
 003F C7 45 E0 83 00 00 00                  MOV DWORD PTR [%EBP-32],#131
 0046 8D 45 D4                              LEA %EAX,[%EBP-44]
 0049 50                                    PUSH %EAX
 004A E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 004D 83 C4 04                              ADD %ESP,#4
 0050 8D 4D D4                              LEA %ECX,[%EBP-44]
 0053 89 E3                                 MOV %EBX,%ESP
 0055 29 D3                                 SUB %EBX,%EDX
 0057 89 5D CC                              MOV [%EBP-52],%EBX
 005A 89 4D D0                              MOV [%EBP-48],%ECX
 005D 01 C3                                 ADD %EBX,%EAX
 005F 89 DC                                 MOV %ESP,%EBX
     8                 x=a(a(x*(Y+1)))
 0061 8B 45 E4                              MOV %EAX,[%EBP-28]
 0064 40                                    INC %EAX
 0065 F7 6D E8                              IMUL DWORD PTR [%EBP-24]
 0068 50                                    PUSH %EAX
 0069 FF 75 D0                              PUSH DWORD PTR [%EBP-48]
 006C E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 006F 83 C4 08                              ADD %ESP,#8
 0072 89 C6                                 MOV %ESI,%EAX
 0074 03 75 CC                              ADD %ESI,[%EBP-52]
 0077 FF 36                                 PUSH DWORD PTR [%ESI]
 0079 FF 75 D0                              PUSH DWORD PTR [%EBP-48]
 007C E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 007F 83 C4 08                              ADD %ESP,#8
 0082 89 C7                                 MOV %EDI,%EAX
 0084 03 7D CC                              ADD %EDI,[%EBP-52]
 0087 8B 3F                                 MOV %EDI,[%EDI]
 0089 89 7D E8                              MOV [%EBP-24],%EDI
     9              %end
 008C C9                                    LEAVE
 008D C3                                    RET
 008E                      L1008  EQU $
    10           %end
    11        %end
    12     %end
    13  %endofprogram

    13 Statements compiled
 008E C9                                    LEAVE
 008F C3                                    RET
 0090                      L1006  EQU $
 0090 C9                                    LEAVE
 0091 C3                                    RET
 0092                      L1004  EQU $
 0092 C9                                    LEAVE
 0093 C3                                    RET
 0094                      L1002  EQU $
 0094 C9                                    LEAVE
 0095 C3                                    RET



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


