         Edinburgh IMP77 Compiler - Version 8.4-2024.12.18

     1  %begin
 0000 C8 00 00 01                           ENTER 0000,1
     2  
     3  ! trying to duplicate crash from pass3.i
     4  
     5  %constinteger max ref = 100
     6  
     7  %recordformat  reffm(%shortinteger  tag, link, flags, ca)
     8  %recordformat  deffm(%record(deffm)%name  link, %shortinteger proc,ca)
     9  %recordformat  procfm(%record(procfm)%name  link,
    10+                       %record(reffm)%name   ref list,
    11+                       %record(deffm)%name   def list,
    12+                       %shortinteger  base,  ca,
    13+                                      static frame, event mask,
    14+                                      display reg, event start,
    15+                                      event finish, ld base,
    16+                                      ld size, vd base,
    17+                                      vd size, Me)
    18  
    19  %routine phase1
 0004 EB 00                                 JMP L1001
 0006                      L1002  EQU $
 0006 C8 00 00 02                           ENTER 0000,2
    20  %record(reffm)%array  ref(1:max ref)
 000A C7 45 E8 01 00 00 00                  MOV DWORD PTR [%EBP-24],#1
 0011 C7 45 EC 01 00 00 00                  MOV DWORD PTR [%EBP-20],#1
 0018 C7 45 F0 64 00 00 00                  MOV DWORD PTR [%EBP-16],#100
 001F C7 45 F4 09 01 00 00                  MOV DWORD PTR [%EBP-12],#265
 0026 8D 45 E8                              LEA %EAX,[%EBP-24]
 0029 50                                    PUSH %EAX
 002A E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 002D 83 C4 04                              ADD %ESP,#4
 0030 8D 4D E8                              LEA %ECX,[%EBP-24]
 0033 89 E3                                 MOV %EBX,%ESP
 0035 29 D3                                 SUB %EBX,%EDX
 0037 89 5D E0                              MOV [%EBP-32],%EBX
 003A 89 4D E4                              MOV [%EBP-28],%ECX
 003D 01 C3                                 ADD %EBX,%EAX
 003F 89 DC                                 MOV %ESP,%EBX
    21  %record(procfm)%name  pp, qq
    22    ref(1)_tag = 42
 0041 6A 01                                 PUSH #1
 0043 FF 75 E4                              PUSH DWORD PTR [%EBP-28]
 0046 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0049 83 C4 08                              ADD %ESP,#8
 004C 89 C6                                 MOV %ESI,%EAX
 004E 03 75 E0                              ADD %ESI,[%EBP-32]
 0051 C6 06 2A                              MOV BYTE PTR [%ESI],#42
 0054 C6 46 01 00                           MOV BYTE PTR [%ESI+1],#0
    23  %end
 0058 C9                                    LEAVE
 0059 C3                                    RET
 005A                      L1001  EQU $
?QQ unused
?PP unused
    24  
    25  %endofprogram
 005A C9                                    LEAVE
 005B C3                                    RET
