         Edinburgh IMP77 Compiler - Version 8.4-2024.12.18

     1  %begin
 0000 C8 00 00 01                           ENTER 0000,1
     2  
     3  %integer x
     4  %integername xp
     5  %integernamearray inra(0:9)
 0004 C7 45 E4 01 00 00 00                  MOV DWORD PTR [%EBP-28],#1
 000B C7 45 E8 00 00 00 00                  MOV DWORD PTR [%EBP-24],#0
 0012 C7 45 EC 09 00 00 00                  MOV DWORD PTR [%EBP-20],#9
 0019 C7 45 F0 83 00 00 00                  MOV DWORD PTR [%EBP-16],#131
 0020 8D 45 E4                              LEA %EAX,[%EBP-28]
 0023 50                                    PUSH %EAX
 0024 E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 0027 83 C4 04                              ADD %ESP,#4
 002A 8D 4D E4                              LEA %ECX,[%EBP-28]
 002D 89 E3                                 MOV %EBX,%ESP
 002F 29 D3                                 SUB %EBX,%EDX
 0031 89 5D DC                              MOV [%EBP-36],%EBX
 0034 89 4D E0                              MOV [%EBP-32],%ECX
 0037 01 C3                                 ADD %EBX,%EAX
 0039 89 DC                                 MOV %ESP,%EBX
     6  
     7  %routine test12(%integernamearrayname xinan1)
 003B EB 00                                 JMP L1001
 003D                      L1002  EQU $
 003D C8 00 00 02                           ENTER 0000,2
     8    xinan1(4) == xp
 0041 6A 04                                 PUSH #4
 0043 FF 75 0C                              PUSH DWORD PTR [%EBP+12]
 0046 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0049 83 C4 08                              ADD %ESP,#8
 004C 89 C6                                 MOV %ESI,%EAX
 004E 03 75 08                              ADD %ESI,[%EBP+8]
 0051 8B 7D FC                              MOV %EDI,[%EBP-4]
 0054 8B 47 F4                              MOV %EAX,[%EDI-12]
 0057 89 06                                 MOV [%ESI],%EAX
     9    xp == xinan1(4)
 0059 6A 04                                 PUSH #4
 005B FF 75 0C                              PUSH DWORD PTR [%EBP+12]
 005E E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0061 83 C4 08                              ADD %ESP,#8
 0064 89 C3                                 MOV %EBX,%EAX
 0066 03 5D 08                              ADD %EBX,[%EBP+8]
 0069 8B 75 FC                              MOV %ESI,[%EBP-4]
 006C 8B 1B                                 MOV %EBX,[%EBX]
 006E 89 5E F4                              MOV [%ESI-12],%EBX
    10    xinan1(4) == x
 0071 6A 04                                 PUSH #4
 0073 FF 75 0C                              PUSH DWORD PTR [%EBP+12]
 0076 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0079 83 C4 08                              ADD %ESP,#8
 007C 89 C7                                 MOV %EDI,%EAX
 007E 03 7D 08                              ADD %EDI,[%EBP+8]
 0081 8B 5D FC                              MOV %EBX,[%EBP-4]
 0084 8D 43 F8                              LEA %EAX,[%EBX-8]
 0087 89 07                                 MOV [%EDI],%EAX
    11    xinan1(4) = x
 0089 6A 04                                 PUSH #4
 008B FF 75 0C                              PUSH DWORD PTR [%EBP+12]
 008E E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0091 83 C4 08                              ADD %ESP,#8
 0094 89 C6                                 MOV %ESI,%EAX
 0096 03 75 08                              ADD %ESI,[%EBP+8]
 0099 8B 36                                 MOV %ESI,[%ESI]
 009B 8B 7D FC                              MOV %EDI,[%EBP-4]
 009E 8B 47 F8                              MOV %EAX,[%EDI-8]
 00A1 89 06                                 MOV [%ESI],%EAX
    12    x = xinan1(4)
 00A3 6A 04                                 PUSH #4
 00A5 FF 75 0C                              PUSH DWORD PTR [%EBP+12]
 00A8 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 00AB 83 C4 08                              ADD %ESP,#8
 00AE 89 C3                                 MOV %EBX,%EAX
 00B0 03 5D 08                              ADD %EBX,[%EBP+8]
 00B3 8B 75 FC                              MOV %ESI,[%EBP-4]
 00B6 8B 1B                                 MOV %EBX,[%EBX]
 00B8 8B 1B                                 MOV %EBX,[%EBX]
 00BA 89 5E F8                              MOV [%ESI-8],%EBX
    13  %end
 00BD C9                                    LEAVE
 00BE C3                                    RET
 00BF                      L1001  EQU $
    14  
    15  inra(4) == x
 00BF 6A 04                                 PUSH #4
 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 8D 45 F8                              LEA %EAX,[%EBP-8]
 00D2 89 07                                 MOV [%EDI],%EAX
    16  test12(inra)
 00D4 FF 75 E0                              PUSH DWORD PTR [%EBP-32]
 00D7 FF 75 DC                              PUSH DWORD PTR [%EBP-36]
 00DA E8 00 00                              CALL 'TEST12' (INTERNAL L1002 )
 00DD 83 C4 08                              ADD %ESP,#8
    17  
    18  %endofprogram
 00E0 C9                                    LEAVE
 00E1 C3                                    RET

    14 Statements compiled



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


