         Edinburgh IMP77 Compiler - Version 8.4-2024.12.18

     1        %EXTERNALINTEGERFN IAND(%INTEGERNAME A,B)
 0000                      L1000  EQU $
 0000 C8 00 00 01                           ENTER 0000,1
     2        %RESULT=A&B
 0004 8B 75 0C                              MOV %ESI,[%EBP+12]
 0007 8B 06                                 MOV %EAX,[%ESI]
 0009 8B 7D 08                              MOV %EDI,[%EBP+8]
 000C 23 07                                 AND %EAX,[%EDI]
 000E C9                                    LEAVE
 000F C3                                    RET
     3        %END
     4        %EXTERNALINTEGERFN IOR(%INTEGERNAME A,B)
     5        %RESULT=A!B
 0010                      L1001  EQU $
 0010 C8 00 00 01                           ENTER 0000,1
 0014 8B 5D 0C                              MOV %EBX,[%EBP+12]
 0017 8B 03                                 MOV %EAX,[%EBX]
 0019 8B 75 08                              MOV %ESI,[%EBP+8]
 001C 0B 06                                 OR %EAX,[%ESI]
 001E C9                                    LEAVE
 001F C3                                    RET
     6        %END
     7        %EXTERNALINTEGERFN IEOR(%INTEGERNAME A,B)
     8        %RESULT=A!!B
 0020                      L1002  EQU $
 0020 C8 00 00 01                           ENTER 0000,1
 0024 8B 7D 0C                              MOV %EDI,[%EBP+12]
 0027 8B 07                                 MOV %EAX,[%EDI]
 0029 8B 5D 08                              MOV %EBX,[%EBP+8]
 002C 33 03                                 XOR %EAX,[%EBX]
 002E C9                                    LEAVE
 002F C3                                    RET
     9        %END
    10        %EXTERNALINTEGERFN NOT(%INTEGERNAME A)
    11        %RESULT=\A
 0030                      L1003  EQU $
 0030 C8 00 00 01                           ENTER 0000,1
 0034 8B 75 08                              MOV %ESI,[%EBP+8]
 0037 8B 06                                 MOV %EAX,[%ESI]
 0039 F7 D0                                 NOT %EAX
 003B C9                                    LEAVE
 003C C3                                    RET
    12        %END
    13        %EXTERNALINTEGERFN ISHFT(%INTEGERNAME A,B)
    14        %IF B>0 %THEN %RESULT=A<<B %ELSE %RESULT=A>>(-B)
 003D                      L1004  EQU $
 003D C8 00 00 01                           ENTER 0000,1
 0041 8B 7D 08                              MOV %EDI,[%EBP+8]
 0044 8B 07                                 MOV %EAX,[%EDI]
 0046 3D 00 00 00 00                        CMP %EAX,#0
 004B 7E 00                                 JLE L1005
 004D 8B 5D 08                              MOV %EBX,[%EBP+8]
 0050 8B 0B                                 MOV %ECX,[%EBX]
 0052 8B 75 0C                              MOV %ESI,[%EBP+12]
 0055 8B 06                                 MOV %EAX,[%ESI]
 0057 D3 E0                                 SHL %EAX,%ECX
 0059 C9                                    LEAVE
 005A C3                                    RET
 005B                      L1005  EQU $
 005B 8B 7D 08                              MOV %EDI,[%EBP+8]
 005E 8B 07                                 MOV %EAX,[%EDI]
 0060 F7 D8                                 NEG %EAX
 0062 89 C1                                 MOV %ECX,%EAX
 0064 8B 5D 0C                              MOV %EBX,[%EBP+12]
 0067 8B 03                                 MOV %EAX,[%EBX]
 0069 D3 E8                                 SHR %EAX,%ECX
 006B C9                                    LEAVE
 006C C3                                    RET
    15        %END
    16        %EXTERNALINTEGERFNSPEC RETURNCODE
    17        %EXTERNALINTEGERFN SUCESS(%INTEGERNAME DUMMY)
 006D                      L1006  EQU $
 006D C8 00 00 01                           ENTER 0000,1
    18        %RESULT=RETURNCODE
 0071 E8 6E 00                              CALL 'RETURNCODE' (EXTERN 110)
 0074 C9                                    LEAVE
 0075 C3                                    RET
    19        %END
?DUMMY unused
    20        %ENDOFFILE

    20 Statements compiled



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


