         Edinburgh IMP77 Compiler - Version 8.4-2024.12.18

     1  %begin
 0000 C8 00 00 01                           ENTER 0000,1
     2    %integer i,j,k,l,m,n
     3    %routine r
 0004 EB 00                                 JMP L1001
 0006                      L1002  EQU $
 0006 C8 00 00 02                           ENTER 0000,2
     4      %integer j,k,l,m,n
     5      %routine r
 000A EB 00                                 JMP L1003
 000C                      L1004  EQU $
 000C C8 00 00 03                           ENTER 0000,3
     6        %integer k,l,m,n
     7        %routine r
 0010 EB 00                                 JMP L1005
 0012                      L1006  EQU $
 0012 C8 00 00 04                           ENTER 0000,4
     8          %integer l,m,n
     9          %routine r
 0016 EB 00                                 JMP L1007
 0018                      L1008  EQU $
 0018 C8 00 00 05                           ENTER 0000,5
    10            %integer m,n
    11            r
 001C E8 00 00                              CALL 'R' (INTERNAL L1008 )
    12            %routine r
 001F EB 00                                 JMP L1009
 0021                      L1010  EQU $
 0021 C8 00 00 06                           ENTER 0000,6
    13              %integer n
    14              i = j
 0025 8B 75 FC                              MOV %ESI,[%EBP-4]
 0028 8B 7D F8                              MOV %EDI,[%EBP-8]
 002B 8B 47 F4                              MOV %EAX,[%EDI-12]
 002E 89 46 F8                              MOV [%ESI-8],%EAX
    15              j = k
 0031 8B 5D F4                              MOV %EBX,[%EBP-12]
 0034 8B 43 F0                              MOV %EAX,[%EBX-16]
 0037 89 47 F4                              MOV [%EDI-12],%EAX
    16              k = l
 003A 8B 75 F0                              MOV %ESI,[%EBP-16]
 003D 8B 46 EC                              MOV %EAX,[%ESI-20]
 0040 89 43 F0                              MOV [%EBX-16],%EAX
    17              l = m
 0043 8B 7D EC                              MOV %EDI,[%EBP-20]
 0046 8B 47 E8                              MOV %EAX,[%EDI-24]
 0049 89 46 EC                              MOV [%ESI-20],%EAX
    18              m = n
 004C 8B 45 E4                              MOV %EAX,[%EBP-28]
 004F 89 47 E8                              MOV [%EDI-24],%EAX
    19              n = 1
 0052 C7 45 E4 01 00 00 00                  MOV DWORD PTR [%EBP-28],#1
    20            %end
 0059 C9                                    LEAVE
 005A C3                                    RET
 005B                      L1009  EQU $
    21            r
    22            i = j
 005B E8 00 00                              CALL 'R' (INTERNAL L1010 )
 005E 8B 5D FC                              MOV %EBX,[%EBP-4]
 0061 8B 75 F8                              MOV %ESI,[%EBP-8]
 0064 8B 46 F4                              MOV %EAX,[%ESI-12]
 0067 89 43 F8                              MOV [%EBX-8],%EAX
    23            j = k
 006A 8B 7D F4                              MOV %EDI,[%EBP-12]
 006D 8B 47 F0                              MOV %EAX,[%EDI-16]
 0070 89 46 F4                              MOV [%ESI-12],%EAX
    24            k = l
 0073 8B 5D F0                              MOV %EBX,[%EBP-16]
 0076 8B 43 EC                              MOV %EAX,[%EBX-20]
 0079 89 47 F0                              MOV [%EDI-16],%EAX
    25            l = m
 007C 8B 45 E8                              MOV %EAX,[%EBP-24]
 007F 89 43 EC                              MOV [%EBX-20],%EAX
    26            m = n
 0082 8B 45 E4                              MOV %EAX,[%EBP-28]
 0085 89 45 E8                              MOV [%EBP-24],%EAX
    27            n = 1
 0088 C7 45 E4 01 00 00 00                  MOV DWORD PTR [%EBP-28],#1
    28          %end
 008F C9                                    LEAVE
 0090 C3                                    RET
 0091                      L1007  EQU $
    29          i = j
    30          j = k
 0091 8B 75 FC                              MOV %ESI,[%EBP-4]
 0094 8B 7D F8                              MOV %EDI,[%EBP-8]
 0097 8B 47 F4                              MOV %EAX,[%EDI-12]
 009A 89 46 F8                              MOV [%ESI-8],%EAX
 009D 8B 5D F4                              MOV %EBX,[%EBP-12]
 00A0 8B 43 F0                              MOV %EAX,[%EBX-16]
 00A3 89 47 F4                              MOV [%EDI-12],%EAX
    31          k = l
 00A6 8B 45 EC                              MOV %EAX,[%EBP-20]
 00A9 89 43 F0                              MOV [%EBX-16],%EAX
    32          l = m
 00AC 8B 45 E8                              MOV %EAX,[%EBP-24]
 00AF 89 45 EC                              MOV [%EBP-20],%EAX
    33          m = n
 00B2 8B 45 E4                              MOV %EAX,[%EBP-28]
 00B5 89 45 E8                              MOV [%EBP-24],%EAX
    34          n = 1
 00B8 C7 45 E4 01 00 00 00                  MOV DWORD PTR [%EBP-28],#1
    35        %end
 00BF C9                                    LEAVE
 00C0 C3                                    RET
 00C1                      L1005  EQU $
    36        i = j
    37        j = k
 00C1 8B 75 FC                              MOV %ESI,[%EBP-4]
 00C4 8B 7D F8                              MOV %EDI,[%EBP-8]
 00C7 8B 47 F4                              MOV %EAX,[%EDI-12]
 00CA 89 46 F8                              MOV [%ESI-8],%EAX
 00CD 8B 45 F0                              MOV %EAX,[%EBP-16]
 00D0 89 47 F4                              MOV [%EDI-12],%EAX
    38        k = l
 00D3 8B 45 EC                              MOV %EAX,[%EBP-20]
 00D6 89 45 F0                              MOV [%EBP-16],%EAX
    39        l = m
 00D9 8B 45 E8                              MOV %EAX,[%EBP-24]
 00DC 89 45 EC                              MOV [%EBP-20],%EAX
    40        m = n
 00DF 8B 45 E4                              MOV %EAX,[%EBP-28]
 00E2 89 45 E8                              MOV [%EBP-24],%EAX
    41        n = 1
 00E5 C7 45 E4 01 00 00 00                  MOV DWORD PTR [%EBP-28],#1
    42      %end
 00EC C9                                    LEAVE
 00ED C3                                    RET
 00EE                      L1003  EQU $
