%! %%Pages: (atend) %%DocumentFonts: (atend) %%EndComments % % Frame Maker PostScript Prolog 1.11, for use with Maker 1.11 % Copyright (c) 1986,87 by Frame Technology, Inc. All rights reserved. % % Known Problems: % Due to bugs in Transcript, the 'PS-Adobe-' is omitted from line 1 /FMversion (1.11) def /FrameDict 120 dict def % The readline in 23.0 doesn't recognize cr's as nl's on AppleTalk FrameDict /tmprangecheck errordict /rangecheck get put errordict /rangecheck {FrameDict /bug true put} put FrameDict /bug false put mark % Some PS machines read past the CR, so keep the following 3 lines together! currentfile 5 string readline 00 0000000000 cleartomark errordict /rangecheck FrameDict /tmprangecheck get put FrameDict /bug get { /readline { /gstring exch def /gfile exch def /gindex 0 def { gfile read pop dup 10 eq {exit} if dup 13 eq {exit} if gstring exch gindex exch put /gindex gindex 1 add def } loop pop gstring 0 gindex getinterval true } def } if /FMVERSION { FMversion ne { /Times-Roman findfont 18 scalefont setfont 100 100 moveto (Maker version does not match postscript_prolog!) dup = show showpage } if } def /FMLOCAL { FrameDict begin 0 def end } def /landscape FMLOCAL /docheight FMLOCAL /docwidth FMLOCAL /yscale FMLOCAL /xscale FMLOCAL /orgxfer FMLOCAL /orgproc FMLOCAL /organgle FMLOCAL /orgfreq FMLOCAL /FMDOCUMENT { /#copies exch def FrameDict begin 0 ne /landscape exch def /docheight exch def /docwidth exch def /yscale exch def /xscale exch def currenttransfer cvlit /orgxfer exch def currentscreen cvlit /orgproc exch def /organgle exch def /orgfreq exch def end } def /pagesave FMLOCAL /orgmatrix FMLOCAL /FMBEGINPAGE { FrameDict begin /pagesave save def 2 setlinecap xscale yscale scale landscape { 90 rotate 0 docheight neg translate } if /orgmatrix matrix def gsave } def /FMENDPAGE { grestore pagesave restore end showpage } def /fontname FMLOCAL /fontscale FMLOCAL /fontnum FMLOCAL /fontdict FMLOCAL /FMDEFINEFONT { FrameDict begin /fontname exch def /fontscale exch def /fontnum exch def /fontdict fontname findfont fontscale scalefont def fontdict /Encoding get StandardEncoding eq { fontdict DiacriticEncode /fontdict exch def } { fontdict NonDiacriticEncode /fontdict exch def } ifelse FMfonts fontnum fontnum fontdict definefont put end } def /FMLINEWIDTHS { FrameDict begin dup array /FMlinewidths exch def 1 sub -1 0 {exch FMlinewidths 3 1 roll lnormalize put} for end } def FrameDict begin /savematrix { orgmatrix currentmatrix pop } bind def /restorematrix { orgmatrix setmatrix } bind def /dmatrix matrix def /dpi 72 0 dmatrix defaultmatrix dtransform dup mul exch dup mul add sqrt def /max {2 copy lt {exch} if pop} bind def /min {2 copy gt {exch} if pop} bind def /DiacriticEncoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /Adieresis /Aring /Ccedilla /Eacute /Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis /atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis /iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve /ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex /udieresis /dagger /.notdef /cent /sterling /section /bullet /paragraph /germandbls /registered /copyright /trademark /acute /dieresis /.notdef /AE /Oslash /.notdef /.notdef /.notdef /.notdef /yen /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /ordfeminine /ordmasculine /.notdef /ae /oslash /questiondown /exclamdown /logicalnot /.notdef /florin /.notdef /.notdef /guillemotleft /guillemotright /ellipsis /.notdef /Agrave /Atilde /Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright /quoteleft /quoteright /.notdef /.notdef /ydieresis /Ydieresis /fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl /periodcentered /quotesinglbase /quotedblbase /perthousand /Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute /Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /.notdef /Ograve /Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron /breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron ] def /FMfonts 255 array def /basefontdict FMLOCAL /newfontdict FMLOCAL /DiacriticEncode { /basefontdict exch def /newfontdict basefontdict maxlength dict def basefontdict {exch dup /FID ne {dup /Encoding eq {exch pop DiacriticEncoding} {exch} ifelse newfontdict 3 1 roll put } {pop pop} ifelse } forall newfontdict } bind def /NonDiacriticEncode { /basefontdict exch def /newfontdict basefontdict maxlength dict def basefontdict {exch dup /FID ne {exch newfontdict 3 1 roll put} {pop pop} ifelse } forall newfontdict } bind def /freq FMLOCAL /bwidth FMLOCAL /bpside FMLOCAL /bstring FMLOCAL /onbits FMLOCAL /offbits FMLOCAL /xindex FMLOCAL /yindex FMLOCAL /x FMLOCAL /y FMLOCAL /setpattern { /freq exch def /bwidth exch def /bpside exch def /bstring exch def /onbits 0 def /offbits 0 def freq 0 {/y exch def /x exch def /xindex x 1 add 2 div bpside mul cvi def /yindex y 1 add 2 div bpside mul cvi def bstring yindex bwidth mul xindex 8 idiv add get 1 7 xindex 8 mod sub bitshift and 0 ne {/onbits onbits 1 add def 1} {/offbits offbits 1 add def 0} ifelse } setscreen {} settransfer offbits offbits onbits add div setgray } bind def /grayness { setgray orgxfer cvx settransfer orgfreq organgle orgproc cvx setscreen } bind def /normalize { transform cvi exch cvi exch itransform } bind def /dnormalize { dtransform cvi exch cvi exch idtransform } bind def /lnormalize { 0 dtransform exch cvi 2 idiv 2 mul 1 add exch idtransform pop } bind def /fillprocs [{0.00 grayness} {0.10 grayness} {0.30 grayness} {0.50 grayness} {0.70 grayness} {0.90 grayness} {0.97 grayness} {1.00 grayness} {<0F1E3C78F0E1C387> 8 1 dpi 16 div setpattern} {<0F87C3E1F0783C1E> 8 1 dpi 16 div setpattern} { 8 1 dpi 16 div setpattern} { 8 1 dpi 16 div setpattern} {<8142241818244281> 8 1 dpi 16 div setpattern} {<03060C183060C081> 8 1 dpi 16 div setpattern} {<8040201008040201> 8 1 dpi 16 div setpattern} {} {1.00 grayness} {0.90 grayness} {0.70 grayness} {0.50 grayness} {0.30 grayness} {0.10 grayness} {0.03 grayness} {0.00 grayness} { 8 1 dpi 16 div setpattern} { 8 1 dpi 16 div setpattern} {<3333333333333333> 8 1 dpi 16 div setpattern} {<0000FFFF0000FFFF> 8 1 dpi 16 div setpattern} {<7EBDDBE7E7DBBD7E> 8 1 dpi 16 div setpattern} { 8 1 dpi 16 div setpattern} {<7FBFDFEFF7FBFDFE> 8 1 dpi 16 div setpattern} {} ] def /H { FMlinewidths exch get setlinewidth } bind def /X { fillprocs exch get exec } bind def /V { gsave eofill grestore } bind def /N { gsave stroke grestore } bind def /M {moveto} bind def /E {lineto} bind def /D {curveto} bind def /O {closepath} bind def /n FMLOCAL /L { /n exch def newpath normalize moveto 2 1 n {pop normalize lineto} for } bind def /Y { L closepath } bind def /K { /n exch def newpath moveto 3 1 n {pop curveto} for } bind def /J { /n exch def newpath moveto 1 1 n {pop curveto} for } bind def /x1 FMLOCAL /x2 FMLOCAL /y1 FMLOCAL /y2 FMLOCAL /R { /y2 exch def /x2 exch def /y1 exch def /x1 exch def x1 y1 x2 y1 x2 y2 x1 y2 4 Y } bind def /C { grestore gsave R clip } bind def /U { grestore gsave } bind def /F { FMfonts exch get setfont } bind def /T { moveto show } bind def /P { moveto 0 32 3 2 roll widthshow } bind def /S { moveto 0 exch ashow } bind def /B { moveto 0 32 4 2 roll 0 exch awidthshow } bind def /Q { moveto gsave show grestore } bind def /x FMLOCAL /y FMLOCAL /dx FMLOCAL /dy FMLOCAL /dl FMLOCAL /t FMLOCAL /t2 FMLOCAL /Cos FMLOCAL /Sin FMLOCAL /r FMLOCAL /W { dnormalize /dy exch def /dx exch def normalize /y exch def /x exch def /dl dx dx mul dy dy mul add sqrt def dl 0.0 gt { /t currentlinewidth def savematrix /Cos dx dl div def /Sin dy dl div def /r [Cos Sin Sin neg Cos 0.0 0.0] def /t2 t 2.5 mul 3.5 max def newpath x y translate r concat 0.0 0.0 moveto dl t 2.7 mul sub 0.0 rlineto stroke restorematrix x dx add y dy add translate r concat t 0.67 mul setlinewidth t 1.61 mul neg 0.0 translate 0.0 0.0 moveto t2 1.7 mul neg t2 2.0 div moveto 0.0 0.0 lineto t2 1.7 mul neg t2 2.0 div neg lineto stroke t setlinewidth restorematrix } if } bind def /G { gsave newpath normalize translate 0.0 0.0 moveto dnormalize scale 0.0 0.0 1.0 5 3 roll arc closepath eofill grestore } bind def /x FMLOCAL /y FMLOCAL /w FMLOCAL /h FMLOCAL /xx FMLOCAL /yy FMLOCAL /ww FMLOCAL /hh FMLOCAL /A { /y exch def /x exch def /h exch def /w exch def x y normalize /yy exch def /xx exch def w h dnormalize /hh exch def /ww exch def ww abs hh abs xx ww add yy hh sub gsave savematrix newpath translate scale 0.0 0.0 1.0 5 3 roll arc 0 setlinecap restorematrix stroke grestore } bind def /FMsaveobject FMLOCAL /FMoptop FMLOCAL /FMdicttop FMLOCAL /BEGINPRINTCODE { /FMdicttop countdictstack 1 add def /FMoptop count 6 sub def /FMsaveobject save def userdict begin /showpage {} def newpath translate 0.0 0.0 moveto } bind def /ENDPRINTCODE { count -1 FMoptop {pop pop} for countdictstack -1 FMdicttop {pop end} for FMsaveobject restore } bind def /gn { 0 { 46 mul cf read pop 32 sub dup 46 lt {exit} if 46 sub add } loop add } bind def /str FMLOCAL /cfs { /str sl string def 0 1 sl 1 sub {str exch val put} for str def } bind def /ic [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 0 {0 hx} {1 hx} {2 hx} {3 hx} {4 hx} {5 hx} {6 hx} {7 hx} {8 hx} {9 hx} {10 hx} {11 hx} {12 hx} {13 hx} {14 hx} {15 hx} {16 hx} {17 hx} {18 hx} {19 hx} {gn hx} {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12} {13} {14} {15} {16} {17} {18} {19} {gn} {0 wh} {1 wh} {2 wh} {3 wh} {4 wh} {5 wh} {6 wh} {7 wh} {8 wh} {9 wh} {10 wh} {11 wh} {12 wh} {13 wh} {14 wh} {gn wh} {0 bl} {1 bl} {2 bl} {3 bl} {4 bl} {5 bl} {6 bl} {7 bl} {8 bl} {9 bl} {10 bl} {11 bl} {12 bl} {13 bl} {14 bl} {gn bl} {0 fl} {1 fl} {2 fl} {3 fl} {4 fl} {5 fl} {6 fl} {7 fl} {8 fl} {9 fl} {10 fl} {11 fl} {12 fl} {13 fl} {14 fl} {gn fl} ] def /sl FMLOCAL /val FMLOCAL /ws FMLOCAL /im FMLOCAL /bs FMLOCAL /cs FMLOCAL /len FMLOCAL /pos FMLOCAL /ms { /sl exch def /val 255 def /ws cfs /im cfs /val 0 def /bs cfs /cs cfs } bind def 400 ms /ip { is 0 cf cs readline pop { ic exch get exec add } forall pop } bind def /wh { /len exch def /pos exch def ws 0 len getinterval im pos len getinterval copy pop pos len } bind def /bl { /len exch def /pos exch def bs 0 len getinterval im pos len getinterval copy pop pos len } bind def /s1 1 string def /fl { /len exch def /pos exch def /val cf s1 readhexstring pop 0 get def pos 1 pos len add 1 sub {im exch val put} for pos len } bind def /hx { 3 copy getinterval cf exch readhexstring pop pop } bind def /h FMLOCAL /w FMLOCAL /lb FMLOCAL /bitmapsave FMLOCAL /is FMLOCAL /cf FMLOCAL /BEGINBITMAP { gsave translate scale /h exch def /w exch def /lb w 7 add 8 idiv def sl lb lt {lb ms} if /bitmapsave save def /is im 0 lb getinterval def ws 0 lb getinterval is copy pop /cf currentfile def w h 1 [w 0 0 h neg 0 h] {ip} image bitmapsave restore grestore } bind def /ENDBITMAP { } bind def end %%EndProlog %%BeginSetup (1.11) FMVERSION 1. 1. 612. 792. 0 1 FMDOCUMENT 0 12. /Times-Roman FMDEFINEFONT 1 18. /Times-Bold FMDEFINEFONT 2 14. /Times-Bold FMDEFINEFONT 3 8. /Times-Roman FMDEFINEFONT 4 12. /Times-Italic FMDEFINEFONT 5 10. /Times-Roman FMDEFINEFONT 6 14. /Times-Roman FMDEFINEFONT 7 12. /Times-Bold FMDEFINEFONT 8 10. /Times-Bold FMDEFINEFONT 9 7. /Times-Roman FMDEFINEFONT 0.5 1. 3. 4. 4 FMLINEWIDTHS %%EndSetup %%Page: "1" 1 FMBEGINPAGE 0 F 0 X (Sun Microsystems Porting Guide) 72. 36. T (3-1) 524. 36. T 1 F (Chapter 3) 72. 706. T 72. 72. 542. 720. C U 1 F 0 X (Programming Languages) 215. 706. T 2 F (3.1) 72. 678. T (Overview) 216. 678. T 0 F (Sun provides high-performance compilers for languages includ-) 217. 659. T (ing C, FORTRAN, Pascal, Modula-2, and Common Lisp. Sun\325s ) 217. 646. T (C compiler, used for systems development at Sun, is a highly ) 217. 633. T (evolved implementation of the C programming language. Sun ) 217. 620. T (FORTRAN) 217. 606. T 3 F (\252 ) 273. 610. T 0 F (is GSA-certified FORTRAN 77 with VAX/VMS ) 282.84 606. T (FORTRAN 4.0 compiler extensions. Sun Pascal) 217. 592. T 3 F (\252 ) 451.66 596. T 0 F (is enhanced ) 461.5 592. T (Berkeley Pascal with many popular extensions. Sun Modula-2) 217. 578. T 3 F (\252 ) 516.3 582. T 0 F (is based on the ETH, Zurich Modula-2 compiler with extensions ) 217. 565. T (for SunOS. Sun Common Lisp) 217. 551. T 3 F (\252 ) 367.68 555. T 0 F (is an optimizing compiler and ) 377.52 551. T (environment for artificial intelligence applications. In addition to ) 217. 538. T (these compiler languages, Sun also offers a command level lan-) 217. 525. T (guage, ) 217. 512. T 4 F (the shell programming language. ) 251.66 512. T 0 F (Sun\325s languages share a common language base, composed of ) 217. 495. T (Sun\325s optimizers, code generator, and libraries \050see Figure 3-) 217. 482. T (1\051. Sun\325s leading-edge optimizing compiler technology increas-) 217. 469. T (es execution performance on Sun-3 and Sun386) 217. 456. T 4 F (i ) 446.96 456. T 0 F (systems by 50 ) 453.29 456. T (percent. The Sun-4 optimizers and code generators take maxi-) 217. 443. T (mum advantage of Sun\325s Scalable Processor ARChitecture ) 217. 430. T (\050SPARC) 217. 416. T 3 F (\252) 259.01 420. T 0 F (\051 technology, increasing application speed up to three ) 266.85 416. T (and a half times versus unoptimized code. Sun has enhanced ) 217. 403. T (the quality and speed of floating-point processing for high-preci-) 217. 390. T (sion computations by offering a choice of floating-point options. ) 217. 377. T (All Sun languages have access to this technology, which ) 217. 364. T (adheres to the ANSI/IEEE 754-1985 floating-point standard. ) 217. 351. T (Floating-point intensive applications further benefit from Sun\325s ) 217. 338. T (optimization strategies. With interlanguage calling, based on ) 217. 325. T (common calling conventions, programs written in any of these ) 217. 312. T (languages can access each other\325s libraries. This integration ) 217. 299. T (furnishes a complete software development solution with full ) 217. 286. T (access to Sun\325s user interface, graphics environment, and net-) 217. 273. T (working facilities. ) 217. 260. T (Sun offers a variety of programming support tools, such as ) 217. 243. T 4 F (dbx-) 501.96 243. T (tool) 217. 230. T 0 F (, a window-based symbolic debugger, the ) 235.67 230. T 4 F (make ) 438.3 230. T 0 F (utility, the ) 466.62 230. T 4 F (Source Code Control System \050SCCS\051, ) 217. 217. T 0 F (and ) 400.32 217. T 4 F (execution time profil-) 420.65 217. T (ing analysis) 217. 204. T 0 F (. Integrated with Sun\325s languages and individual ) 274.67 204. T (programming support tools, Sun\325s Network Software Environ-) 217. 191. T (ment \050NSE) 217. 177. T 3 F (\252) 270.66 181. T 0 F (\051 dramatically improves team productivity. The ) 278.5 177. T (NSE is a comprehensive software development platform that ) 217. 164. T (improves software quality, development productivity, and pro-) 217. 151. T (gramming performance. Please refer to Chapter 4, "Software ) 217. 138. T (Development Tools", for detailed descriptions of other support-) 217. 125. T (ing tools. ) 217. 112. T 69. 545. 189. 670. C 69. 545. 189. 670. R 7 X V 4 F 0 X (Sun supports all popu-) 71. 628. T (lar languages, with ) 71. 614. T (added functionality ) 71. 600. T (for Fortran, Pascal, ) 71. 586. T (Modula-2, and C) 71. 572. T U 72. 144. 181. 252. C 72. 144. 181. 252. R 7 X V 4 F 0 X (Sun offers languages, ) 72. 210. T (and support tools ) 72. 196. T (that create a ) 72. 182. T (programming ) 72. 168. T (environment) 72. 154. T U 72. 353. 181. 442. C 72. 353. 181. 442. R 7 X V 4 F 0 X 0.33 (Sun supports all pop-) 74. 427. P 2.49 (ular languages, with) 74. 413. P 11. (added functionality) 74. 399. P 3.66 (for Fortran, Pascal,) 74. 385. P (Modula-2) 74. 371. T 72. 357. 180. 436. R 7 X V 0 X (Optimizers improve ) 72. 427. T (performance for all ) 72. 413. T (languages) 72. 399. T U FMENDPAGE %%Page: "2" 2 FMBEGINPAGE 0 F 0 X (Sun Microsystems Porting Guide) 380.33 36. T (3-2) 72. 36. T 72. 72. 540. 720. C 72. 74. 540. 720. C 72. 74. 540. 720. R 7 X V 78. 115. 540. 712. C 78. 115. 542. 712. R 7 X V 88. 594. 205. 693. R 0 H 0 X N 214. 580. 313. 693. R N 331. 603. 430. 693. R N 448. 603. 538. 693. R N 97. 608. 142. 622. R N 151. 608. 196. 622. R N 5 F (ccom) 110. 612. T 3.16 ( lint) 159. 612. P 90. 90.1 -31.5 11. 296. 685. A 90. 180.1 31.5 11. 233. 685. A 180. 270.1 31.5 -11. 233. 663. A 270. 0.1 -31.5 -11. 296. 663. A 0. 90. -31.5 11. 296. 685. A 223. 641. 307. 655. R N 90. 90.1 -27. 11.5 292. 633. A 90. 180.1 27. 11.5 238. 633. A 180. 270.1 27. -11.5 238. 610. A 270. 0.1 -27. -11.5 292. 610. A 0. 90. -27. 11.5 292. 633. A 233. 587. 296. 603. R N 2.27 (VMS F77) 244. 673. P 0.4 ( source) 249. 666. P 3.28 ( VMS translator) 230. 644. P 0.38 (Sun F77) 249. 621. P 0.4 ( source) 249. 614. P (f77pass1) 248. 592. T 90. 90.1 -40.5 15. 421. 677. A 90. 180.1 40.5 15. 340. 677. A 180. 270.1 40.5 -15. 340. 647. A 270. 0.1 -40.5 -15. 421. 647. A 0. 90. -40.5 15. 421. 677. A (Pascal) 368. 665. T 0.4 ( source) 365. 655. P 349. 610. 412. 633. R N ( pc0) 369. 619. T 90. 90.1 -36. 15. 529. 677. A 90. 180.1 36. 15. 457. 677. A 180. 270.1 36. -15. 457. 647. A 270. 0.1 -36. -15. 529. 647. A 0. 90. -36. 15. 529. 677. A 3.06 ( Modula-2) 470. 663. P 0.45 ( source) 472. 654. P 466. 610. 520. 633. R N 0.51 ( m2cfe) 479. 619. P 90. 90.1 -99. 22.5 394. 565. A 90. 180.1 99. 22.5 196. 565. A 180. 270.1 99. -22.5 196. 520. A 270. 0.1 -99. -22.5 394. 520. A 0. 90. -99. 22.5 394. 565. A 268. 580. 0. -15. W 385. 603. -63. -38. W 0 F ( IR) 279. 551. T (Internal) 273. 540. T 5.01 ( Representation) 249. 528. P 201. 474. 390. 505. R N (IROPT) 275. 491. T 1.68 (Global Optimizer) 251. 480. P 90. 90.1 -27. 11.5 322. 460. A 90. 180.1 27. 11.5 268. 460. A 180. 270.1 27. -11.5 268. 437. A 270. 0.1 -27. -11.5 322. 437. A 0. 90. -27. 11.5 322. 460. A ( IR) 283. 445. T 223. 406. 367. 430. R N 0.67 ( CG Code Generator) 232. 414. P 140. 362. 203. 392. R N 2.68 ( ) 148. 374. P 5 F 2.68 (INLINE) 153.68 374. P 238. 294. 355. 339. R N 238. 316. 238. 309. 2 L N 238. 316. 355. 316. 2 L N 0 F 2.68 (peephole optimizer) 249. 324. P 6 F 5.85 (as ) 263. 302. P 0 F 5.85 (assembler) 284.01 302. P 90. 90.1 -54. 15. 350. 279. A 90. 180.1 54. 15. 242. 279. A 180. 270.1 54. -15. 242. 249. A 270. 0.1 -54. -15. 350. 249. A 0. 90. -54. 15. 350. 279. A 2.35 ( Relocatable) 266. 265. P 0.27 ( Binary ".o") 266. 254. P 262. 211. 325. 234. R N 6 F -0.39 (ld ) 271. 218. P 0 F -0.39 (linker) 285. 218. P 2.68 ( Executable) 263. 181. P 81. 171. 220. 208. R N 1.68 (Executing Application) 95. 192. P 1.67 (\050including run-time linker\051) 86. 179. P 90. 90.1 -36. 11.5 433. 234. A 90. 180.1 36. 11.5 361. 234. A 180. 270.1 36. -11.5 361. 211. A 270. 0.1 -36. -11.5 433. 211. A 0. 90. -36. 11.5 433. 234. A 1.68 ( libraries) 372. 219. P 295. 520. 0. -15. W 295. 474. 0. -14. W 295. 437. 0. -7. W 295. 406. 0. -14. W 295. 362. 0. -23. W 295. 249. 0. -15. W 295. 211. 0. -15. W 361. 223. -36. 0. W 295. 294. 0. -16. W 253. 185. -29. 0. W 154. 241. 0. -30. W 493. 603. -135. -42. W 265. 609. 0. -5. W 381. 647. 0. -13. W 494. 647. 0. -13. W 265. 663. 0. -8. W 90. 90.1 -27. 12. 147. 666. A 90. 180.1 27. 12. 93. 666. A 180. 270.1 27. -12. 93. 642. A 270. 0.1 -27. -12. 147. 642. A 0. 90. -27. 12. 147. 666. A 90. 90.1 -24. 12. 197. 681. A 90. 180.1 24. 12. 149. 681. A 180. 270.1 24. -12. 149. 657. A 270. 0.1 -24. -12. 197. 657. A 0. 90. -24. 12. 197. 681. A 5 F (C) 116. 655. T 0.4 ( source) 105. 647. P (lint) 166. 670. T (libs) 166. 662. T 173. 657. 0. -34. W 120. 642. 0. -19. W 148. 593. 81. -33. W 7 F 0.9 (Figure 3-1. Compiler Flow for Sun Languages) 197. 130. P 265. 640. 0. -7. W 231. 376. -27. 0. W 215. 376. 17. 0. W 90. 90.1 -63. 15. 359. 392. A 90. 180.1 63. 15. 233. 392. A 180. 270.1 63. -15. 233. 362. A 270. 0.1 -63. -15. 359. 362. A 0. 90. -63. 15. 359. 392. A 0 F (Assembly) 271. 380. T (Language) 271. 368. T 90. 90.1 -40.5 19. 195. 279. A 90. 180.1 40.5 19. 114. 279. A 180. 270.1 40.5 -19. 114. 241. A 270. 0.1 -40.5 -19. 195. 241. A 0. 90. -40.5 19. 195. 279. A 2.68 ( shared) 131. 263. P 1.68 ( libraries) 129. 250. P 90. 90.1 -40.5 11.5 335. 196. A 90. 180.1 40.5 11.5 254. 196. A 180. 270.1 40.5 -11.5 254. 173. A 270. 0.1 -40.5 -11.5 335. 173. A 0. 90. -40.5 11.5 335. 196. A 72. 74. 540. 720. C 72. 72. 540. 720. C U FMENDPAGE %%Page: "3" 3 FMBEGINPAGE 0 F 0 X (Sun Microsystems Porting Guide) 72. 36. T (3-3) 524. 36. T 2 F (3.2) 72. 709. T (C) 216. 709. T 0 F (C is the language most commonly used by developers on Sun ) 217. 690. T (workstations. Sun\325s C compiler is highly evolved with enhance-) 217. 677. T (ments in the areas of code generation, interlanguage calling, ) 217. 664. T (optimization, and debugging. Sun\325s C compiler balances syntac-) 217. 651. T (tic and semantic extensions to the C language with standard C ) 217. 638. T (features, promoting program portability. Sun\325s C compiler pro-) 217. 625. T (vides the interface between other Sun languages and the basic ) 217. 612. T (machine facilities. Two significant enhancements to Sun\325s C ) 217. 599. T (compiler are the single-and double-precision compiler options, ) 217. 586. T (which permit more FORTRAN-like floating-point expression ) 217. 573. T (handling, allowing compute-intensive applications to be written ) 217. 560. T (in C. ) 217. 547. T (Some of the features of Sun\325s C compiler include:) 217. 530. T (\245 ) 221. 512. T (Definable data types including enumerated types) 234. 512. T (\245 ) 221. 494. T (Arbitrary-length variable names) 234. 494. T (\245 ) 221. 476. T (Machine-independent pointer manipulation) 234. 476. T (\245 ) 221. 458. T (General initialization, block structure, long integers, unions, ) 234. 458. T (and ) 234. 445. T (explicit-type conversions) 254.33 445. T (\245 ) 221. 427. T (Access to all system facilities through the C runtime library) 234. 427. T (For further information on Sun\325s C compiler, please refer to the ) 217. 407. T 4 F (C Programmer\325s Guide for the Sun Workstation.) 217. 394. T 2 F (3.3) 72. 369. T (FORTRAN) 216. 369. T 0 F (Sun FORTRAN is an extension to the GSA-certified ANSI ) 217. 350. T (standard FORTRAN 77. The extensions are compatible with ) 217. 337. T (DEC FORTRAN 4.0 compiler. Some of these added features ) 217. 324. T (include records and pointer types and encode/decode state-) 217. 311. T (ments. These features not only facilitate porting between DEC ) 217. 298. T (and Sun systems but also allow users to share the same code ) 217. 285. T (on both systems for products such as SunLink DNI. For devia-) 217. 272. T (tions from the standard and a complete list of extended features ) 217. 259. T (available on Sun systems, please refer to the ) 217. 246. T 4 F (FORTRAN) 432.63 246. T 0 F ( ) 485.3 246. T 4 F (Pro-) 488.3 246. T (grammer\325s Guide) 217. 233. T 0 F (. ) 301.98 233. T (Sun FORTRAN also provides an ANSI/IEEE-standard float-) 217. 216. T (ing-point package that enhances the code fix when used with ) 217. 203. T (the Sun floating-point accelerator options. Sun FORTRAN ) 217. 190. T (floating-point routines can produce switched-object code for ) 217. 177. T (determining the fastest available floating-point hardware at ) 217. 164. T (runtime and select library routines for optimal hardware perfor-) 217. 151. T (mance. Further performance gains are achieved with global ) 217. 138. T (and peephole optimizers, which help produce FORTRAN appli-) 217. 125. T (cations that execute up to 80 percent faster and reduce code ) 217. 112. T (size by an average of 10 percent. For the various options ) 217. 99. T (available to the Sun FORTRAN compiler, please refer to the ) 217. 86. T 72. 129. 180. 218. C 72. 129. 180. 218. R 7 X V 4 F 0 X (ANSI Fortran with ) 72. 189. T (VMS extensions ) 72. 175. T (reduces porting ) 72. 161. T (efforts) 72. 147. T U 72. 582. 180. 676. C 72. 582. 180. 676. R 7 X V U 73. 586. 177. 665. R 7 X V 4 F 0 X (Sun C is an ) 73. 656. T (enhanced ) 73. 642. T (C compiler) 73. 628. T FMENDPAGE %%Page: "4" 4 FMBEGINPAGE 0 F 0 X (Sun Microsystems Porting Guide) 380.33 36. T (3-4) 72. 36. T 72. 130. 180. 219. C 72. 130. 180. 219. R 7 X V 4 F 0 X 0.33 (Sun supports all pop-) 75. 204. P 2.49 (ular languages, with) 75. 190. P 11. (added functionality) 75. 176. P 3.66 (for Fortran, Pascal,) 75. 162. P (Modula-2) 75. 148. T 75. 134. 179. 213. R 7 X V 0 X (ISO compatible Pas-) 75. 204. T (cal with extensions ) 75. 190. T (for added functional-) 75. 176. T (ity) 75. 162. T U 72. 72. 540. 720. R 7 X V 0 F 0 X (reference manual page for the FORTRAN compiler. Other fea-) 217. 711. T (tures of Sun FORTRAN include:) 217. 698. T 6 F (\245) 221. 679. T 0 F ( ) 225.9 679. T (Support for preprocessor directives such as #ifdef and #ifndef) 234. 679. T (\245 ) 221. 660. T (Access to command line arguments using ) 234. 660. T 4 F (getarg) 436.64 660. T 0 F ( system call ) 467.98 660. T (\245 ) 221. 642. T (Namelist-directed I/O ) 234. 642. T (\245 ) 221. 624. T (Do/End, Do, and Do/While statements) 234. 624. T (\245 ) 221. 606. T (Byte data type) 234. 606. T (\245 ) 221. 588. T (Logical operators on integers and arithmetic operations ) 234. 588. T (on logicals) 234. 575. T (\245 ) 221. 557. T (Identifier names up to 32 characters long) 234. 557. T (\245 ) 221. 539. T (Identifiers containing _ and $) 234. 539. T (\245 ) 221. 521. T (Source lines up to 132 characters long ) 234. 521. T (\245 ) 221. 503. T (Record, Structure, and Union statements) 234. 503. T (\245 ) 221. 485. T (Type and Accept statements) 234. 485. T (\245 ) 221. 467. T (Pointer data type for compatibility with ) 234. 467. T (vectorized FORTRAN) 234. 454. T (\245 ) 221. 436. T (Recursive subroutine and function calls) 234. 436. T (\245 ) 221. 418. T (Relaxed input format) 234. 418. T ( Unsupported VAX/VMS 4.0 extensions include:) 221. 397. T (\245 ) 221. 379. T (DEFINE FILE statement) 234. 379. T (\245 ) 221. 361. T (DELETE, FIND, REWRITE, and UNLOCK statements) 234. 361. T (\245 ) 221. 343. T (Nonstandard INQUIRE and OPEN options) 234. 343. T (\245 ) 221. 325. T (KEYID and key specifiers in READ statements) 234. 325. T (\245 ) 221. 307. T (Variables of type REAL*16 \050quadruple precision\051) 234. 307. T (\245 ) 221. 289. T (DISPOSE = specifier in CLOSE statement) 234. 289. T 2 F (3.4) 72. 261. T (Pascal) 216. 261. T 0 F (Sun Pascal is an enhanced version of Pascal that supports ISO ) 217. 242. T (level 1 standard Pascal with extensions that include interlan-) 217. 229. T (guage calling, conformant arrays, a variable-length string type, ) 217. 216. T (and external C and FORTRAN declarations. Sun Pascal global ) 217. 203. T (optimization generates code that executes up to 50 percent ) 217. 190. T (faster than the unoptimized code. Sun Pascal offers a high ) 217. 177. T (degree of portability between Sun and other environments. ) 217. 164. T (Options for the Sun Pascal compiler include presence of a float-) 217. 151. T (ing-point processor, generation of code for symbolic debugger, ) 217. 138. T (and definitions of names to the preprocessor. Some of the fea-) 217. 125. T (tures of Sun Pascal include:) 217. 112. T (\245) 221. 97. T (Underscores _ and dollar $ allowed in identifiers) 234. 97. T (\245) 221. 79. T (Conformant array parameters) 234. 79. T 72. 163. 180. 236. C 72. 163. 180. 236. R 7 X V 4 F 0 X (Sun Pascal is an ) 74. 211. T (extension to ISO ) 74. 197. T (level 1 standard ) 74. 183. T (Pascal) 74. 169. T U 72. 509. 180. 598. C 72. 509. 180. 598. R 7 X V 4 F 0 X 0.33 (Sun supports all pop-) 74. 583. P 2.49 (ular languages, with) 74. 569. P 11. (added functionality) 74. 555. P 3.66 (for Fortran, Pascal,) 74. 541. P (Modula-2) 74. 527. T 74. 513. 178. 592. R 7 X V 0 X (Sun Fortran fea-) 74. 583. T (tures aid in portabil-) 74. 569. T (ity and development) 74. 555. T U FMENDPAGE %%Page: "5" 5 FMBEGINPAGE 0 F 0 X (Sun Microsystems Porting Guide) 72. 36. T (3-5) 524. 36. T (\245) 221. 710. T (Otherwise clause in case statements) 234. 710. T (\245) 221. 692. T 4 F (sizeof) 234. 692. T 0 F ( operator) 261.34 692. T (\245) 221. 674. T 4 F (shortreal) 234. 674. T 0 F ( and ) 278. 674. T 4 F (longreal) 301.33 674. T 0 F ( types) 342. 674. T (\245) 221. 656. T (External FORTRAN and C declarations) 234. 656. T (\245) 221. 638. T (Bit operations on integral types) 234. 638. T (\245) 221. 620. T (Preprocessor facilities) 234. 620. T (\245) 221. 602. T (PUBLIC and PRIVATE declarations) 234. 602. T (Sun Pascal deviates from the ISO Pascal standard in the follow-) 217. 582. T (ing ways:) 217. 569. T (\245) 221. 551. T (Operands of binary set of operators {*, +, -} are required to ) 234. 551. T (have identical types. The standard permits different types ) 234. 538. T (as long as the base types are compatible.) 234. 525. T (\245) 221. 507. T (According to the standard, the expression [maxint...-max-) 234. 507. T (int] should be ) 234. 494. T (equivalent to [ ]. The Sun Pascal compiler ) 303. 494. T (does not evaluate sets with elements larger than those ) 234. 481. T (indi-) 494.29 481. T (cated by the definition of type intset \050predefined as 0...127\051.) 234. 468. T (\245) 221. 449. T (Sun Pascal treats files declared as file of ) 234. 449. T 6 F (\324) 430.62 449. T 0 F (char\325 the same as ) 435.28 449. T (files declared as ) 234. 434. T 6 F (\324) 314.3 434. T 0 F (text.\325 In ISO Pascal the two types are ) 318.97 434. T (distinct.) 234. 420. T (\245) 221. 402. T (The value of ) 234. 402. T 4 F (m mod n ) 297.65 402. T 0 F (is not computed incorrectly for nega-) 341.98 402. T (tive values of ) 234. 389. T 4 F (m) 301.66 389. T 0 F (. According to the standard, the divisor ) 310.32 389. T (must be positive, and the result must be ) 234. 376. T (negative. Howev-) 427. 376. T (er, there is a documented workaround for this problem.) 234. 363. T (For further information on Sun\325s Pascal compiler, please refer to ) 217. 343. T (the ) 217. 330. T 4 F (Pascal Programmer\325s Guide for the Sun Workstation.) 234.66 330. T 2 F (3.5) 72. 305. T (Modula-2) 216. 305. T 0 F (Sun Modula-2 is a high-level language that offers the type-) 217. 286. T (checking and control of Pascal and a modular framework for ) 217. 273. T (large-system design and low-level system access. Sun Modu-) 217. 260. T (la-2 has a high degree of source portability. With system ) 217. 247. T (dependencies isolated in library modules, little effort is required ) 217. 234. T (to port a program to another environment. A built-in control ) 217. 221. T (system assures that only the current versions of object files ) 217. 208. T (build the complete program. Sun Modula-2 can access the C ) 217. 195. T (library or any other C routine, including those with variable ) 217. 182. T (length argument lists. The compiler also has special modules ) 217. 169. T (that provide complete access to the UNIX system and many ) 217. 156. T (other routines. Other Sun Modula-2 extensions include opti-) 217. 143. T (mization and automatic compiler-allocated register variables. ) 217. 130. T (Other Modula-2 features include:) 217. 117. T (\245) 221. 99. T (Complete implementation based on ) 234. 99. T 4 F (Wirth\325s Programming in ) 407.33 99. T (Modula-2) 234. 86. T 0 F ( , 2nd and 3rd editions) 281.33 86. T (\245) 221. 68. T (Identifiers containing _) 234. 68. T 72. 159. 180. 265. C 72. 159. 180. 265. R 7 X V 4 F 0 X (Sun Modula-2 imple-) 74. 254. T (mentation is based ) 74. 240. T (on Wirth\325s Program-) 74. 226. T (ming in Modula-2) 74. 212. T U 72. 477. 180. 566. C 72. 477. 180. 566. R 7 X V 4 F 0 X 0.33 (Sun supports all pop-) 74. 551. P 2.49 (ular languages, with) 74. 537. P 11. (added functionality) 74. 523. P 3.66 (for Fortran, Pascal,) 74. 509. P (Modula-2) 74. 495. T 74. 481. 178. 560. R 7 X V 0 X (Sun Pascal deviates ) 74. 551. T (from ISO Pascal ) 74. 537. T U FMENDPAGE %%Page: "6" 6 FMBEGINPAGE 0 F 0 X (Sun Microsystems Porting Guide) 380.33 36. T (3-6) 72. 36. T (\245) 221. 711. T (shortint, shortcard, and longreal data types) 234. 711. T (\245) 221. 693. T (Subranges preceded by optional base; identifiers such as ) 234. 693. T (Shortcard [10..20].) 234. 680. T (\245) 221. 662. T (Automatic compiler allocated register variables) 234. 662. T (\245) 221. 644. T (Augmented identification module syntax) 234. 644. T (\245) 221. 626. T (The Size function) 234. 626. T (\245) 221. 608. T (Functions that can return Array and Record data types ) 234. 608. T (\245) 221. 590. T (Compile-time evaluation of floating-point constant ) 234. 590. T (expressions, including ABS, Float, and Trunc.) 234. 577. T (\245) 221. 559. T (Operations on binary files) 234. 559. T (\245) 221. 541. T (Variety of data type conversions) 234. 541. T (\245) 221. 523. T (Operations on files, directories, and general I/O) 234. 523. T (\245) 221. 505. T (Memory management and UNIX system support facilities) 234. 505. T (\245) 221. 487. T (Dependency analyzer program that generates in tabular ) 234. 487. T (form the import/export ) 234. 474. T (For further information on Sun\325s Modula-2 compiler, please ) 217. 454. T (refer to ) 217. 441. T 4 F (Using Modula-2 on the Sun Workstation. ) 254.98 441. T 2 F (3.6) 72. 416. T (Assembly Languages) 216. 416. T 0 F (Because Sun) 217. 397. T 4 F ( ) 278.66 397. T 0 F (promotes portability and open systems, program-) 281.66 397. T (ming at the assembly language level is inefficient. Also, ) 217. 384. T 4 F (Sun\325s ) 492.3 384. T 0 F (compilers generate optimized code at different levels, which ) 217. 371. T (makes assembly language programming unnecessary. Those ) 217. 358. T (who want to program in assembly language may do so, mixing ) 217. 345. T (calls with other high-level languages. \050Sun supports three dif-) 217. 332. T (ferent assembly languages: Motorola 680X0, Sun\325s) 217. 319. T 4 F ( ) 463.64 319. T 0 F (SPARC, ) 466.64 319. T (and Intel 80386.\051 However, applications developed using ) 217. 306. T (assembly language is not portable within the Sun) 217. 293. T 4 F ( ) 452.66 293. T 0 F (environment.) 455.66 293. T (Sun supplies reference manuals for its own SPARC, as well as ) 217. 276. T (Motorola and the Intel 80386. Please refer to the) 217. 263. T 4 F ( Assembler ) 449.96 263. T (Language Reference Manual for the Sun Workstation, Sun-4 ) 217. 250. T (Assembly Language Reference Manual, ) 217. 237. T 0 F (and the) 410.63 237. T 4 F ( Sun386i Devel-) 445.62 237. T (oper\325s Guide \050814-1009\051.) 217. 224. T 0 F ( ) 339.98 224. T 2 F (3.7) 72. 199. T (Shell Programming) 216. 199. T 0 F (UNIX has one of the most powerful command languages. A ) 217. 180. T (shell program may be written using either the C-shell or the ) 217. 167. T (Bourne shell. The features supported by these two shells are ) 217. 154. T (very similar; the difference is the syntax. A major strength of ) 217. 141. T (these two languages is that both have central structures similar ) 217. 128. T (to a high-level programming language such as C or Pascal. ) 217. 115. T (However, since these programs are interpreted, they execute ) 217. 102. T (slower than the compiled programs. Shell programs are used ) 217. 89. T (widely for a variety of purposes. One of the main uses is for ) 217. 76. T 72. 275. 180. 388. C 72. 275. 180. 388. R 7 X V 4 F 0 X 0.33 (Sun supports all pop-) 73. 349. P 2.49 (ular languages, with) 73. 335. P 11. (added functionality) 73. 321. P 3.66 (for Fortran, Pascal,) 73. 307. P (Modula-2) 73. 293. T 73. 275. 177. 369. R 7 X V 0 X (Assembly Language ) 73. 360. T (programming is ) 73. 346. T (allowed, but not ) 73. 332. T (recommended) 73. 318. T U FMENDPAGE %%Page: "7" 7 FMBEGINPAGE 0 F 0 X (Sun Microsystems Porting Guide) 72. 36. T (3-7) 524. 36. T (system administration. Another typical use is to parse a com-) 217. 711. T (mand line and invoke the appropriate program. For more infor-) 217. 698. T (mation, please refer to the Commands Reference Manual for ) 217. 685. T (csh\0501\051 and sh\0501\051.) 217. 672. T 2 F (3.8) 72. 647. T (Cross-Compilers) 216. 647. T 0 F (With the introduction of heterogeneous networks, it has become ) 217. 628. T (necessary to provide software developers with tools that ) 217. 615. T (reduce the time and cost of producing software for multiple com-) 217. 602. T (puter architectures. The Sun cross-compiler products allow pro-) 217. 589. T (grammers working in Sun C, FORTRAN, or Pascal to produce ) 217. 576. T (executable binaries for all Sun architectures from a single Sun ) 217. 563. T (system. Because it runs PC applications, the Sun386) 217. 550. T 4 F (i) 471.66 550. T 0 F ( worksta-) 475. 550. T (tion family offers software developers a unique cross-develop-) 217. 537. T (ment environment. Source-code compatibility lets users simply ) 217. 524. T (recompile existing source code to use on any Sun hardware ) 217. 511. T (architecture. Figure 3-2 is a summary of Sun\325s cross-compiler ) 217. 498. T (availability.) 217. 485. T 72. 72. 540. 720. C 72. 236. 538. 479. C 72. 236. 538. 479. R 7 X V 72. 250. 538. 470. C 72. 250. 538. 470. R 7 X V 127. 334. 531. 334. 2 L 0 H 0 X N 0 F (Sun-2) 145. 415. T (Sun-4) 145. 366. T (Sun-3,-4) 145. 317. T 1. (* supported in the future) 257. 291. P 4 F 0.46 ( ) 205. 258. P 7 F 0.46 (Figure 3-2. Cross-Compilers Supported by Sun) 215.37 258. P 127. 359. 531. 359. 2 L N 126. 408. 530. 408. 2 L N (Host) 161. 443. T (Target) 261. 443. T (Languages) 380. 443. T (OS) 493. 443. T 126. 433. 531. 433. 2 L N 223. 461. 223. 309. 2 L N 341. 461. 341. 309. 2 L N 471. 460. 471. 309. 2 L N 127. 383. 531. 383. 2 L N 0 F (Sun-3) 145. 391. T (Sun-2,-3,-4) 145. 342. T 126. 308. 531. 461. R N 126. 431. 531. 431. 2 L N (Sun-3,-4) 252. 414. T (Sun-2,-4) 252. 390. T (Sun-2,-3) 252. 365. T (Sun-2,-3,-4) 252. 342. T (Sun386) 252. 316. T 4 F (i) 288.67 316. T 0 F 1.83 (F77, C, Pascal) 369. 414. P 1.83 (F77, C, Pascal) 369. 391. P 1.83 (F77, C, Pascal) 369. 365. P 1.83 (F77, C, Pascal) 369. 341. P 1.83 (F77, C, Pascal) 369. 316. P (3.X) 492. 414. T (3.X) 492. 390. T (3.X) 492. 366. T (4.X*) 492. 341. T (4.X*) 492. 316. T 72. 236. 538. 479. C 72. 72. 540. 720. C U 2 F 0 X (3.9) 72. 215. T (Calling across Languages) 216. 215. T 0 F (Sun supports multilanguage code in one application. Even ) 217. 196. T (though this support exists for all languages in general, there ) 217. 183. T (may be some restrictions.) 217. 170. T (Interaction of FORTRAN with other languages is different from ) 217. 153. T (others. When a FORTRAN program calls a C function, all the ) 217. 140. T (C entries are appended with an underscore "_" character ) 217. 127. T (because the FORTRAN linker appends this character to all ) 217. 114. T (external names. The symbol is undefined to the linker. It is ) 217. 101. T (also important to note that some operating systems may allow ) 217. 88. T (identical calling sequences from multiple languages. On Sun ) 217. 75. T 72. 501. 181. 617. C 72. 501. 181. 617. R 7 X V 4 F 0 X (Cross-compilers ) 72. 594. T (allow generation of ) 72. 580. T (code for all Sun plat-) 72. 566. T (forms from a single ) 72. 552. T (workstation) 72. 538. T U FMENDPAGE %%Page: "8" 8 FMBEGINPAGE 0 F 0 X (Sun Microsystems Porting Guide) 380.33 36. T (3-8) 72. 36. T (systems, some of the system calls are inherently tied to the C ) 217. 711. T (language. For instance, calls such as ) 217. 698. T 4 F (ioctl) 394.3 698. T 0 F ( and ) 415.64 698. T 4 F (malloc) 438.96 698. T 0 F ( do not ) 471.63 698. T (work from a FORTRAN program but function properly if invoked ) 217. 685. T (from a C program. If you need such functions, you can build a ) 217. 672. T (library of C functions providing these facilities, which the FOR-) 217. 659. T (TRAN programs can call. The FORTRAN library does work ) 217. 646. T (with a variety of system calls, for example getuid, signal. For ) 217. 633. T (additional information on Sun FORTRAN, please refer to the ) 217. 620. T 4 F (FORTRAN Programmer\325s Guide .) 217. 607. T 0 F (Figure 3-3 is a summary of interlanguage calling supported by ) 217. 590. T (Sun.) 217. 577. T 72. 72. 540. 720. C 217. 138. 540. 569. C 217. 138. 543. 569. R 7 X V 218. 149. 540. 561. C 218. 149. 548. 561. R 7 X V 0 F 0 X ( ) 141. 212. T 226. 177. 519. 554. R 0 H N 226. 516. 518. 516. 2 L N 226. 499. 518. 499. 2 L N 227. 480. 520. 480. 2 L N 227. 463. 519. 463. 2 L N 226. 446. 518. 446. 2 L N 227. 410. 519. 410. 2 L N 226. 391. 518. 391. 2 L N 226. 374. 519. 374. 2 L N 226. 355. 518. 355. 2 L N 227. 338. 519. 338. 2 L N 226. 321. 518. 321. 2 L N 227. 302. 519. 302. 2 L N 227. 284. 519. 284. 2 L N 227. 266. 519. 266. 2 L N 226. 249. 519. 249. 2 L N 227. 232. 519. 232. 2 L N 226. 213. 519. 213. 2 L N 227. 196. 519. 196. 2 L N 226. 427. 518. 427. 2 L N 5 F (C) 253. 523. T (FORTRAN) 341. 523. T (Implemented) 432. 522. T 0.83 (C ) 253. 506. P 0.83 (C ) 253. 489. P 0.83 (C ) 253. 470. P 1.67 (FORTRAN ) 253. 453. P 2.83 (FORTRAN ) 253. 435. P (FORTRAN) 253. 417. T 7 F ( ) 403. 350. T 5 F (Pascal) 253. 381. T (Pascal) 253. 363. T 0.95 (Pascal ) 253. 345. P (Pascal) 253. 327. T 3.06 (Modula-2 ) 253. 310. P 3.06 (Modula-2 ) 253. 291. P 1.01 (Modula-2 ) 253. 273. P 3.06 (Modula-2 ) 253. 255. P 0.72 (Lisp ) 253. 236. P 0.72 (Lisp ) 253. 218. P 0.72 (Lisp ) 253. 200. P 0.72 (Lisp ) 253. 181. P 0.83 ( C) 340. 381. P (Implemented) 433. 381. T (Implemented) 432. 506. T 0.73 (Pascal ) 340. 489. P 1.51 (Not Recommended) 432. 489. P (C) 340. 453. T (Implemented) 432. 453. T 0.72 (Lisp ) 340. 470. P (Implemented) 432. 470. T 0.95 (Pascal ) 339. 435. P 1.51 (Not Recommended) 432. 435. P 3.06 (Modula-2 ) 339. 417. P 4.73 (Not Implemented) 432. 417. P (FORTRAN) 253. 399. T 0.61 ( LISP ) 339. 400. P (Implemented) 433. 400. T 1.67 (FORTRAN ) 341. 363. P (Implemented) 433. 363. T 1.78 (Modula-2 ) 341. 346. P 4.73 (Not Implemented) 433. 344. P 0.72 (Lisp ) 341. 327. P (Implemented) 433. 327. T 0.83 (C ) 341. 309. P (Implemented) 433. 310. T 2.83 (FORTRAN ) 341. 291. P 4.73 (Not Implemented) 433. 291. P 0.95 (Pascal ) 341. 274. P 4.73 (Not Implemented) 433. 274. P 0.72 (Lisp ) 341. 256. P 4.73 (Not Implemented) 433. 256. P 0.83 (C ) 341. 237. P (Implemented) 433. 239. T 2.83 (FORTRAN ) 341. 219. P (Implemented) 433. 221. T (Pascal) 341. 200. T (Implemented) 433. 202. T (Modula-2) 341. 182. T 4.73 (Not Implemented) 433. 184. P 1.35 (Modula-2 ) 340. 506. P 7 F 1.55 (Figure 3-3. Sun\325s Interlanguage Calling Sequences) 240. 155. P 227. 535. 518. 535. 2 L N 227. 537. 519. 537. 2 L N 8 F 2.15 (Calling Language) 239. 543. P 2.49 (Called Language) 338. 543. P (Comments) 455. 543. T 423. 554. 423. 178. 2 L N 325. 554. 325. 177. 2 L N 217. 138. 540. 569. C 72. 72. 540. 720. C U FMENDPAGE %%Page: "9" 9 FMBEGINPAGE 0 F 0 X (Sun Microsystems Porting Guide) 72. 36. T (3-9) 524. 36. T 2 F (3.10) 72. 709. T (Common Lisp) 216. 709. T 0 F (Sun Common Lisp is the optimal Lisp program for both develop-) 217. 690. T (ment and delivery of symbolic computing applications, such as ) 217. 677. T (knowledge-based or expert systems, natural language process-) 217. 664. T (ing, and vision and speech recognition systems. ) 217. 651. T 4 F ( 1) 448.65 651. T 0 F ( is a complete ) 457.65 651. T (implementation of the Common Lisp standard as defined by the ) 217. 638. T (Common Lisp Committee and includes a host of additional fea-) 217. 625. T (tures.) 217. 612. T (Typically recognized strengths of the Lisp language are three-) 217. 595. T (fold: first, its symbolic computing capabilities for ease in repre-) 217. 582. T (senting data with qualitative descriptions as well as numerical; ) 217. 569. T (second, its inherently powerful debugging facilities; and third, ) 217. 556. T (its rapid prototyping capabilities to quickly develop an applica-) 217. 543. T (tion without the limitations of completely defining an algorithm ) 217. 530. T (and data structures prior to coding, facilitating a more natural ) 217. 517. T (and faster development cycle.) 217. 504. T (Sun Common Lisp extends the Common Lisp standard with ) 217. 487. T (development tools including an Emacs-style editor that is ) 217. 474. T (knowledgeable about Lisp syntax and allows for easy cus-) 217. 461. T (tomization of the editing environment for greater productivity. ) 217. 448. T (Debugging features include a data inspector, full function break-) 217. 435. T (ing, tracing, and single-stepping. The Pitman Error Handler, ) 217. 422. T (another Common Lisp Committee standard, is provided as a ) 217. 409. T (functional interface to the Lisp error handling system to cus-) 217. 396. T (tomize procedures for managing errors. ) 217. 383. T (To assist in porting, Common Lisp Object System \050CLOS\051, a ) 217. 366. T (widely accepted object-oriented programming system for Lisp ) 217. 353. T (machine compatibility, and Flavors, the emerging object-orient-) 217. 340. T (ed system, are provided. Two compilers are available: a devel-) 217. 327. T (opment compiler for convenient, rapid compilation speeds and a ) 217. 314. T (production compiler, which produces fast, efficient code to be ) 217. 301. T (used for later, more stable versions of an application. A com-) 217. 288. T (plete window toolkit enables fast, flexible window construction ) 217. 275. T (and management and features 2-D drawing primitives, pop-up ) 217. 262. T (menus, mouse-sensitive regions, and multiple viewports and ) 217. 249. T (fonts.) 217. 236. T (The Ephemeral Garbage Collection \050EGC\051 system is a useful ) 217. 219. T (feature for developers who are faced with applications in which ) 217. 206. T (large garbage collections interruptions can effect performance. ) 217. 193. T (EGC features brief, bounded garbage collection intervals that ) 217. 180. T (are virtually imperceptible to users, improving both develop-) 217. 167. T (ment and delivery runtime Lisp performance.) 217. 154. T (Sun Common Lisp\325s powerful Foreign Function Interface ) 217. 137. T (extends Lisp to take full advantage of code written in Sun\325s C, ) 217. 124. T (FORTRAN, and Pascal, enabling both calls to and from foreign ) 217. 111. T (functions. The Foreign Function Interface provides dynamic ) 217. 98. T 72. 271. 181. 386. C 72. 271. 181. 386. R 7 X V 4 F 0 X (Sun Common Lisp) 74. 335. T (provides a set ) 74. 321. T (of tools for the ) 74. 307. T (programmer) 74. 293. T U 72. 601. 176. 670. R 7 X V 4 F 0 X (Sun Lisp is based ) 72. 661. T (on the Common ) 72. 647. T (Lisp standard, with ) 72. 633. T (added functionality) 72. 619. T FMENDPAGE %%Page: "10" 10 FMBEGINPAGE 0 F 0 X (Sun Microsystems Porting Guide) 380.33 36. T (3-10) 72. 36. T (access to foreign structures and data sharing, allowing users to ) 217. 711. T (take full advantage of the graphics, networking, and host of Sun ) 217. 698. T (software solutions. ) 217. 685. T (For more information on Sun Common Lisp, the following docu-) 217. 668. T (mentation may be of interest: ) 217. 655. T (\245 ) 221. 637. T 4 F (Sun Common Lisp Data Sheet) 234. 637. T 0 F (\245) 221. 619. T 4 F (Sun Common Lisp Reference Manual ) 234. 619. T 0 F (\245 ) 221. 601. T 4 F (Sun Common Lisp User\325s Guide) 234. 601. T 0 F (\245 ) 221. 583. T 4 F (Sun Common Lisp Release Notes) 234. 583. T 2 F (3.10.1) 72. 555. T (Symbolic Programming Environment) 217. 555. T 0 F (Sun\325s Symbolic Programming Environment \050SPE) 217. 534. T 9 F (\252) 455.68 540. T 0 F (\051, which is ) 462.54 534. T (sold separately from Sun Common Lisp, is a complete and inte-) 217. 521. T (grated development environment that complements Sun Com-) 217. 508. T (mon Lisp with window-based debuggers, data inspectors, a ) 217. 495. T (source code manager, and other program analysis tools.) 217. 482. T (The Window-based Debugger allows users to examine and ) 217. 465. T (modify the runtime state of a program and more closely follow ) 217. 452. T (its execution to trace errors and bugs.) 217. 439. T (In a similar fashion, the Window-based Inspector gives users ) 217. 422. T (access to the internals of their complex data structures and vari-) 217. 409. T (ables. The user interface allows programmers to examine and ) 217. 396. T (set values within these structures so they can more easily ) 217. 383. T (debug and analyze their programs.) 217. 370. T (The SPE Application Manager is a window-oriented facility ) 217. 353. T (that manages large multifile applications by keeping track of the ) 217. 340. T (order in which files must be loaded and the dependencies held ) 217. 327. T (within the files. The Application Manager also keeps track of ) 217. 314. T (which files have been modified, by whom, and whether recompi-) 217. 301. T (lation is necessary.) 217. 288. T (The Editor is a specialized Lisp-sensitive editor with numerous ) 217. 271. T (commands for handling Lisp syntax, programs, and operations.) 217. 258. T (With the Source Code Finder, users can immediately access ) 217. 241. T (any source-code definition for functions or variables by entering ) 217. 228. T (the name of the symbol. The Source Code Finder then locates ) 217. 215. T (the source-code version of the symbol, whether or not it is load-) 217. 202. T (ed in the current session or is loaded only in compiled form. ) 217. 189. T (This facility makes debugging and understanding large applica-) 217. 176. T (tions manageable. ) 217. 163. T (The Cross-Reference Analyzer analyzes a user application and ) 217. 146. T (can graphically display the relationships within a program, such ) 217. 133. T (as which functions are called from where and which special vari-) 217. 120. T (ables are used by what functions.) 217. 107. T 72. 267. 188. 372. C 72. 267. 188. 372. R 7 X V U 73. 287. 181. 366. R 7 X V 4 F 0 X (SPE provides a vari-) 73. 357. T (ety of tools to aid) 73. 343. T (programmers in) 73. 329. T (developing Lisp-) 73. 315. T (based applications) 73. 301. T FMENDPAGE %%Page: "11" 11 FMBEGINPAGE 0 F 0 X (Sun Microsystems Porting Guide) 72. 36. T (3-11) 518. 36. T (These tools make the SPE a powerful environment for develop-) 217. 711. T (ing Lisp-based applications. The SPE, used with Sun Common ) 217. 698. T (Lisp, has been used to develop a wide range of AI applications, ) 217. 685. T (from expert systems to vision and natural language applica-) 217. 672. T (tions. ) 217. 659. T 2 F (3.11) 72. 634. T (Ada) 216. 634. T 0 F (Ada is one of the most recent programming languages to attract ) 217. 615. T (a mandated set of followers. The United States Department of ) 217. 602. T (Defense was active in the development and standardization of ) 217. 589. T (the language before 1983. The DoD continues today in the ) 217. 576. T (maintenance of the language via its Ada Joint Program Office ) 217. 563. T (\050AJPO\051 and now requires that all new mission-critical computer ) 217. 550. T (applications be written in Ada. The use of the language is also ) 217. 537. T (growing in foreign markets, especially in Europe, and it has ) 217. 524. T (become an international standard. Its use is also growing in ) 217. 511. T (commercial markets both here and abroad.) 217. 498. T (The Ada language is ideal for modern software engineering ) 217. 481. T (methodologies. It supports such principles as object-oriented ) 217. 468. T (design, rapid prototyping, and programming-in-the-large con-) 217. 455. T (cepts. Some of the language\325s most powerful characteristics ) 217. 442. T (include: capabilities for information hiding, abstract code repre-) 217. 429. T (sentations, strong type checking, exception handling, and man-) 217. 416. T (agement of compilation order dependency rules. Information ) 217. 403. T (about what a particular program unit does can be selectively ) 217. 390. T ("hidden" from the user of the program unit by judicious use of ) 217. 377. T (specification and code segments. The language also supports ) 217. 364. T ("generics," which provides the general abstract coding of partic-) 217. 351. T (ular functions that are applicable to a broad class of objects. ) 217. 338. T (Strong type checking is rigidly enforced and exception handling ) 217. 325. T (is designed into the language definition. Ada requires the exis-) 217. 312. T (tence of a "library manager," which assures that dependency ) 217. 299. T (information between program units and specification-body pairs ) 217. 286. T (are kept in proper sequence. In other words, required recompi-) 217. 273. T (lation sequences are automatically detected whenever any part ) 217. 260. T (of a program unit is recompiled.) 217. 247. T (There are many Ada compiler products available for Sun work-) 217. 230. T (stations. The three most popular, validated Ada compilers are ) 217. 217. T (supplied by TeleSoft, Verdix, and Alsys. For other vendors and ) 217. 204. T (further details, please refer to the ) 217. 191. T 4 F (Catalyst) 378.62 191. T 0 F ( catalog. These prod-) 418.62 191. T (ucts meet all of the Ada language requirements briefly outlined ) 217. 178. T (above. Each has some unique advantages to consider when ) 217. 165. T (porting an Ada application to a Sun platform. Each implements ) 217. 152. T (differently such things as interfaces to other languages \050usually ) 217. 139. T (C and FORTRAN\051, standard representations for variable types, ) 217. 126. T (multitasking, interrupt handling, and operating system support. ) 217. 113. T (All of these three companies typically offer their same Ada tech-) 217. 100. T (nology on other platforms. As a general rule, when porting an ) 217. 87. T 72. 115. 180. 210. C 72. 115. 180. 210. R 7 X V U FMENDPAGE %%Page: "12" 12 FMBEGINPAGE 0 F 0 X (Sun Microsystems Porting Guide) 380.33 36. T (3-12) 72. 36. T (Ada application it is easiest to stay with the compiler that was ) 217. 711. T (used with the original Ada application. ) 217. 698. T (TeleSoft\325s Ada technology \050TeleGen2) 217. 681. T 5 F (\252) 400.62 681. T 0 F (\051 seems to focus on ) 410.42 681. T (large Ada applications. At least one major aerospace company ) 217. 668. T (is using it for a very large Ada application \050over 1,000,000 lines ) 217. 655. T (of code\051. In fact, the product itself is written in Ada \050over ) 217. 642. T (500,000 lines of code\051 and is self-compiled. The primary devel-) 217. 629. T (opment platforms that TeleSoft\325s products operate on are ) 217. 616. T (VAX/VMS, IBM mainframes, and Sun. Some results have ) 217. 603. T (shown that if the existing Ada application is running with the ) 217. 590. T (DECAda compiler \050VMS\051 or the Rational compiler, it has a rea-) 217. 577. T (sonably good chance of being ported to Sun with the least ) 217. 564. T (amount of work using the TeleSoft product. ) 217. 551. T (Verdix\325s Ada technology \050VADS\051 is used extensively in the ) 217. 534. T (general UNIX marketplace. They have written much of their ) 217. 521. T (product in C and hence are frequently identified as the premier ) 217. 508. T (vendor of Ada products for the UNIX platform. If an Ada appli-) 217. 495. T (cation is already running with UNIX on a non-Sun platform, it ) 217. 482. T (may be easier to use VADS to port it to Sun.) 217. 469. T (Vendors porting Ada software from the IBM-PC should refer to ) 217. 452. T (the ) 217. 439. T 4 F (Catalyst) 234.66 439. T 0 F ( catalog for a compatible compiler on the Sun plat-) 274.67 439. T (form. ) 217. 426. T (The degree of difficulty in the port of an Ada application depends ) 217. 409. T (on how many system-specific features are used in the original ) 217. 396. T (hardware/software configuration. Furthermore, each of the ven-) 217. 383. T (dors mentioned have products in many of the same common ) 217. 370. T (areas and strict compartmentalization is not to be suggested by ) 217. 357. T (the above guidelines. The best rule is: If possible, use the ) 217. 344. T (same Ada compiler technology in porting from the original envi-) 217. 331. T (ronment to the Sun workstation.) 217. 318. T 2 F (3.11.1) 72. 293. T (Ada Programming Support Environment \050APSE\051) 217. 293. T 0 F (At the same time the Ada language was established, the con-) 217. 274. T (cept of a companion programming support environment was ) 217. 261. T (defined. It was even outlined in terms of a kernel APSE content ) 217. 248. T (\050KAPSE\051 and a minimal APSE content \050MAPSE\051 in the origi-) 217. 235. T (nal Stoneman documents. There have been continuing standard-) 217. 222. T (ization efforts in this area and currently out for review is a ) 217. 209. T (description of a Common APSE Interface Specification \050CAIS.\051 ) 217. 196. T (The three Ada compiler products from TeleSoft, Verdix, and ) 217. 179. T (Alsys are accompanied by APSE tools on the Sun workstation. ) 217. 166. T (As a minimum, the library manager and linker/loader are provid-) 217. 153. T (ed with any validated Ada compiler product. However, all of the ) 217. 140. T (above supply additional tools to help the developer in the appli-) 217. 127. T (cation coding and testing phases. They all supply dependency ) 217. 114. T (listers and source debuggers. Library maintenance tools and ) 217. 101. T 72. 452. 176. 531. R 7 X V 4 F 0 X (Porting Ada applica-) 72. 522. T (tions from other ) 72. 508. T (vendor platforms to ) 72. 494. T (Sun workstations) 72. 480. T 72. 176. 176. 255. R 7 X V 0 X (APSE is an environ-) 72. 246. T (ment for Ada pro-) 72. 232. T (grammers that ) 72. 218. T (increases ) 72. 204. T (productivity) 72. 190. T FMENDPAGE %%Page: "13" 13 FMBEGINPAGE 0 F 0 X (Sun Microsystems Porting Guide) 72. 36. T (3-13) 518. 36. T (code optimization options are also included. Some of the prod-) 217. 711. T (ucts also include other tools for execution profiling/tuning and ) 217. 698. T (automatic recompilation of dependent objects.) 217. 685. T (The exact specifics of the tool complement that each company ) 217. 668. T (offers is continually being enhanced. Check with each vendor for ) 217. 655. T (the exact content of their APSE when beginning a port of an ) 217. 642. T (Ada application. Some of the companies have also expanded ) 217. 629. T (their tools interface to include workstation "look and feel" ) 217. 616. T (\050window/mouse-based interaction\051. ) 217. 603. T (In addition to APSE availability, Ada bindings to other products ) 217. 586. T (are increasingly available on Sun workstations. Today, Tele-) 217. 573. T (Soft offers Ada bindings to SunOS and SunView so that the ) 217. 560. T (application developer can easily access system or window calls ) 217. 547. T (from the Ada source code without having to use the Ada prag-) 217. 534. T (ma interface construct to interface to C or other language bin-) 217. 521. T (dings to these same functions. Ada bindings also exist for GKS ) 217. 508. T (and the newly emerging PHIGS graphics standards. In window-) 217. 495. T (ing standards, there are public domain versions of Ada bindings ) 217. 482. T (to X11 available on Sun.) 217. 469. T (Much work is underway to expand APSE tools availability. Not ) 217. 452. T (only are the Ada compiler vendors expanding this set, but also ) 217. 439. T (third-party companies are writing tools that can be interfaced to ) 217. 426. T (any of the available Ada compiler products. One company, ) 217. 413. T (Xinotech, offers a syntax-directed editor that can help prompt a ) 217. 400. T (user through the editing phases of developing Ada applications. ) 217. 387. T (As CAIS becomes more widely accepted, it is likely that the ) 217. 374. T (richness of Ada tools will expand dramatically. Thus, the port-) 217. 361. T (ing and development of Ada applications will be made increas-) 217. 348. T (ingly easier.) 217. 335. T 2 F (3.12) 72. 310. T (Future Directions ) 216. 310. T 0 F (Sun is committed to supporting programming language stan-) 217. 291. T (dards. In the future, as standards develop for the different pro-) 217. 278. T (gramming languages, Sun will be actively involved in both speci-) 217. 265. T (fication and implementation of these standards. Areas in which ) 217. 252. T (standards are currently being developed include FORTRAN 8X, ) 217. 239. T (ANSI C, and C++. In addition, Sun is committed to supporting ) 217. 226. T (efforts by third-party language vendors to provide programming ) 217. 213. T (languages that conform to standards. These languages include ) 217. 200. T (Ada, BASIC, and COBOL.) 217. 187. T 72. 483. 180. 562. R 7 X V 4 F 0 X (Ada bindings to ) 72. 553. T (graphic packages ) 72. 539. T (like GKS, PHIGS, ) 72. 525. T (and window sys-) 72. 511. T (tems, like X11) 72. 497. T FMENDPAGE %%Trailer %%Pages: 13 1 %%DocumentFonts: Times-Roman %%+ Times-Bold %%+ Times-Italic