         Edinburgh IMP77 Compiler - Version 8.4-2024.12.18

     1  %externalroutine toplev
 0000                      L1000  EQU $
 0000 C8 00 00 01                           ENTER 0000,1
     2    %longreal lr1
     3    %integer i, i1 = 1, i2 = 2, i3 = 3
 0004 C7 45 EC 01 00 00 00                  MOV DWORD PTR [%EBP-20],#1
 000B C7 45 E8 02 00 00 00                  MOV DWORD PTR [%EBP-24],#2
 0012 C7 45 E4 03 00 00 00                  MOV DWORD PTR [%EBP-28],#3
     4  
     5    i = i1 %if i2 = i3
 0019 8B 45 E8                              MOV %EAX,[%EBP-24]
 001C 3B 45 E4                              CMP %EAX,[%EBP-28]
 001F 75 00                                 JNE L1001
 0021 8B 45 EC                              MOV %EAX,[%EBP-20]
 0024 89 45 F0                              MOV [%EBP-16],%EAX
 0027                      L1001  EQU $
     6  %comment  i = i1 %if i2 = i3
     7    i = i1 %while i2 = i3
 0027                      L1002  EQU $
 0027 8B 45 E8                              MOV %EAX,[%EBP-24]
 002A 3B 45 E4                              CMP %EAX,[%EBP-28]
 002D 75 00                                 JNE L1003
 002F 8B 45 EC                              MOV %EAX,[%EBP-20]
 0032 89 45 F0                              MOV [%EBP-16],%EAX
 0035 EB 00                                 JMP L1002
 0037                      L1003  EQU $
     8  %comment  i = i1 %while i2 = i3
     9    i = i1 %until i2 = i3
 0037                      L1004  EQU $
 0037 8B 45 EC                              MOV %EAX,[%EBP-20]
 003A 89 45 F0                              MOV [%EBP-16],%EAX
 003D 8B 45 E8                              MOV %EAX,[%EBP-24]
 0040 3B 45 E4                              CMP %EAX,[%EBP-28]
 0043 74 00                                 JE L1005
 0045 EB 00                                 JMP L1004
 0047                      L1005  EQU $
    10  %comment  i = i1 %until i2 = i3
    11    i = i1 %unless i2 = i3
 0047 8B 45 E8                              MOV %EAX,[%EBP-24]
 004A 3B 45 E4                              CMP %EAX,[%EBP-28]
 004D 74 00                                 JE L1006
 004F 8B 45 EC                              MOV %EAX,[%EBP-20]
 0052 89 45 F0                              MOV [%EBP-16],%EAX
 0055                      L1006  EQU $
    12  %comment  i = i1 %unless i2 = i3
    13    i = i1 %for i2 = i3, 1, i1
 0055 8B 45 EC                              MOV %EAX,[%EBP-20]
 0058 89 45 E0                              MOV [%EBP-32],%EAX
 005B 8B 45 E4                              MOV %EAX,[%EBP-28]
 005E 48                                    DEC %EAX
 005F 89 45 E8                              MOV [%EBP-24],%EAX
 0062                      L1007  EQU $
 0062 8B 45 E8                              MOV %EAX,[%EBP-24]
 0065 3B 45 E0                              CMP %EAX,[%EBP-32]
 0068 74 00                                 JE L1008
 006A 40                                    INC %EAX
 006B 89 45 E8                              MOV [%EBP-24],%EAX
 006E 8B 45 EC                              MOV %EAX,[%EBP-20]
 0071 89 45 F0                              MOV [%EBP-16],%EAX
 0074 EB 00                                 JMP L1007
 0076                      L1008  EQU $
    14  %comment  i = i1 %for i2 = i3, 1, i1
    15            
    16  %comment          
    17    i = i1 %and i1 = i2 %if i2 = i3
 0076 8B 45 E8                              MOV %EAX,[%EBP-24]
 0079 3B 45 E4                              CMP %EAX,[%EBP-28]
 007C 75 00                                 JNE L1009
 007E 8B 45 EC                              MOV %EAX,[%EBP-20]
 0081 89 45 F0                              MOV [%EBP-16],%EAX
 0084 8B 45 E8                              MOV %EAX,[%EBP-24]
 0087 89 45 EC                              MOV [%EBP-20],%EAX
 008A                      L1009  EQU $
    18  %comment  i = i1 %and i1 = i2 %if i2 = i3
    19    i = i1 %and i1 = i2 %while i2 = i3
 008A                      L1010  EQU $
 008A 8B 45 E8                              MOV %EAX,[%EBP-24]
 008D 3B 45 E4                              CMP %EAX,[%EBP-28]
 0090 75 00                                 JNE L1011
 0092 8B 45 EC                              MOV %EAX,[%EBP-20]
 0095 89 45 F0                              MOV [%EBP-16],%EAX
 0098 8B 45 E8                              MOV %EAX,[%EBP-24]
 009B 89 45 EC                              MOV [%EBP-20],%EAX
 009E EB 00                                 JMP L1010
 00A0                      L1011  EQU $
    20  %comment  i = i1 %and i1 = i2 %while i2 = i3
    21    i = i1 %and i1 = i2 %until i2 = i3
 00A0                      L1012  EQU $
 00A0 8B 45 EC                              MOV %EAX,[%EBP-20]
 00A3 89 45 F0                              MOV [%EBP-16],%EAX
 00A6 8B 45 E8                              MOV %EAX,[%EBP-24]
 00A9 89 45 EC                              MOV [%EBP-20],%EAX
 00AC 8B 45 E8                              MOV %EAX,[%EBP-24]
 00AF 3B 45 E4                              CMP %EAX,[%EBP-28]
 00B2 74 00                                 JE L1013
 00B4 EB 00                                 JMP L1012
 00B6                      L1013  EQU $
    22  %comment  i = i1 %and i1 = i2 %until i2 = i3
    23    i = i1 %and i1 = i2 %unless i2 = i3
 00B6 8B 45 E8                              MOV %EAX,[%EBP-24]
 00B9 3B 45 E4                              CMP %EAX,[%EBP-28]
 00BC 74 00                                 JE L1014
 00BE 8B 45 EC                              MOV %EAX,[%EBP-20]
 00C1 89 45 F0                              MOV [%EBP-16],%EAX
 00C4 8B 45 E8                              MOV %EAX,[%EBP-24]
 00C7 89 45 EC                              MOV [%EBP-20],%EAX
 00CA                      L1014  EQU $
    24  %comment  i = i1 %and i1 = i2 %unless i2 = i3
    25    i = i1 %and i1 = i2 %for i2 = i3, 1, i1
 00CA 8B 45 EC                              MOV %EAX,[%EBP-20]
 00CD 89 45 DC                              MOV [%EBP-36],%EAX
 00D0 8B 45 E4                              MOV %EAX,[%EBP-28]
 00D3 48                                    DEC %EAX
 00D4 89 45 E8                              MOV [%EBP-24],%EAX
 00D7                      L1015  EQU $
 00D7 8B 45 E8                              MOV %EAX,[%EBP-24]
 00DA 3B 45 DC                              CMP %EAX,[%EBP-36]
 00DD 74 00                                 JE L1016
 00DF 40                                    INC %EAX
 00E0 89 45 E8                              MOV [%EBP-24],%EAX
 00E3 8B 45 EC                              MOV %EAX,[%EBP-20]
 00E6 89 45 F0                              MOV [%EBP-16],%EAX
 00E9 8B 45 E8                              MOV %EAX,[%EBP-24]
 00EC 89 45 EC                              MOV [%EBP-20],%EAX
 00EF EB 00                                 JMP L1015
 00F1                      L1016  EQU $
    26  %comment  i = i1 %and i1 = i2 %for i2 = i3, 1, i1
    27            
    28  %end
 00F1 C9                                    LEAVE
 00F2 C3                                    RET
?LR1 unused
    29  %endoffile

    15 Statements compiled



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


