         Edinburgh IMP77 Compiler - Version 8.4-2024.12.18

     1  %begin
 0000 C8 00 00 01                           ENTER 0000,1
     2    %integerfn fred(%integer i, j, k)
 0004 EB 00                                 JMP L1001
 0006                      L1002  EQU $
 0006 C8 00 00 02                           ENTER 0000,2
     3      %result = i+j+k
 000A 8B 45 10                              MOV %EAX,[%EBP+16]
 000D 03 45 0C                              ADD %EAX,[%EBP+12]
 0010 03 45 08                              ADD %EAX,[%EBP+8]
 0013 C9                                    LEAVE
 0014 C3                                    RET
     4    %end
 0015                      L1001  EQU $
     5    %integer q
     6    q = fred (1, 2, 3)
 0015 6A 01                                 PUSH #1
 0017 6A 02                                 PUSH #2
 0019 6A 03                                 PUSH #3
 001B E8 00 00                              CALL 'FRED' (INTERNAL L1002 )
 001E 83 C4 0C                              ADD %ESP,#12
 0021 89 45 F8                              MOV [%EBP-8],%EAX
     7    q = fred (fred(1, 2, 3), 4, 5)
 0024 6A 01                                 PUSH #1
 0026 6A 02                                 PUSH #2
 0028 6A 03                                 PUSH #3
 002A E8 00 00                              CALL 'FRED' (INTERNAL L1002 )
 002D 83 C4 0C                              ADD %ESP,#12
 0030 50                                    PUSH %EAX
 0031 6A 04                                 PUSH #4
 0033 6A 05                                 PUSH #5
 0035 E8 00 00                              CALL 'FRED' (INTERNAL L1002 )
 0038 83 C4 0C                              ADD %ESP,#12
 003B 89 45 F8                              MOV [%EBP-8],%EAX
     8    q = fred (1, fred(2,3,4), 5)
 003E 6A 01                                 PUSH #1
 0040 6A 02                                 PUSH #2
 0042 6A 03                                 PUSH #3
 0044 6A 04                                 PUSH #4
 0046 E8 00 00                              CALL 'FRED' (INTERNAL L1002 )
 0049 83 C4 0C                              ADD %ESP,#12
 004C 50                                    PUSH %EAX
 004D 6A 05                                 PUSH #5
 004F E8 00 00                              CALL 'FRED' (INTERNAL L1002 )
 0052 83 C4 0C                              ADD %ESP,#12
 0055 89 45 F8                              MOV [%EBP-8],%EAX
     9    q = fred (1, 2, fred(3,4,5))
 0058 6A 01                                 PUSH #1
 005A 6A 02                                 PUSH #2
 005C 6A 03                                 PUSH #3
 005E 6A 04                                 PUSH #4
 0060 6A 05                                 PUSH #5
 0062 E8 00 00                              CALL 'FRED' (INTERNAL L1002 )
 0065 83 C4 0C                              ADD %ESP,#12
 0068 50                                    PUSH %EAX
 0069 E8 00 00                              CALL 'FRED' (INTERNAL L1002 )
 006C 83 C4 0C                              ADD %ESP,#12
 006F 89 45 F8                              MOV [%EBP-8],%EAX
    10    q = fred (fred(1,2,3), fred(4,5,6), 7)
 0072 6A 01                                 PUSH #1
 0074 6A 02                                 PUSH #2
 0076 6A 03                                 PUSH #3
 0078 E8 00 00                              CALL 'FRED' (INTERNAL L1002 )
 007B 83 C4 0C                              ADD %ESP,#12
 007E 50                                    PUSH %EAX
 007F 6A 04                                 PUSH #4
 0081 6A 05                                 PUSH #5
 0083 6A 06                                 PUSH #6
 0085 E8 00 00                              CALL 'FRED' (INTERNAL L1002 )
 0088 83 C4 0C                              ADD %ESP,#12
 008B 50                                    PUSH %EAX
 008C 6A 07                                 PUSH #7
 008E E8 00 00                              CALL 'FRED' (INTERNAL L1002 )
 0091 83 C4 0C                              ADD %ESP,#12
 0094 89 45 F8                              MOV [%EBP-8],%EAX
    11    q = fred (fred(1,2,3), 4, fred(5,6,7))
 0097 6A 01                                 PUSH #1
 0099 6A 02                                 PUSH #2
 009B 6A 03                                 PUSH #3
 009D E8 00 00                              CALL 'FRED' (INTERNAL L1002 )
 00A0 83 C4 0C                              ADD %ESP,#12
 00A3 50                                    PUSH %EAX
 00A4 6A 04                                 PUSH #4
 00A6 6A 05                                 PUSH #5
 00A8 6A 06                                 PUSH #6
 00AA 6A 07                                 PUSH #7
 00AC E8 00 00                              CALL 'FRED' (INTERNAL L1002 )
 00AF 83 C4 0C                              ADD %ESP,#12
 00B2 50                                    PUSH %EAX
 00B3 E8 00 00                              CALL 'FRED' (INTERNAL L1002 )
 00B6 83 C4 0C                              ADD %ESP,#12
 00B9 89 45 F8                              MOV [%EBP-8],%EAX
    12    q = fred (1, fred(2,3,4), fred(5,6,7))
 00BC 6A 01                                 PUSH #1
 00BE 6A 02                                 PUSH #2
 00C0 6A 03                                 PUSH #3
 00C2 6A 04                                 PUSH #4
 00C4 E8 00 00                              CALL 'FRED' (INTERNAL L1002 )
 00C7 83 C4 0C                              ADD %ESP,#12
 00CA 50                                    PUSH %EAX
 00CB 6A 05                                 PUSH #5
 00CD 6A 06                                 PUSH #6
 00CF 6A 07                                 PUSH #7
 00D1 E8 00 00                              CALL 'FRED' (INTERNAL L1002 )
 00D4 83 C4 0C                              ADD %ESP,#12
 00D7 50                                    PUSH %EAX
 00D8 E8 00 00                              CALL 'FRED' (INTERNAL L1002 )
 00DB 83 C4 0C                              ADD %ESP,#12
 00DE 89 45 F8                              MOV [%EBP-8],%EAX
    13    q = fred (fred(1,2,3), fred(4,5,6), fred(7,8,9))
 00E1 6A 01                                 PUSH #1
 00E3 6A 02                                 PUSH #2
 00E5 6A 03                                 PUSH #3
 00E7 E8 00 00                              CALL 'FRED' (INTERNAL L1002 )
 00EA 83 C4 0C                              ADD %ESP,#12
 00ED 50                                    PUSH %EAX
 00EE 6A 04                                 PUSH #4
 00F0 6A 05                                 PUSH #5
 00F2 6A 06                                 PUSH #6
 00F4 E8 00 00                              CALL 'FRED' (INTERNAL L1002 )
 00F7 83 C4 0C                              ADD %ESP,#12
 00FA 50                                    PUSH %EAX
 00FB 6A 07                                 PUSH #7
 00FD 6A 08                                 PUSH #8
 00FF 6A 09                                 PUSH #9
 0101 E8 00 00                              CALL 'FRED' (INTERNAL L1002 )
 0104 83 C4 0C                              ADD %ESP,#12
 0107 50                                    PUSH %EAX
 0108 E8 00 00                              CALL 'FRED' (INTERNAL L1002 )
 010B 83 C4 0C                              ADD %ESP,#12
 010E 89 45 F8                              MOV [%EBP-8],%EAX
    14  %endofprogram
 0111 C9                                    LEAVE
 0112 C3                                    RET
