         Edinburgh IMP77 Compiler - Version 8.4-2024.12.18

     1  %begin
 0000 C8 00 00 01                           ENTER 0000,1
     2  
     3  %integer x
     4  
     5  %routine test7(%integerarrayname xran1)
 0004 EB 00                                 JMP L1001
 0006                      L1002  EQU $
 0006 C8 00 00 02                           ENTER 0000,2
     6    xran1(4) = x
 000A 6A 04                                 PUSH #4
 000C FF 75 0C                              PUSH DWORD PTR [%EBP+12]
 000F E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0012 83 C4 08                              ADD %ESP,#8
 0015 89 C6                                 MOV %ESI,%EAX
 0017 03 75 08                              ADD %ESI,[%EBP+8]
 001A 8B 7D FC                              MOV %EDI,[%EBP-4]
 001D 8B 47 F8                              MOV %EAX,[%EDI-8]
 0020 89 06                                 MOV [%ESI],%EAX
     7    x = xran1(4)
 0022 6A 04                                 PUSH #4
 0024 FF 75 0C                              PUSH DWORD PTR [%EBP+12]
 0027 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 002A 83 C4 08                              ADD %ESP,#8
 002D 89 C3                                 MOV %EBX,%EAX
 002F 03 5D 08                              ADD %EBX,[%EBP+8]
 0032 8B 75 FC                              MOV %ESI,[%EBP-4]
 0035 8B 1B                                 MOV %EBX,[%EBX]
 0037 89 5E F8                              MOV [%ESI-8],%EBX
     8  %end
 003A C9                                    LEAVE
 003B C3                                    RET
 003C                      L1001  EQU $
     9  
    10  %integerarray ra(0:9)
 003C C7 45 E8 01 00 00 00                  MOV DWORD PTR [%EBP-24],#1
 0043 C7 45 EC 00 00 00 00                  MOV DWORD PTR [%EBP-20],#0
 004A C7 45 F0 09 00 00 00                  MOV DWORD PTR [%EBP-16],#9
 0051 C7 45 F4 83 00 00 00                  MOV DWORD PTR [%EBP-12],#131
 0058 8D 45 E8                              LEA %EAX,[%EBP-24]
 005B 50                                    PUSH %EAX
 005C E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 005F 83 C4 04                              ADD %ESP,#4
 0062 8D 4D E8                              LEA %ECX,[%EBP-24]
 0065 89 E3                                 MOV %EBX,%ESP
 0067 29 D3                                 SUB %EBX,%EDX
 0069 89 5D E0                              MOV [%EBP-32],%EBX
 006C 89 4D E4                              MOV [%EBP-28],%ECX
 006F 01 C3                                 ADD %EBX,%EAX
 0071 89 DC                                 MOV %ESP,%EBX
    11  test7(ra)
 0073 FF 75 E4                              PUSH DWORD PTR [%EBP-28]
 0076 FF 75 E0                              PUSH DWORD PTR [%EBP-32]
 0079 E8 00 00                              CALL 'TEST7' (INTERNAL L1002 )
 007C 83 C4 08                              ADD %ESP,#8
    12  
    13  %endofprogram
 007F C9                                    LEAVE
 0080 C3                                    RET

     9 Statements compiled



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


