         Edinburgh IMP77 Compiler - Version 8.4-2024.12.18

     1  %begin
 0000 C8 00 00 01                           ENTER 0000,1
     2    !! %name parameters are not being passed by address...
     3    %routine rsym(%integername sy)
 0004 EB 00                                 JMP L1001
 0006                      L1002  EQU $
 0006 C8 00 00 02                           ENTER 0000,2
     4    %end
 000A C9                                    LEAVE
 000B C3                                    RET
 000C                      L1001  EQU $
?SY unused
     5    %routine psym(%integer sy)
     6    %end
 000C                      L1003  EQU $
 000C C8 00 00 02                           ENTER 0000,2
 0010 C9                                    LEAVE
 0011 C3                                    RET
 0012                      L1001  EQU $
?SY unused
     7  
     8    %byteinteger sym
     9    %integer i
    10  
    11  ! rsym(sym)  {%name param given a byte - illegal}
    12    rsym(i)    {%name param given an int}
 0012 8D 45 F4                              LEA %EAX,[%EBP-12]
 0015 50                                    PUSH %EAX
 0016 E8 00 00                              CALL 'RSYM' (INTERNAL L1002 )
 0019 83 C4 04                              ADD %ESP,#4
    13    psym(sym)  {byte param - widened}
 001C 31 C0                                 XOR %EAX,%EAX
 001E 8A 45 FB                              MOV %AL,[%EBP-5]
 0021 50                                    PUSH %EAX
 0022 E8 00 00                              CALL 'PSYM' (INTERNAL L1003 )
 0025 83 C4 04                              ADD %ESP,#4
    14    psym(i)    {int param}
 0028 FF 75 F4                              PUSH DWORD PTR [%EBP-12]
 002B E8 00 00                              CALL 'PSYM' (INTERNAL L1003 )
 002E 83 C4 04                              ADD %ESP,#4
    15  %endofprogram
 0031 C9                                    LEAVE
 0032 C3                                    RET
