         Edinburgh IMP77 Compiler - Version 8.4-2024.12.18

     1  %begin
 0000 C8 00 00 01                           ENTER 0000,1
     2    ! be sure not to just use 'INDEX' icode on stack to determine
     3    ! number of indices, because there may be other ones underneath
     4    ! that do not belong to the current access.
     5    ! Need to store the arity of the array in its delaration (def_tag)
     6    %integerarray  p,q,r,s(0:255, 0:255)
 0004 C7 45 E4 02 00 00 00                  MOV DWORD PTR [%EBP-28],#2
 000B C7 45 E8 00 00 00 00                  MOV DWORD PTR [%EBP-24],#0
 0012 C7 45 EC FF 00 00 00                  MOV DWORD PTR [%EBP-20],#255
 0019 C7 45 F0 00 00 00 00                  MOV DWORD PTR [%EBP-16],#0
 0020 C7 45 F4 FF 00 00 00                  MOV DWORD PTR [%EBP-12],#255
 0027 C7 45 F8 83 00 00 00                  MOV DWORD PTR [%EBP-8],#131
 002E 8D 45 E4                              LEA %EAX,[%EBP-28]
 0031 50                                    PUSH %EAX
 0032 E8 0A 00                              CALL '_IMPADEF' (EXTERN 10)
 0035 83 C4 04                              ADD %ESP,#4
 0038 8D 4D E4                              LEA %ECX,[%EBP-28]
 003B 89 E3                                 MOV %EBX,%ESP
 003D 29 D3                                 SUB %EBX,%EDX
 003F 89 5D DC                              MOV [%EBP-36],%EBX
 0042 89 4D E0                              MOV [%EBP-32],%ECX
 0045 01 C3                                 ADD %EBX,%EAX
 0047 29 D3                                 SUB %EBX,%EDX
 0049 89 5D D4                              MOV [%EBP-44],%EBX
 004C 89 4D D8                              MOV [%EBP-40],%ECX
 004F 01 C3                                 ADD %EBX,%EAX
 0051 29 D3                                 SUB %EBX,%EDX
 0053 89 5D CC                              MOV [%EBP-52],%EBX
 0056 89 4D D0                              MOV [%EBP-48],%ECX
 0059 01 C3                                 ADD %EBX,%EAX
 005B 29 D3                                 SUB %EBX,%EDX
 005D 89 5D C4                              MOV [%EBP-60],%EBX
 0060 89 4D C8                              MOV [%EBP-56],%ECX
 0063 01 C3                                 ADD %EBX,%EAX
 0065 89 DC                                 MOV %ESP,%EBX
     7    r(100, s(50, q(1,2))) = 42
 0067 6A 64                                 PUSH #100
 0069 6A 32                                 PUSH #50
 006B 6A 01                                 PUSH #1
 006D 6A 02                                 PUSH #2
 006F FF 75 D8                              PUSH DWORD PTR [%EBP-40]
 0072 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0075 83 C4 0C                              ADD %ESP,#12
 0078 89 C6                                 MOV %ESI,%EAX
 007A 03 75 D4                              ADD %ESI,[%EBP-44]
 007D FF 36                                 PUSH DWORD PTR [%ESI]
 007F FF 75 C8                              PUSH DWORD PTR [%EBP-56]
 0082 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0085 83 C4 0C                              ADD %ESP,#12
 0088 89 C7                                 MOV %EDI,%EAX
 008A 03 7D C4                              ADD %EDI,[%EBP-60]
 008D FF 37                                 PUSH DWORD PTR [%EDI]
 008F FF 75 D0                              PUSH DWORD PTR [%EBP-48]
 0092 E8 09 00                              CALL '_IMPAREF' (EXTERN 9)
 0095 83 C4 0C                              ADD %ESP,#12
 0098 89 C3                                 MOV %EBX,%EAX
 009A 03 5D CC                              ADD %EBX,[%EBP-52]
 009D C7 03 2A 00 00 00                     MOV DWORD PTR [%EBX],#42
     8  %endofprogram
 00A3 C9                                    LEAVE
 00A4 C3                                    RET
