         Edinburgh IMP77 Compiler - Version 8.4-2024.12.18

     1  %BEGIN
 0000 C8 00 00 01                           ENTER 0000,1
     2    %INTEGERARRAY OK, BAD(1:2)    ;! first array name is declared OK, second isn't
 0004 C7 45 EC 01 00 00 00                  MOV DWORD PTR [%EBP-20],#1
 000B C7 45 F0 01 00 00 00                  MOV DWORD PTR [%EBP-16],#1
 0012 C7 45 F4 02 00 00 00                  MOV DWORD PTR [%EBP-12],#2
 0019 C7 45 F8 83 00 00 00                  MOV DWORD PTR [%EBP-8],#131
 0020 8D 45 EC                              LEA %EAX,[%EBP-20]
 0023 50                                    PUSH %EAX
 0024 E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 0027 83 C4 04                              ADD %ESP,#4
 002A 8D 4D EC                              LEA %ECX,[%EBP-20]
 002D 89 E3                                 MOV %EBX,%ESP
 002F 29 D3                                 SUB %EBX,%EDX
 0031 89 5D E4                              MOV [%EBP-28],%EBX
 0034 89 4D E8                              MOV [%EBP-24],%ECX
 0037 01 C3                                 ADD %EBX,%EAX
 0039 29 D3                                 SUB %EBX,%EDX
 003B 89 5D DC                              MOV [%EBP-36],%EBX
 003E 89 4D E0                              MOV [%EBP-32],%ECX
 0041 01 C3                                 ADD %EBX,%EAX
 0043 89 DC                                 MOV %ESP,%EBX
     3    %INTEGER I,J
     4    J = 1
 0045 C7 45 D4 01 00 00 00                  MOV DWORD PTR [%EBP-44],#1
     5    I = OK(J) + BAD(J)
 004C FF 75 D4                              PUSH DWORD PTR [%EBP-44]
 004F FF 75 E8                              PUSH DWORD PTR [%EBP-24]
 0052 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0055 83 C4 08                              ADD %ESP,#8
 0058 89 C6                                 MOV %ESI,%EAX
 005A 03 75 E4                              ADD %ESI,[%EBP-28]
 005D FF 75 D4                              PUSH DWORD PTR [%EBP-44]
 0060 FF 75 E0                              PUSH DWORD PTR [%EBP-32]
 0063 89 75 D0                              MOV [%EBP-48],%ESI
 0066 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0069 83 C4 08                              ADD %ESP,#8
 006C 89 C7                                 MOV %EDI,%EAX
 006E 03 7D DC                              ADD %EDI,[%EBP-36]
 0071 8B 5D D0                              MOV %EBX,[%EBP-48]
 0074 8B 03                                 MOV %EAX,[%EBX]
 0076 03 07                                 ADD %EAX,[%EDI]
 0078 89 45 D8                              MOV [%EBP-40],%EAX
     6    I = OK(J) * BAD(1)
 007B FF 75 D4                              PUSH DWORD PTR [%EBP-44]
 007E FF 75 E8                              PUSH DWORD PTR [%EBP-24]
 0081 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0084 83 C4 08                              ADD %ESP,#8
 0087 89 C6                                 MOV %ESI,%EAX
 0089 03 75 E4                              ADD %ESI,[%EBP-28]
 008C 6A 01                                 PUSH #1
 008E FF 75 E0                              PUSH DWORD PTR [%EBP-32]
 0091 89 75 CC                              MOV [%EBP-52],%ESI
 0094 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0097 83 C4 08                              ADD %ESP,#8
 009A 89 C7                                 MOV %EDI,%EAX
 009C 03 7D DC                              ADD %EDI,[%EBP-36]
 009F 8B 5D CC                              MOV %EBX,[%EBP-52]
 00A2 8B 03                                 MOV %EAX,[%EBX]
 00A4 F7 2F                                 IMUL DWORD PTR [%EDI]
 00A6 89 45 D8                              MOV [%EBP-40],%EAX
     7    I = BAD(J)
 00A9 FF 75 D4                              PUSH DWORD PTR [%EBP-44]
 00AC FF 75 E0                              PUSH DWORD PTR [%EBP-32]
 00AF E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 00B2 83 C4 08                              ADD %ESP,#8
 00B5 89 C6                                 MOV %ESI,%EAX
 00B7 03 75 DC                              ADD %ESI,[%EBP-36]
 00BA 8B 36                                 MOV %ESI,[%ESI]
 00BC 89 75 D8                              MOV [%EBP-40],%ESI
     8    I = BAD(1)
 00BF 6A 01                                 PUSH #1
 00C1 FF 75 E0                              PUSH DWORD PTR [%EBP-32]
 00C4 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 00C7 83 C4 08                              ADD %ESP,#8
 00CA 89 C7                                 MOV %EDI,%EAX
 00CC 03 7D DC                              ADD %EDI,[%EBP-36]
 00CF 8B 3F                                 MOV %EDI,[%EDI]
 00D1 89 7D D8                              MOV [%EBP-40],%EDI
     9  %ENDOFPROGRAM
 00D4 C9                                    LEAVE
 00D5 C3                                    RET

     9 Statements compiled



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


