         Edinburgh IMP77 Compiler - Version 8.4-2024.12.18

     1  %begin
 0000 C8 00 00 01                           ENTER 0000,1
     2    %integer Max Lines = 20
 0004 C7 45 F8 14 00 00 00                  MOV DWORD PTR [%EBP-8],#20
     3    %byte %integer %array FIRST  (1:1600)          ; ! low bound means auto array
 000B C7 45 E8 01 00 00 00                  MOV DWORD PTR [%EBP-24],#1
 0012 C7 45 EC 01 00 00 00                  MOV DWORD PTR [%EBP-20],#1
 0019 C7 45 F0 40 06 00 00                  MOV DWORD PTR [%EBP-16],#1600
 0020 C7 45 F4 2B 00 00 00                  MOV DWORD PTR [%EBP-12],#43
 0027 8D 45 E8                              LEA %EAX,[%EBP-24]
 002A 50                                    PUSH %EAX
 002B E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 002E 83 C4 04                              ADD %ESP,#4
 0031 8D 4D E8                              LEA %ECX,[%EBP-24]
 0034 89 E3                                 MOV %EBX,%ESP
 0036 29 D3                                 SUB %EBX,%EDX
 0038 89 5D E0                              MOV [%EBP-32],%EBX
 003B 89 4D E4                              MOV [%EBP-28],%ECX
 003E 01 C3                                 ADD %EBX,%EAX
 0040 81 E3 FC FF FF FF                     AND %EBX,#-4
 0046 89 DC                                 MOV %ESP,%EBX
     4    %byte %integer %array SECOND (Max Lines:1600)  ; ! non-literal-constant lower bound moves it over to being an own declaration
 0048 C7 45 D0 01 00 00 00                  MOV DWORD PTR [%EBP-48],#1
 004F 8B 45 F8                              MOV %EAX,[%EBP-8]
 0052 89 45 D4                              MOV [%EBP-44],%EAX
 0055 C7 45 D8 40 06 00 00                  MOV DWORD PTR [%EBP-40],#1600
 005C C7 45 DC 2B 00 00 00                  MOV DWORD PTR [%EBP-36],#43
 0063 8D 45 D0                              LEA %EAX,[%EBP-48]
 0066 50                                    PUSH %EAX
 0067 E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 006A 83 C4 04                              ADD %ESP,#4
 006D 8D 4D D0                              LEA %ECX,[%EBP-48]
 0070 89 E3                                 MOV %EBX,%ESP
 0072 29 D3                                 SUB %EBX,%EDX
 0074 89 5D C8                              MOV [%EBP-56],%EBX
 0077 89 4D CC                              MOV [%EBP-52],%ECX
 007A 01 C3                                 ADD %EBX,%EAX
 007C 81 E3 FC FF FF FF                     AND %EBX,#-4
 0082 89 DC                                 MOV %ESP,%EBX
     5                                                     ! - although it's an integer, it could have been a const integer - current
     6                                                     ! parser does not yet determine const expressions properly.
     7  %endofprogram
 0084 C9                                    LEAVE
 0085 C3                                    RET
?SECOND unused
?FIRST unused

     5 Statements compiled



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


