         Edinburgh IMP77 Compiler - Version 8.4-2024.12.18

     1  %Constant %Integer  CB1   = 1
     2  %Constant %Integer  CB2   = 2
     3  %Constant %Integer  CInt1 = CB1 + 3 * 4
     4  %Constant %Integer  CInt2 = CInt1 + CB2 + 321
     5  %Constant %Integer  CInt4 = 4
     6  %Constant %Integer  MInt1 = M'X'
     7  %Constant %Integer  MInt2 = M'IMP'
     8  %begin
 0000 C8 00 00 01                           ENTER 0000,1
     9    %integer I
    10    I = CB1
 0004 C7 45 F8 01 00 00 00                  MOV DWORD PTR [%EBP-8],#1
    11    I = CB2
 000B C7 45 F8 02 00 00 00                  MOV DWORD PTR [%EBP-8],#2
    12    I = CInt1
 0012 C7 45 F8 0D 00 00 00                  MOV DWORD PTR [%EBP-8],#13
    13    I = CInt2
 0019 C7 45 F8 50 01 00 00                  MOV DWORD PTR [%EBP-8],#336
    14    I = CInt4
 0020 C7 45 F8 04 00 00 00                  MOV DWORD PTR [%EBP-8],#4
    15    I = MInt1
 0027 C7 45 F8 58 00 00 00                  MOV DWORD PTR [%EBP-8],#88
    16    I = MInt2
 002E C7 45 F8 50 4D 49 00                  MOV DWORD PTR [%EBP-8],#4803920
    17  
    18    I = CB1 + I
 0035 8B 45 F8                              MOV %EAX,[%EBP-8]
 0038 40                                    INC %EAX
 0039 89 45 F8                              MOV [%EBP-8],%EAX
    19    I = CB2 + I
 003C 8B 45 F8                              MOV %EAX,[%EBP-8]
 003F 05 02 00 00 00                        ADD %EAX,#2
 0044 89 45 F8                              MOV [%EBP-8],%EAX
    20    I = CInt1 + I
 0047 8B 45 F8                              MOV %EAX,[%EBP-8]
 004A 05 0D 00 00 00                        ADD %EAX,#13
 004F 89 45 F8                              MOV [%EBP-8],%EAX
    21    I = CInt2 + I
 0052 8B 45 F8                              MOV %EAX,[%EBP-8]
 0055 05 50 01 00 00                        ADD %EAX,#336
 005A 89 45 F8                              MOV [%EBP-8],%EAX
    22    I = CInt4 + I
 005D 8B 45 F8                              MOV %EAX,[%EBP-8]
 0060 05 04 00 00 00                        ADD %EAX,#4
 0065 89 45 F8                              MOV [%EBP-8],%EAX
    23    I = MInt1 + I
 0068 8B 45 F8                              MOV %EAX,[%EBP-8]
 006B 05 58 00 00 00                        ADD %EAX,#88
 0070 89 45 F8                              MOV [%EBP-8],%EAX
    24    I = MInt2 + I
 0073 8B 45 F8                              MOV %EAX,[%EBP-8]
 0076 05 50 4D 49 00                        ADD %EAX,#4803920
 007B 89 45 F8                              MOV [%EBP-8],%EAX
    25  
    26    Write(CB1, 0); newline
 007E 6A 01                                 PUSH #1
 0080 6A 00                                 PUSH #0
 0082 E8 40 00                              CALL 'WRITE' (EXTERN 64)
 0085 83 C4 08                              ADD %ESP,#8
 0088 E8 43 00                              CALL 'NEWLINE' (EXTERN 67)
    27    Write(CB2, 0); newline
 008B 6A 02                                 PUSH #2
 008D 6A 00                                 PUSH #0
 008F E8 40 00                              CALL 'WRITE' (EXTERN 64)
 0092 83 C4 08                              ADD %ESP,#8
 0095 E8 43 00                              CALL 'NEWLINE' (EXTERN 67)
    28    Write(CInt1, 0); newline
 0098 6A 0D                                 PUSH #13
 009A 6A 00                                 PUSH #0
 009C E8 40 00                              CALL 'WRITE' (EXTERN 64)
 009F 83 C4 08                              ADD %ESP,#8
 00A2 E8 43 00                              CALL 'NEWLINE' (EXTERN 67)
    29    Write(CInt2, 0); newline
 00A5 68 50 01 00 00                        PUSH #336
 00AA 6A 00                                 PUSH #0
 00AC E8 40 00                              CALL 'WRITE' (EXTERN 64)
 00AF 83 C4 08                              ADD %ESP,#8
 00B2 E8 43 00                              CALL 'NEWLINE' (EXTERN 67)
    30    Write(CInt4, 0); newline
 00B5 6A 04                                 PUSH #4
 00B7 6A 00                                 PUSH #0
 00B9 E8 40 00                              CALL 'WRITE' (EXTERN 64)
 00BC 83 C4 08                              ADD %ESP,#8
 00BF E8 43 00                              CALL 'NEWLINE' (EXTERN 67)
    31    Write(MInt1, 0); newline
 00C2 6A 58                                 PUSH #88
 00C4 6A 00                                 PUSH #0
 00C6 E8 40 00                              CALL 'WRITE' (EXTERN 64)
 00C9 83 C4 08                              ADD %ESP,#8
 00CC E8 43 00                              CALL 'NEWLINE' (EXTERN 67)
    32    Write(MInt2, 0); newline
 00CF 68 50 4D 49 00                        PUSH #4803920
 00D4 6A 00                                 PUSH #0
 00D6 E8 40 00                              CALL 'WRITE' (EXTERN 64)
 00D9 83 C4 08                              ADD %ESP,#8
 00DC E8 43 00                              CALL 'NEWLINE' (EXTERN 67)
    33  
    34  %endofprogram
 00DF C9                                    LEAVE
 00E0 C3                                    RET

    38 Statements compiled



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


