         Edinburgh IMP77 Compiler - Version 8.4-2024.12.18

     1  %externalroutine printword(%string (64) word)
 0000                      L1000  EQU $
 0000 C8 00 00 01                           ENTER 0000,1
     2     !%string(3)word = "???"  *duplicate*
     3     %if word = "+" %or word = "-" %or word = "*" %or word = "/" %C
     4+      %or word = "<" %or word = "<=" %or word = ">" %or word = ">=" %C
     5+        %or word = "=" %then %start
 0004 8D 45 08                              LEA %EAX,[%EBP+8]
 0007 50                                    PUSH %EAX
 0008 B9 00 00 00 00                        MOV %ECX,COT+#0
 000D 51                                    PUSH %ECX
 000E 89 45 F8                              MOV [%EBP-8],%EAX
 0011 89 4D F4                              MOV [%EBP-12],%ECX
 0014 E8 08 00                              CALL '_IMPSTRCMP' (EXTERN 8)
 0017 83 C4 08                              ADD %ESP,#8
 001A 3D 00 00 00 00                        CMP %EAX,#0
 001F 74 00                                 JE L1001
 0021 8D 45 08                              LEA %EAX,[%EBP+8]
 0024 50                                    PUSH %EAX
 0025 B9 02 00 00 00                        MOV %ECX,COT+#2
 002A 51                                    PUSH %ECX
 002B 89 45 F0                              MOV [%EBP-16],%EAX
 002E 89 4D EC                              MOV [%EBP-20],%ECX
 0031 E8 08 00                              CALL '_IMPSTRCMP' (EXTERN 8)
 0034 83 C4 08                              ADD %ESP,#8
 0037 3D 00 00 00 00                        CMP %EAX,#0
 003C 74 00                                 JE L1001
 003E 8D 45 08                              LEA %EAX,[%EBP+8]
 0041 50                                    PUSH %EAX
 0042 B9 04 00 00 00                        MOV %ECX,COT+#4
 0047 51                                    PUSH %ECX
 0048 89 45 E8                              MOV [%EBP-24],%EAX
 004B 89 4D E4                              MOV [%EBP-28],%ECX
 004E E8 08 00                              CALL '_IMPSTRCMP' (EXTERN 8)
 0051 83 C4 08                              ADD %ESP,#8
 0054 3D 00 00 00 00                        CMP %EAX,#0
 0059 74 00                                 JE L1001
 005B 8D 45 08                              LEA %EAX,[%EBP+8]
 005E 50                                    PUSH %EAX
 005F B9 06 00 00 00                        MOV %ECX,COT+#6
 0064 51                                    PUSH %ECX
 0065 89 45 E0                              MOV [%EBP-32],%EAX
 0068 89 4D DC                              MOV [%EBP-36],%ECX
 006B E8 08 00                              CALL '_IMPSTRCMP' (EXTERN 8)
 006E 83 C4 08                              ADD %ESP,#8
 0071 3D 00 00 00 00                        CMP %EAX,#0
 0076 74 00                                 JE L1001
 0078 8D 45 08                              LEA %EAX,[%EBP+8]
 007B 50                                    PUSH %EAX
 007C B9 08 00 00 00                        MOV %ECX,COT+#8
 0081 51                                    PUSH %ECX
 0082 89 45 D8                              MOV [%EBP-40],%EAX
 0085 89 4D D4                              MOV [%EBP-44],%ECX
 0088 E8 08 00                              CALL '_IMPSTRCMP' (EXTERN 8)
 008B 83 C4 08                              ADD %ESP,#8
 008E 3D 00 00 00 00                        CMP %EAX,#0
 0093 74 00                                 JE L1001
 0095 8D 45 08                              LEA %EAX,[%EBP+8]
 0098 50                                    PUSH %EAX
 0099 B9 0A 00 00 00                        MOV %ECX,COT+#10
 009E 51                                    PUSH %ECX
 009F 89 45 D0                              MOV [%EBP-48],%EAX
 00A2 89 4D CC                              MOV [%EBP-52],%ECX
 00A5 E8 08 00                              CALL '_IMPSTRCMP' (EXTERN 8)
 00A8 83 C4 08                              ADD %ESP,#8
 00AB 3D 00 00 00 00                        CMP %EAX,#0
 00B0 74 00                                 JE L1001
 00B2 8D 45 08                              LEA %EAX,[%EBP+8]
 00B5 50                                    PUSH %EAX
 00B6 B9 0D 00 00 00                        MOV %ECX,COT+#13
 00BB 51                                    PUSH %ECX
 00BC 89 45 C8                              MOV [%EBP-56],%EAX
 00BF 89 4D C4                              MOV [%EBP-60],%ECX
 00C2 E8 08 00                              CALL '_IMPSTRCMP' (EXTERN 8)
 00C5 83 C4 08                              ADD %ESP,#8
 00C8 3D 00 00 00 00                        CMP %EAX,#0
 00CD 74 00                                 JE L1001
 00CF 8D 45 08                              LEA %EAX,[%EBP+8]
 00D2 50                                    PUSH %EAX
 00D3 B9 0F 00 00 00                        MOV %ECX,COT+#15
 00D8 51                                    PUSH %ECX
 00D9 89 45 C0                              MOV [%EBP-64],%EAX
 00DC 89 4D BC                              MOV [%EBP-68],%ECX
 00DF E8 08 00                              CALL '_IMPSTRCMP' (EXTERN 8)
 00E2 83 C4 08                              ADD %ESP,#8
 00E5 3D 00 00 00 00                        CMP %EAX,#0
 00EA 74 00                                 JE L1001
 00EC 8D 45 08                              LEA %EAX,[%EBP+8]
 00EF 50                                    PUSH %EAX
 00F0 B9 12 00 00 00                        MOV %ECX,COT+#18
 00F5 51                                    PUSH %ECX
 00F6 89 45 B8                              MOV [%EBP-72],%EAX
 00F9 89 4D B4                              MOV [%EBP-76],%ECX
 00FC E8 08 00                              CALL '_IMPSTRCMP' (EXTERN 8)
 00FF 83 C4 08                              ADD %ESP,#8
 0102 3D 00 00 00 00                        CMP %EAX,#0
 0107 75 00                                 JNE L1002
 0109                      L1001  EQU $
     6        %return
 0109 C9                                    LEAVE
 010A C3                                    RET
     7     %finish
 010B                      L1002  EQU $
     8  %end
 010B C9                                    LEAVE
 010C C3                                    RET
     9  
    10  %endoffile

     6 Statements compiled



 ELF object file generated from IMP source file: '/home/gtoal/src/compilers101/new-parser/imps/tests/test8.imp'
 +----------+---------------------+---------+---------+---------+------------+
 | Sections |       Symbols       | Code    | Data    | Diag    | Total size |
 +----------+----------+----------+---------+---------+---------+------------+
 |  (count) | Internal | External | (bytes) | (bytes) | (bytes) | (bytes)    |
 +----------+----------+----------+---------+---------+---------+------------+
 |       12 |        5 |        7 |     307 |      20 |      32 |        359 |
 +----------+----------+----------+---------+---------+---------+------------+


