home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.ee.pdx.edu
/
2014.02.ftp.ee.pdx.edu.tar
/
ftp.ee.pdx.edu
/
pub
/
users
/
Harry
/
compilers
/
p11
/
tst
/
local.out.bak
< prev
next >
Wrap
Text File
|
2006-03-05
|
28KB
|
1,568 lines
!
! PCAT Compiler Version 1.0
!
.global .div
.global .rem
!
! Standard data fields
!
.data
.align 8
temp: .double 0
.text
strNL: .asciz "\n"
strInt: .asciz "%d"
strFlt: .asciz "%g"
strTrue: .asciz "TRUE"
strFalse: .asciz "FALSE"
message1: .asciz "Execution Error: Allocation failed!\n"
message2: .asciz "Execution Error: Pointer is NIL!\n"
message3: .asciz "Execution Error: Read statement failed!\n"
message4: .asciz "Execution Error: Array index is out of bounds!\n"
message5: .asciz "Execution Error: Count is not positive in array constructor!\n"
.align 8
!
! runtimeError1-5
!
! Branch to one of these labels to print an error message and abort.
!
runtimeError1:
set message1,%o0
call printf
nop
call exit
mov 1,%o0
runtimeError2:
set message2,%o0
call printf
nop
call exit
mov 1,%o0
runtimeError3:
set message3,%o0
call printf
nop
call exit
mov 1,%o0
runtimeError4:
set message4,%o0
call printf
nop
call exit
mov 1,%o0
runtimeError5:
set message5,%o0
call printf
nop
call exit
mov 1,%o0
! writeFlt
!
! This routine is passed a single precision floating number in %f0.
! It prints it by calling printf. It uses registers %f0, %f1.
!
writeFlt:
save %sp,-128,%sp
fstod %f0,%f0
set temp,%l0
std %f0,[%l0]
ldd [%l0],%o0
mov %o1,%o2
mov %o0,%o1
set strFlt,%o0
call printf
nop
ret
restore
! writeBool
!
! This routine is passed an integer in %i0/o0. It prints "FALSE" if this
! integer is 0 and "TRUE" otherwise.
!
writeBool:
save %sp,-128,%sp
cmp %i0,%g0
be printFalse
nop
set strTrue,%o0
ba printEnd
nop
printFalse:
set strFalse,%o0
printEnd:
call printf
nop
ret
restore
!
! Additional Fields
!
.data
display0: .word 0
display1: .word 0
display2: .word 0
.text
str53: .asciz "***** Error: should be 1601 *****"
str52: .asciz "d = "
str51: .asciz "***** Error: should be 1501 *****"
str50: .asciz "c = "
str49: .asciz "***** Error: should be 1302 *****"
str48: .asciz "b = "
str47: .asciz "***** Error: should be 1003 *****"
str46: .asciz "a = "
str45: .asciz "***** Error: should be 901 *****"
str44: .asciz "z1 = "
str43: .asciz "***** Error: should be 801 *****"
str42: .asciz "y2 = "
str41: .asciz "***** Error: should be 502 *****"
str40: .asciz "y1 = "
str39: .asciz "***** Error: should be 701 *****"
str38: .asciz "x3 = "
str37: .asciz "***** Error: should be 402 *****"
str36: .asciz "x2 = "
str35: .asciz "***** Error: should be 103 *****"
str34: .asciz "x1 = "
str33: .asciz "=== foo2 ==="
str32: .asciz "***** Error: should be 1202 *****"
str31: .asciz "d = "
str30: .asciz "***** Error: should be 1401 *****"
str29: .asciz "c = "
str28: .asciz "***** Error: should be 1302 *****"
str27: .asciz "b = "
str26: .asciz "***** Error: should be 1003 *****"
str25: .asciz "a = "
str24: .asciz "***** Error: should be 601 *****"
str23: .asciz "y2 = "
str22: .asciz "***** Error: should be 502 *****"
str21: .asciz "y1 = "
str20: .asciz "***** Error: should be 302 *****"
str19: .asciz "x3 = "
str18: .asciz "***** Error: should be 402 *****"
str17: .asciz "x2 = "
str16: .asciz "***** Error: should be 103 *****"
str15: .asciz "x1 = "
str14: .asciz "=== foo1 ==="
str13: .asciz "***** Error: should be 1202 *****"
str12: .asciz "d = "
str11: .asciz "***** Error: should be 1101 *****"
str10: .asciz "b = "
str9: .asciz "***** Error: should be 1003 *****"
str8: .asciz "a = "
str7: .asciz "***** Error: should be 302 *****"
str6: .asciz "x3 = "
str5: .asciz "***** Error: should be 201 *****"
str4: .asciz "x2 = "
str3: .asciz "***** Error: should be 103 *****"
str2: .asciz "x1 = "
str1: .asciz "=== main ==="
.align 8
! MAIN...
! mainEntry
.global main
main: save %sp,-144,%sp
set display0,%o0
st %fp,[%o0]
! VAR INITIALIZATION...
! x1 := 100
set 100,%o0
st %o0,[%fp+-4]
! VAR INITIALIZATION...
! x2 := 200
set 200,%o0
st %o0,[%fp+-8]
! VAR INITIALIZATION...
! x3 := 300
set 300,%o0
st %o0,[%fp+-12]
! VAR INITIALIZATION...
! a := 1000
set 1000,%o0
st %o0,[%fp+-16]
! VAR INITIALIZATION...
! b := 1100
set 1100,%o0
st %o0,[%fp+-20]
! VAR INITIALIZATION...
! d := 1200
set 1200,%o0
st %o0,[%fp+-24]
! ASSIGNMENT STMT...
! t1 := x1 + 1 (integer)
ld [%fp+-4],%o0
set 1,%o1
add %o0,%o1,%o1
st %o1,[%fp+-28]
! x1 := t1
ld [%fp+-28],%o0
st %o0,[%fp+-4]
! ASSIGNMENT STMT...
! t2 := x2 + 1 (integer)
ld [%fp+-8],%o0
set 1,%o1
add %o0,%o1,%o1
st %o1,[%fp+-32]
! x2 := t2
ld [%fp+-32],%o0
st %o0,[%fp+-8]
! ASSIGNMENT STMT...
! t3 := x3 + 1 (integer)
ld [%fp+-12],%o0
set 1,%o1
add %o0,%o1,%o1
st %o1,[%fp+-36]
! x3 := t3
ld [%fp+-36],%o0
st %o0,[%fp+-12]
! ASSIGNMENT STMT...
! t4 := a + 1 (integer)
ld [%fp+-16],%o0
set 1,%o1
add %o0,%o1,%o1
st %o1,[%fp+-40]
! a := t4
ld [%fp+-40],%o0
st %o0,[%fp+-16]
! ASSIGNMENT STMT...
! t5 := b + 1 (integer)
ld [%fp+-20],%o0
set 1,%o1
add %o0,%o1,%o1
st %o1,[%fp+-44]
! b := t5
ld [%fp+-44],%o0
st %o0,[%fp+-20]
! ASSIGNMENT STMT...
! t6 := d + 1 (integer)
ld [%fp+-24],%o0
set 1,%o1
add %o0,%o1,%o1
st %o1,[%fp+-48]
! d := t6
ld [%fp+-48],%o0
st %o0,[%fp+-24]
! CALL STMT...
! param 1,1300
set 1300,%o0
st %o0,[%sp+68]
! param 2,1400
set 1400,%o0
st %o0,[%sp+72]
! call p1_foo1
call p1_foo1
nop
! WRITE STMT...
! writeString str1
sethi %hi(str1),%o0
call printf
or %o0,%lo(str1),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! WRITE STMT...
! writeString str2
sethi %hi(str2),%o0
call printf
or %o0,%lo(str2),%o0
! writeInt x1
ld [%fp+-4],%o1
sethi %hi(strInt),%o0
call printf
or %o0,%lo(strInt),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! IF...
! if x1 != 103 goto Label_1 (integer)
ld [%fp+-4],%o0
set 103,%o1
cmp %o0,%o1
bne Label_1
nop
! goto Label_2
ba Label_2
nop
! Label_1:
Label_1:
! THEN...
! WRITE STMT...
! writeString str3
sethi %hi(str3),%o0
call printf
or %o0,%lo(str3),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! END IF...
! Label_2:
Label_2:
! WRITE STMT...
! writeString str4
sethi %hi(str4),%o0
call printf
or %o0,%lo(str4),%o0
! writeInt x2
ld [%fp+-8],%o1
sethi %hi(strInt),%o0
call printf
or %o0,%lo(strInt),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! IF...
! if x2 != 201 goto Label_3 (integer)
ld [%fp+-8],%o0
set 201,%o1
cmp %o0,%o1
bne Label_3
nop
! goto Label_4
ba Label_4
nop
! Label_3:
Label_3:
! THEN...
! WRITE STMT...
! writeString str5
sethi %hi(str5),%o0
call printf
or %o0,%lo(str5),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! END IF...
! Label_4:
Label_4:
! WRITE STMT...
! writeString str6
sethi %hi(str6),%o0
call printf
or %o0,%lo(str6),%o0
! writeInt x3
ld [%fp+-12],%o1
sethi %hi(strInt),%o0
call printf
or %o0,%lo(strInt),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! IF...
! if x3 != 302 goto Label_5 (integer)
ld [%fp+-12],%o0
set 302,%o1
cmp %o0,%o1
bne Label_5
nop
! goto Label_6
ba Label_6
nop
! Label_5:
Label_5:
! THEN...
! WRITE STMT...
! writeString str7
sethi %hi(str7),%o0
call printf
or %o0,%lo(str7),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! END IF...
! Label_6:
Label_6:
! WRITE STMT...
! writeString str8
sethi %hi(str8),%o0
call printf
or %o0,%lo(str8),%o0
! writeInt a
ld [%fp+-16],%o1
sethi %hi(strInt),%o0
call printf
or %o0,%lo(strInt),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! IF...
! if a != 1003 goto Label_7 (integer)
ld [%fp+-16],%o0
set 1003,%o1
cmp %o0,%o1
bne Label_7
nop
! goto Label_8
ba Label_8
nop
! Label_7:
Label_7:
! THEN...
! WRITE STMT...
! writeString str9
sethi %hi(str9),%o0
call printf
or %o0,%lo(str9),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! END IF...
! Label_8:
Label_8:
! WRITE STMT...
! writeString str10
sethi %hi(str10),%o0
call printf
or %o0,%lo(str10),%o0
! writeInt b
ld [%fp+-20],%o1
sethi %hi(strInt),%o0
call printf
or %o0,%lo(strInt),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! IF...
! if b != 1101 goto Label_9 (integer)
ld [%fp+-20],%o0
set 1101,%o1
cmp %o0,%o1
bne Label_9
nop
! goto Label_10
ba Label_10
nop
! Label_9:
Label_9:
! THEN...
! WRITE STMT...
! writeString str11
sethi %hi(str11),%o0
call printf
or %o0,%lo(str11),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! END IF...
! Label_10:
Label_10:
! WRITE STMT...
! writeString str12
sethi %hi(str12),%o0
call printf
or %o0,%lo(str12),%o0
! writeInt d
ld [%fp+-24],%o1
sethi %hi(strInt),%o0
call printf
or %o0,%lo(strInt),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! IF...
! if d != 1202 goto Label_11 (integer)
ld [%fp+-24],%o0
set 1202,%o1
cmp %o0,%o1
bne Label_11
nop
! goto Label_12
ba Label_12
nop
! Label_11:
Label_11:
! THEN...
! WRITE STMT...
! writeString str13
sethi %hi(str13),%o0
call printf
or %o0,%lo(str13),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! END IF...
! Label_12:
Label_12:
! MAIN EXIT...
! mainExit
ret
restore
! PROCEDURE...
! procEntry p1_foo1,lexLev=1,frameSize=144
p1_foo1: save %sp,-144,%sp
set display1,%o0
ld [%o0],%o1
st %o1,[%fp+64]
st %fp,[%o0]
! formal 1,b
! formal 2,c
! VAR INITIALIZATION...
! x2 := 400
set 400,%o0
st %o0,[%fp+-4]
! VAR INITIALIZATION...
! y1 := 500
set 500,%o0
st %o0,[%fp+-8]
! VAR INITIALIZATION...
! y2 := 600
set 600,%o0
st %o0,[%fp+-12]
! ASSIGNMENT STMT...
! t7 := x1 + 1 (integer)
set display0,%o0
ld [%o0],%o0
ld [%o0+-4],%o0
set 1,%o1
add %o0,%o1,%o1
st %o1,[%fp+-16]
! x1 := t7
ld [%fp+-16],%o0
set display0,%o1
ld [%o1],%o1
st %o0,[%o1+-4]
! ASSIGNMENT STMT...
! t8 := x2 + 1 (integer)
ld [%fp+-4],%o0
set 1,%o1
add %o0,%o1,%o1
st %o1,[%fp+-20]
! x2 := t8
ld [%fp+-20],%o0
st %o0,[%fp+-4]
! ASSIGNMENT STMT...
! t9 := x3 + 1 (integer)
set display0,%o0
ld [%o0],%o0
ld [%o0+-12],%o0
set 1,%o1
add %o0,%o1,%o1
st %o1,[%fp+-24]
! x3 := t9
ld [%fp+-24],%o0
set display0,%o1
ld [%o1],%o1
st %o0,[%o1+-12]
! ASSIGNMENT STMT...
! t10 := y1 + 1 (integer)
ld [%fp+-8],%o0
set 1,%o1
add %o0,%o1,%o1
st %o1,[%fp+-28]
! y1 := t10
ld [%fp+-28],%o0
st %o0,[%fp+-8]
! ASSIGNMENT STMT...
! t11 := y2 + 1 (integer)
ld [%fp+-12],%o0
set 1,%o1
add %o0,%o1,%o1
st %o1,[%fp+-32]
! y2 := t11
ld [%fp+-32],%o0
st %o0,[%fp+-12]
! ASSIGNMENT STMT...
! t12 := a + 1 (integer)
set display0,%o0
ld [%o0],%o0
ld [%o0+-16],%o0
set 1,%o1
add %o0,%o1,%o1
st %o1,[%fp+-36]
! a := t12
ld [%fp+-36],%o0
set display0,%o1
ld [%o1],%o1
st %o0,[%o1+-16]
! ASSIGNMENT STMT...
! t13 := b + 1 (integer)
ld [%fp+68],%o0
set 1,%o1
add %o0,%o1,%o1
st %o1,[%fp+-40]
! b := t13
ld [%fp+-40],%o0
st %o0,[%fp+68]
! ASSIGNMENT STMT...
! t14 := c + 1 (integer)
ld [%fp+72],%o0
set 1,%o1
add %o0,%o1,%o1
st %o1,[%fp+-44]
! c := t14
ld [%fp+-44],%o0
st %o0,[%fp+72]
! ASSIGNMENT STMT...
! t15 := d + 1 (integer)
set display0,%o0
ld [%o0],%o0
ld [%o0+-24],%o0
set 1,%o1
add %o0,%o1,%o1
st %o1,[%fp+-48]
! d := t15
ld [%fp+-48],%o0
set display0,%o1
ld [%o1],%o1
st %o0,[%o1+-24]
! CALL STMT...
! param 1,1500
set 1500,%o0
st %o0,[%sp+68]
! param 2,1600
set 1600,%o0
st %o0,[%sp+72]
! call p2_foo2
call p2_foo2
nop
! WRITE STMT...
! writeString str14
sethi %hi(str14),%o0
call printf
or %o0,%lo(str14),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! WRITE STMT...
! writeString str15
sethi %hi(str15),%o0
call printf
or %o0,%lo(str15),%o0
! writeInt x1
set display0,%o1
ld [%o1],%o1
ld [%o1+-4],%o1
sethi %hi(strInt),%o0
call printf
or %o0,%lo(strInt),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! IF...
! if x1 != 103 goto Label_13 (integer)
set display0,%o0
ld [%o0],%o0
ld [%o0+-4],%o0
set 103,%o1
cmp %o0,%o1
bne Label_13
nop
! goto Label_14
ba Label_14
nop
! Label_13:
Label_13:
! THEN...
! WRITE STMT...
! writeString str16
sethi %hi(str16),%o0
call printf
or %o0,%lo(str16),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! END IF...
! Label_14:
Label_14:
! WRITE STMT...
! writeString str17
sethi %hi(str17),%o0
call printf
or %o0,%lo(str17),%o0
! writeInt x2
ld [%fp+-4],%o1
sethi %hi(strInt),%o0
call printf
or %o0,%lo(strInt),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! IF...
! if x2 != 402 goto Label_15 (integer)
ld [%fp+-4],%o0
set 402,%o1
cmp %o0,%o1
bne Label_15
nop
! goto Label_16
ba Label_16
nop
! Label_15:
Label_15:
! THEN...
! WRITE STMT...
! writeString str18
sethi %hi(str18),%o0
call printf
or %o0,%lo(str18),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! END IF...
! Label_16:
Label_16:
! WRITE STMT...
! writeString str19
sethi %hi(str19),%o0
call printf
or %o0,%lo(str19),%o0
! writeInt x3
set display0,%o1
ld [%o1],%o1
ld [%o1+-12],%o1
sethi %hi(strInt),%o0
call printf
or %o0,%lo(strInt),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! IF...
! if x3 != 302 goto Label_17 (integer)
set display0,%o0
ld [%o0],%o0
ld [%o0+-12],%o0
set 302,%o1
cmp %o0,%o1
bne Label_17
nop
! goto Label_18
ba Label_18
nop
! Label_17:
Label_17:
! THEN...
! WRITE STMT...
! writeString str20
sethi %hi(str20),%o0
call printf
or %o0,%lo(str20),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! END IF...
! Label_18:
Label_18:
! WRITE STMT...
! writeString str21
sethi %hi(str21),%o0
call printf
or %o0,%lo(str21),%o0
! writeInt y1
ld [%fp+-8],%o1
sethi %hi(strInt),%o0
call printf
or %o0,%lo(strInt),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! IF...
! if y1 != 502 goto Label_19 (integer)
ld [%fp+-8],%o0
set 502,%o1
cmp %o0,%o1
bne Label_19
nop
! goto Label_20
ba Label_20
nop
! Label_19:
Label_19:
! THEN...
! WRITE STMT...
! writeString str22
sethi %hi(str22),%o0
call printf
or %o0,%lo(str22),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! END IF...
! Label_20:
Label_20:
! WRITE STMT...
! writeString str23
sethi %hi(str23),%o0
call printf
or %o0,%lo(str23),%o0
! writeInt y2
ld [%fp+-12],%o1
sethi %hi(strInt),%o0
call printf
or %o0,%lo(strInt),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! IF...
! if y2 != 601 goto Label_21 (integer)
ld [%fp+-12],%o0
set 601,%o1
cmp %o0,%o1
bne Label_21
nop
! goto Label_22
ba Label_22
nop
! Label_21:
Label_21:
! THEN...
! WRITE STMT...
! writeString str24
sethi %hi(str24),%o0
call printf
or %o0,%lo(str24),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! END IF...
! Label_22:
Label_22:
! WRITE STMT...
! writeString str25
sethi %hi(str25),%o0
call printf
or %o0,%lo(str25),%o0
! writeInt a
set display0,%o1
ld [%o1],%o1
ld [%o1+-16],%o1
sethi %hi(strInt),%o0
call printf
or %o0,%lo(strInt),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! IF...
! if a != 1003 goto Label_23 (integer)
set display0,%o0
ld [%o0],%o0
ld [%o0+-16],%o0
set 1003,%o1
cmp %o0,%o1
bne Label_23
nop
! goto Label_24
ba Label_24
nop
! Label_23:
Label_23:
! THEN...
! WRITE STMT...
! writeString str26
sethi %hi(str26),%o0
call printf
or %o0,%lo(str26),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! END IF...
! Label_24:
Label_24:
! WRITE STMT...
! writeString str27
sethi %hi(str27),%o0
call printf
or %o0,%lo(str27),%o0
! writeInt b
ld [%fp+68],%o1
sethi %hi(strInt),%o0
call printf
or %o0,%lo(strInt),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! IF...
! if b != 1302 goto Label_25 (integer)
ld [%fp+68],%o0
set 1302,%o1
cmp %o0,%o1
bne Label_25
nop
! goto Label_26
ba Label_26
nop
! Label_25:
Label_25:
! THEN...
! WRITE STMT...
! writeString str28
sethi %hi(str28),%o0
call printf
or %o0,%lo(str28),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! END IF...
! Label_26:
Label_26:
! WRITE STMT...
! writeString str29
sethi %hi(str29),%o0
call printf
or %o0,%lo(str29),%o0
! writeInt c
ld [%fp+72],%o1
sethi %hi(strInt),%o0
call printf
or %o0,%lo(strInt),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! IF...
! if c != 1401 goto Label_27 (integer)
ld [%fp+72],%o0
set 1401,%o1
cmp %o0,%o1
bne Label_27
nop
! goto Label_28
ba Label_28
nop
! Label_27:
Label_27:
! THEN...
! WRITE STMT...
! writeString str30
sethi %hi(str30),%o0
call printf
or %o0,%lo(str30),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! END IF...
! Label_28:
Label_28:
! WRITE STMT...
! writeString str31
sethi %hi(str31),%o0
call printf
or %o0,%lo(str31),%o0
! writeInt d
set display0,%o1
ld [%o1],%o1
ld [%o1+-24],%o1
sethi %hi(strInt),%o0
call printf
or %o0,%lo(strInt),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! IF...
! if d != 1202 goto Label_29 (integer)
set display0,%o0
ld [%o0],%o0
ld [%o0+-24],%o0
set 1202,%o1
cmp %o0,%o1
bne Label_29
nop
! goto Label_30
ba Label_30
nop
! Label_29:
Label_29:
! THEN...
! WRITE STMT...
! writeString str32
sethi %hi(str32),%o0
call printf
or %o0,%lo(str32),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! END IF...
! Label_30:
Label_30:
! RETURN...
! returnVoid
set display1,%o0
ld [%fp+64],%o1
st %o1,[%o0]
ret
restore
! PROCEDURE...
! procEntry p2_foo2,lexLev=2,frameSize=144
p2_foo2: save %sp,-144,%sp
set display2,%o0
ld [%o0],%o1
st %o1,[%fp+64]
st %fp,[%o0]
! formal 1,c
! formal 2,d
! VAR INITIALIZATION...
! x3 := 700
set 700,%o0
st %o0,[%fp+-4]
! VAR INITIALIZATION...
! y2 := 800
set 800,%o0
st %o0,[%fp+-8]
! VAR INITIALIZATION...
! z1 := 900
set 900,%o0
st %o0,[%fp+-12]
! ASSIGNMENT STMT...
! t16 := x1 + 1 (integer)
set display0,%o0
ld [%o0],%o0
ld [%o0+-4],%o0
set 1,%o1
add %o0,%o1,%o1
st %o1,[%fp+-16]
! x1 := t16
ld [%fp+-16],%o0
set display0,%o1
ld [%o1],%o1
st %o0,[%o1+-4]
! ASSIGNMENT STMT...
! t17 := x2 + 1 (integer)
set display1,%o0
ld [%o0],%o0
ld [%o0+-4],%o0
set 1,%o1
add %o0,%o1,%o1
st %o1,[%fp+-20]
! x2 := t17
ld [%fp+-20],%o0
set display1,%o1
ld [%o1],%o1
st %o0,[%o1+-4]
! ASSIGNMENT STMT...
! t18 := x3 + 1 (integer)
ld [%fp+-4],%o0
set 1,%o1
add %o0,%o1,%o1
st %o1,[%fp+-24]
! x3 := t18
ld [%fp+-24],%o0
st %o0,[%fp+-4]
! ASSIGNMENT STMT...
! t19 := y1 + 1 (integer)
set display1,%o0
ld [%o0],%o0
ld [%o0+-8],%o0
set 1,%o1
add %o0,%o1,%o1
st %o1,[%fp+-28]
! y1 := t19
ld [%fp+-28],%o0
set display1,%o1
ld [%o1],%o1
st %o0,[%o1+-8]
! ASSIGNMENT STMT...
! t20 := y2 + 1 (integer)
ld [%fp+-8],%o0
set 1,%o1
add %o0,%o1,%o1
st %o1,[%fp+-32]
! y2 := t20
ld [%fp+-32],%o0
st %o0,[%fp+-8]
! ASSIGNMENT STMT...
! t21 := z1 + 1 (integer)
ld [%fp+-12],%o0
set 1,%o1
add %o0,%o1,%o1
st %o1,[%fp+-36]
! z1 := t21
ld [%fp+-36],%o0
st %o0,[%fp+-12]
! ASSIGNMENT STMT...
! t22 := a + 1 (integer)
set display0,%o0
ld [%o0],%o0
ld [%o0+-16],%o0
set 1,%o1
add %o0,%o1,%o1
st %o1,[%fp+-40]
! a := t22
ld [%fp+-40],%o0
set display0,%o1
ld [%o1],%o1
st %o0,[%o1+-16]
! ASSIGNMENT STMT...
! t23 := b + 1 (integer)
set display1,%o0
ld [%o0],%o0
ld [%o0+68],%o0
set 1,%o1
add %o0,%o1,%o1
st %o1,[%fp+-44]
! b := t23
ld [%fp+-44],%o0
set display1,%o1
ld [%o1],%o1
st %o0,[%o1+68]
! ASSIGNMENT STMT...
! t24 := c + 1 (integer)
ld [%fp+68],%o0
set 1,%o1
add %o0,%o1,%o1
st %o1,[%fp+-48]
! c := t24
ld [%fp+-48],%o0
st %o0,[%fp+68]
! ASSIGNMENT STMT...
! t25 := d + 1 (integer)
ld [%fp+72],%o0
set 1,%o1
add %o0,%o1,%o1
st %o1,[%fp+-52]
! d := t25
ld [%fp+-52],%o0
st %o0,[%fp+72]
! WRITE STMT...
! writeString str33
sethi %hi(str33),%o0
call printf
or %o0,%lo(str33),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! WRITE STMT...
! writeString str34
sethi %hi(str34),%o0
call printf
or %o0,%lo(str34),%o0
! writeInt x1
set display0,%o1
ld [%o1],%o1
ld [%o1+-4],%o1
sethi %hi(strInt),%o0
call printf
or %o0,%lo(strInt),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! IF...
! if x1 != 103 goto Label_31 (integer)
set display0,%o0
ld [%o0],%o0
ld [%o0+-4],%o0
set 103,%o1
cmp %o0,%o1
bne Label_31
nop
! goto Label_32
ba Label_32
nop
! Label_31:
Label_31:
! THEN...
! WRITE STMT...
! writeString str35
sethi %hi(str35),%o0
call printf
or %o0,%lo(str35),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! END IF...
! Label_32:
Label_32:
! WRITE STMT...
! writeString str36
sethi %hi(str36),%o0
call printf
or %o0,%lo(str36),%o0
! writeInt x2
set display1,%o1
ld [%o1],%o1
ld [%o1+-4],%o1
sethi %hi(strInt),%o0
call printf
or %o0,%lo(strInt),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! IF...
! if x2 != 402 goto Label_33 (integer)
set display1,%o0
ld [%o0],%o0
ld [%o0+-4],%o0
set 402,%o1
cmp %o0,%o1
bne Label_33
nop
! goto Label_34
ba Label_34
nop
! Label_33:
Label_33:
! THEN...
! WRITE STMT...
! writeString str37
sethi %hi(str37),%o0
call printf
or %o0,%lo(str37),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! END IF...
! Label_34:
Label_34:
! WRITE STMT...
! writeString str38
sethi %hi(str38),%o0
call printf
or %o0,%lo(str38),%o0
! writeInt x3
ld [%fp+-4],%o1
sethi %hi(strInt),%o0
call printf
or %o0,%lo(strInt),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! IF...
! if x3 != 701 goto Label_35 (integer)
ld [%fp+-4],%o0
set 701,%o1
cmp %o0,%o1
bne Label_35
nop
! goto Label_36
ba Label_36
nop
! Label_35:
Label_35:
! THEN...
! WRITE STMT...
! writeString str39
sethi %hi(str39),%o0
call printf
or %o0,%lo(str39),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! END IF...
! Label_36:
Label_36:
! WRITE STMT...
! writeString str40
sethi %hi(str40),%o0
call printf
or %o0,%lo(str40),%o0
! writeInt y1
set display1,%o1
ld [%o1],%o1
ld [%o1+-8],%o1
sethi %hi(strInt),%o0
call printf
or %o0,%lo(strInt),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! IF...
! if y1 != 502 goto Label_37 (integer)
set display1,%o0
ld [%o0],%o0
ld [%o0+-8],%o0
set 502,%o1
cmp %o0,%o1
bne Label_37
nop
! goto Label_38
ba Label_38
nop
! Label_37:
Label_37:
! THEN...
! WRITE STMT...
! writeString str41
sethi %hi(str41),%o0
call printf
or %o0,%lo(str41),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! END IF...
! Label_38:
Label_38:
! WRITE STMT...
! writeString str42
sethi %hi(str42),%o0
call printf
or %o0,%lo(str42),%o0
! writeInt y2
ld [%fp+-8],%o1
sethi %hi(strInt),%o0
call printf
or %o0,%lo(strInt),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! IF...
! if y2 != 801 goto Label_39 (integer)
ld [%fp+-8],%o0
set 801,%o1
cmp %o0,%o1
bne Label_39
nop
! goto Label_40
ba Label_40
nop
! Label_39:
Label_39:
! THEN...
! WRITE STMT...
! writeString str43
sethi %hi(str43),%o0
call printf
or %o0,%lo(str43),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! END IF...
! Label_40:
Label_40:
! WRITE STMT...
! writeString str44
sethi %hi(str44),%o0
call printf
or %o0,%lo(str44),%o0
! writeInt z1
ld [%fp+-12],%o1
sethi %hi(strInt),%o0
call printf
or %o0,%lo(strInt),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! IF...
! if z1 != 901 goto Label_41 (integer)
ld [%fp+-12],%o0
set 901,%o1
cmp %o0,%o1
bne Label_41
nop
! goto Label_42
ba Label_42
nop
! Label_41:
Label_41:
! THEN...
! WRITE STMT...
! writeString str45
sethi %hi(str45),%o0
call printf
or %o0,%lo(str45),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! END IF...
! Label_42:
Label_42:
! WRITE STMT...
! writeString str46
sethi %hi(str46),%o0
call printf
or %o0,%lo(str46),%o0
! writeInt a
set display0,%o1
ld [%o1],%o1
ld [%o1+-16],%o1
sethi %hi(strInt),%o0
call printf
or %o0,%lo(strInt),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! IF...
! if a != 1003 goto Label_43 (integer)
set display0,%o0
ld [%o0],%o0
ld [%o0+-16],%o0
set 1003,%o1
cmp %o0,%o1
bne Label_43
nop
! goto Label_44
ba Label_44
nop
! Label_43:
Label_43:
! THEN...
! WRITE STMT...
! writeString str47
sethi %hi(str47),%o0
call printf
or %o0,%lo(str47),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! END IF...
! Label_44:
Label_44:
! WRITE STMT...
! writeString str48
sethi %hi(str48),%o0
call printf
or %o0,%lo(str48),%o0
! writeInt b
set display1,%o1
ld [%o1],%o1
ld [%o1+68],%o1
sethi %hi(strInt),%o0
call printf
or %o0,%lo(strInt),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! IF...
! if b != 1302 goto Label_45 (integer)
set display1,%o0
ld [%o0],%o0
ld [%o0+68],%o0
set 1302,%o1
cmp %o0,%o1
bne Label_45
nop
! goto Label_46
ba Label_46
nop
! Label_45:
Label_45:
! THEN...
! WRITE STMT...
! writeString str49
sethi %hi(str49),%o0
call printf
or %o0,%lo(str49),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! END IF...
! Label_46:
Label_46:
! WRITE STMT...
! writeString str50
sethi %hi(str50),%o0
call printf
or %o0,%lo(str50),%o0
! writeInt c
ld [%fp+68],%o1
sethi %hi(strInt),%o0
call printf
or %o0,%lo(strInt),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! IF...
! if c != 1501 goto Label_47 (integer)
ld [%fp+68],%o0
set 1501,%o1
cmp %o0,%o1
bne Label_47
nop
! goto Label_48
ba Label_48
nop
! Label_47:
Label_47:
! THEN...
! WRITE STMT...
! writeString str51
sethi %hi(str51),%o0
call printf
or %o0,%lo(str51),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! END IF...
! Label_48:
Label_48:
! WRITE STMT...
! writeString str52
sethi %hi(str52),%o0
call printf
or %o0,%lo(str52),%o0
! writeInt d
ld [%fp+72],%o1
sethi %hi(strInt),%o0
call printf
or %o0,%lo(strInt),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! IF...
! if d != 1601 goto Label_49 (integer)
ld [%fp+72],%o0
set 1601,%o1
cmp %o0,%o1
bne Label_49
nop
! goto Label_50
ba Label_50
nop
! Label_49:
Label_49:
! THEN...
! WRITE STMT...
! writeString str53
sethi %hi(str53),%o0
call printf
or %o0,%lo(str53),%o0
! writeNewline
sethi %hi(strNL),%o0
call printf
or %o0,%lo(strNL),%o0
! END IF...
! Label_50:
Label_50:
! RETURN...
! returnVoid
set display2,%o0
ld [%fp+64],%o1
st %o1,[%o0]
ret
restore