?R unused
    43      i = j
    44      j = k
 00EE 8B 5D FC                              MOV %EBX,[%EBP-4]
 00F1 8B 45 F4                              MOV %EAX,[%EBP-12]
 00F4 89 43 F8                              MOV [%EBX-8],%EAX
 00F7 8B 45 F0                              MOV %EAX,[%EBP-16]
 00FA 89 45 F4                              MOV [%EBP-12],%EAX
    45      k = l
 00FD 8B 45 EC                              MOV %EAX,[%EBP-20]
 0100 89 45 F0                              MOV [%EBP-16],%EAX
    46      l = m
 0103 8B 45 E8                              MOV %EAX,[%EBP-24]
 0106 89 45 EC                              MOV [%EBP-20],%EAX
    47      m = n
 0109 8B 45 E4                              MOV %EAX,[%EBP-28]
 010C 89 45 E8                              MOV [%EBP-24],%EAX
    48      n = 1
 010F C7 45 E4 01 00 00 00                  MOV DWORD PTR [%EBP-28],#1
    49    %end
 0116 C9                                    LEAVE
 0117 C3                                    RET
 0118                      L1001  EQU $
?R unused
    50    i = j
    51    j = k
 0118 8B 45 F4                              MOV %EAX,[%EBP-12]
 011B 89 45 F8                              MOV [%EBP-8],%EAX
 011E 8B 45 F0                              MOV %EAX,[%EBP-16]
 0121 89 45 F4                              MOV [%EBP-12],%EAX
    52    k = l
 0124 8B 45 EC                              MOV %EAX,[%EBP-20]
 0127 89 45 F0                              MOV [%EBP-16],%EAX
    53    l = m
 012A 8B 45 E8                              MOV %EAX,[%EBP-24]
 012D 89 45 EC                              MOV [%EBP-20],%EAX
    54    m = n
 0130 8B 45 E4                              MOV %EAX,[%EBP-28]
 0133 89 45 E8                              MOV [%EBP-24],%EAX
    55    n = 1
 0136 C7 45 E4 01 00 00 00                  MOV DWORD PTR [%EBP-28],#1
    56  %endofprogram
 013D C9                                    LEAVE
 013E C3                                    RET
?R unused

    56 Statements compiled



 ELF object file generated from IMP source file: '/home/gtoal/src/compilers101/new-parser/imps/tests/test29.imp'
 +----------+---------------------+---------+---------+---------+------------+
 | Sections |       Symbols       | Code    | Data    | Diag    | Total size |
 +----------+----------+----------+---------+---------+---------+------------+
 |  (count) | Internal | External | (bytes) | (bytes) | (bytes) | (bytes)    |
 +----------+----------+----------+---------+---------+---------+------------+
 |       11 |        9 |        6 |     335 |       0 |     192 |        527 |
 +----------+----------+----------+---------+---------+---------+------------+


