Start of TRIGOL Compiler for a Program P10.tri at Fri Jun 01 15:34:14 2001


Program

# READ a
y:=(((1+2)+3)+a)
WRITE y#

Parsing tree

root
READ
a
:=
y+
+
+
12
3
a
WRITE
y

Table of constants
c1=1c2=2c3=3

Table of identifiers
i1=ai2=y

Modified tree:

root
READ
a
:=
y+
+
+
12
3
a
WRITE
y


Compiler to Assembler started

; gen_header: source text
; READ a; y := 1+2+3+a; WRITE y
;
; Program P10.asm
	.MODEL	small
	.STACK	100h
; gen_header: Rd=1 Wr=1
EXTRN readint:PROC EXTRN bin2dec:PROC ; gen_header: # of identifiers=2
.DATA a DW 0 y DW 0 dTv0 DW 0 ; gen_header: generate I/O-text
Sisse DB 'Input the variable ','$' Trykk DB 'Variable ','$' a_S DB 'a=','$' y_S DB 'y=','$' ; gen_header: code segment'll start
.CODE ProgramStart: mov ax,@data mov ds,ax
Stacka
;compiling the operator READ a
READ
a
:=
y+
+
+
12
3
a
WRITE
y
mov ah,9h mov bx,1 mov cx,17 mov dx,OFFSET Sisse int 21h mov ah,9h mov bx,1 mov cx,2 mov dx,OFFSET a_S int 21h call readint mov a,ax
Stack

Stacky

Stacky1

Stacky12
;compiling the operator (1+2)
+
12
3
mov ax,1 add ax,2 mov dTv0,ax
Stackytm3
;compiling the operator ((1+2)+3)
+
+
12
3
a
mov ax,dTv0 add ax,3 mov dTv0,ax
Stackytma
;compiling the operator (((1+2)+3)+a)
+
+
+
12
3
a
mov ax,dTv0 add ax,a mov dTv0,ax ;compiling the operator y:=(((1+2)+3)+a)
:=
y+
+
+
12
3
a
WRITE
y
mov ax,dTv0 mov y,ax
Stack

Stacky
;compiling the operator WRITE y
WRITE
y
mov ah,9h mov bx,1 mov cx,8 mov dx,OFFSET Trykk int 21h mov ah,9h mov bx,1 mov cx,2 mov dx,OFFSET y_S int 21h mov ax,y mov dx,0 cmp ax,0 jg s1h2o3w mov dx,1 s1h2o3w: mov ch,1 call bin2dec
Stack
mov ah,4ch int 21h END ProgramStart programm P10.asm is compiled

I'll start compiler from assembler, and linker

tasm P10 >>P10c.htm
Turbo Assembler Version 3.1 Copyright (c) 1988, 1992 Borland International Assembling file: P10.ASM Error messages: None Warning messages: None Passes: 1 Remaining memory: 460k
tlink P10+teek >>P10c.htm
Turbo Link Version 2.0 Copyright (c) 1987, 1988 Borland International

Compiler ended at Fri Jun 01 15:34:15 2001