Start of TRIGOL Compiler for a Program P13.tri at Sun Oct 05 17:44:32 2003


Program

# IF (((1*2)*3)=(1*3)) THEN F:=(7*(3+(2*5)))
F:=100#

Parsing tree

root
IF
=
*
*
12
3
*
13
:=
F*
7+
3*
25
:=
F100

Table of constants
c1=1c2=2c3=3c4=7c5=5c6=100

Table of identifiers
i1=F

Modified tree:

root
IF
=
*
*
12
3
*
13
:=
F*
7+
3*
25
:=
F100


Compiler to Assembler started

; gen_header: source text
; # IF (1*2*3)=(1*3) THEN F:=7*(3+(2*5)); F:=100 #
;
; Program P13.asm
	.MODEL	small
	.STACK	100h
; gen_header: Rd=0 Wr=0
; gen_header: # of identifiers=1
.DATA F DW 0 dTv0 DW 0 dTv1 DW 0 ; gen_header: code segment'll start
.CODE ProgramStart: mov ax,@data mov ds,ax
Stack1

Stack12
;compiling the operator (1*2)
*
12
3
mov ax,1 mov dx,2 mul dx mov dTv0,ax
Stacktm3
;compiling the operator ((1*2)*3)
*
*
12
3
*
13
mov ax,dTv0 mov dx,3 mul dx mov dTv0,ax
Stacktm1

Stacktm13
;compiling the operator (1*3)
*
13
mov ax,1 mov dx,3 mul dx mov dTv1,ax ;compiling the operator (((1*2)*3)=(1*3))
=
*
*
12
3
*
13
mov ax,dTv0 cmp ax,dTv1 je # jmp MExi2 ;compiling the operator IF (((1*2)*3)=(1*3)) THEN
IF
=
*
*
12
3
*
13
:=
F*
7+
3*
25
:=
F100

Stack

StackF

StackF7

StackF73

StackF732

StackF7325
;compiling the operator (2*5)
*
25
#: mov ax,2 mov dx,5 mul dx mov dTv0,ax ;compiling the operator (3+(2*5))
+
3*
25
mov ax,3 add ax,dTv0 mov dTv0,ax ;compiling the operator (7*(3+(2*5)))
*
7+
3*
25
mov ax,7 mov dx,dTv0 mul dx mov dTv0,ax ;compiling the operator F:=(7*(3+(2*5)))
:=
F*
7+
3*
25
:=
F100
mov ax,dTv0 mov F,ax
Stack

StackF

StackF100
;compiling the operator F:=100
:=
F100
;: mov ax,100 mov F,ax
Stack
mov ah,4ch int 21h END ProgramStart programm P13.asm is compiled

I'll start compiler from assembler, and linker

tasm P13 >>P13c.htm
Turbo Assembler Version 3.1 Copyright (c) 1988, 1992 Borland International Assembling file: P13.ASM **Error** P13.ASM(28) Too few operands to instruction **Error** P13.ASM(29) Undefined symbol: MEXI2 **Error** P13.ASM(30) Unknown character Error messages: 3 Warning messages: None Passes: 1 Remaining memory: 458k
tlink P13+teek >>P13c.htm
Turbo Link Version 2.0 Copyright (c) 1987, 1988 Borland International p13.obj : unable to open file

Compiler ended at Sun Oct 05 17:44:33 2003