         Edinburgh IMP77 Compiler - Version 8.4-2024.12.18

     1  %begin
 0000 C8 00 00 01                           ENTER 0000,1
     2    %routine read sym
 0004 EB 00                                 JMP L1001
 0006                      L1002  EQU $
 0006 C8 00 00 02                           ENTER 0000,2
     3    %end
 000A C9                                    LEAVE
 000B C3                                    RET
 000C                      L1001  EQU $
     4    %integer bp
     5    %integer sym, symtype
     6    %byteintegerarray buff(0:255)
 000C C7 45 E0 01 00 00 00                  MOV DWORD PTR [%EBP-32],#1
 0013 C7 45 E4 00 00 00 00                  MOV DWORD PTR [%EBP-28],#0
 001A C7 45 E8 FF 00 00 00                  MOV DWORD PTR [%EBP-24],#255
 0021 C7 45 EC 2B 00 00 00                  MOV DWORD PTR [%EBP-20],#43
 0028 8D 45 E0                              LEA %EAX,[%EBP-32]
 002B 50                                    PUSH %EAX
 002C E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 002F 83 C4 04                              ADD %ESP,#4
 0032 8D 4D E0                              LEA %ECX,[%EBP-32]
 0035 89 E3                                 MOV %EBX,%ESP
 0037 29 D3                                 SUB %EBX,%EDX
 0039 89 5D D8                              MOV [%EBP-40],%EBX
 003C 89 4D DC                              MOV [%EBP-36],%ECX
 003F 01 C3                                 ADD %EBX,%EAX
 0041 81 E3 FC FF FF FF                     AND %EBX,#-4
 0047 89 DC                                 MOV %ESP,%EBX
     7    
     8        %CYCLE
 0049                      L1003  EQU $
     9          bp=bp+1 %AND buff(bp)=sym
 0049 FF 45 F8                              INC DWORD PTR [%EBP-8]
 004C FF 75 F8                              PUSH DWORD PTR [%EBP-8]
 004F FF 75 DC                              PUSH DWORD PTR [%EBP-36]
 0052 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0055 83 C4 08                              ADD %ESP,#8
 0058 89 C6                                 MOV %ESI,%EAX
 005A 03 75 D8                              ADD %ESI,[%EBP-40]
 005D 8B 45 F4                              MOV %EAX,[%EBP-12]
 0060 88 06                                 MOV [%ESI],%AL
    10          read sym
 0062 E8 00 00                              CALL 'READSYM' (INTERNAL L1002 )
    11          %EXIT %IF symtype >= 0;                !pull in letters and digits
 0065 8B 45 F0                              MOV %EAX,[%EBP-16]
 0068 3D 00 00 00 00                        CMP %EAX,#0
 006D 7C 00                                 JL L1004
 006F EB 00                                 JMP L1005
 0071                      L1004  EQU $
    12        %REPEAT
 0071 EB 00                                 JMP L1003
 0073                      L1005  EQU $
    13  
    14  !      for (;;) {
    15  !        { BP = BP + 1; ���� = SYM; }
    16  !        READSYM();
    17  !        if (SYMTYPE >= 0) break;
    18  !      }
    19  
    20  %endofprogram
 0073 C9                                    LEAVE
 0074 C3                                    RET

    12 Statements compiled



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


