%!PS-Adobe-2.0 %%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software %%Title: spim.dvi %%Pages: 26 %%PageOrder: Ascend %%BoundingBox: 0 0 596 842 %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips spim.dvi %DVIPSParameters: dpi=600, compressed %DVIPSSource: TeX output 2002.08.14:1807 %%BeginProcSet: texc.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B /chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ /cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 {2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ 1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: special.pro %! TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N /vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N /rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N /@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{ /hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B /@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{ /urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known {userdict/md get type/dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup length 20 add dict copy def}if end md begin /letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{ itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack} if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{ noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{ Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale }if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState save N userdict maxlength dict begin/magscale true def normalscale currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts /psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR/showpage{}N/erasepage{}N/copypage{}N/p 3 def @MacSetUp}N/doclip{ psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath moveto}N/endTexFig{end psf$SavedState restore}N/@beginspecial{SDict begin/SpecialSave save N gsave normalscale currentpoint TR @SpecialDefaults count/ocount X/dcount countdictstack N}N/@setspecial{ CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR }{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if/showpage{}N/erasepage{}N/copypage{}N newpath}N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{end} repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N /@fedspecial{end}B/li{lineto}B/rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X /yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet TeXDict begin 39158280 55380996 1000 600 600 (spim.dvi) @start %DVIPSBitmapFont: Fa cmitt10 10.95 1 /Fa 1 123 df<027E137C903901FF807E0107EBC0FE4913F14913F949EBFFFC4914F814 C349C613F049EB3FE0000115C049EB7F8015FF4A130039007003FE90380007FC4A5AEC3F F04A5A4A5A495B4948C7FC495A4948137C494813FC90393FE001FED97FC013FCEBFF8048 EB0003484814F8000714079039FFC00FF048EBE01F489038F83FE04890B512C0A2D87FE3 14800181140039FF007FFC007E6D5A007CEB0FC0272978A730>122 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fb cmsy8 8 1 /Fb 1 122 df<1338137CA81338A7007C137CB512FEA3387C387C00001300A5137CB3A4 1338AD173D7CAE20>121 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fc cmsy10 10 2 /Fc 2 7 df<007FB81280B912C0A26C17803204799641>0 D<15301578B3A6007FB812F8 B912FCA26C17F8C80078C8FCB3A3007FB812F8B912FCA26C17F836367BB641>6 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fd cmtt9 9 4 /Fd 4 116 df36 D56 D<387FE0FFD8FFF313C090B512F0816C800003EB81FE49 C67E49EB3F8049131F16C049130FA216E01507A6150F16C07F151F6DEB3F80157F6DEBFF 009038FF83FEECFFFC5D5D01F313C0D9F0FEC7FC91C8FCAC387FFF80B57EA36C5B23317F 9F27>112 D<9038FFF3800007EBFFC0121F5A5AEB803F38FC000F5AA2EC07806C90C7FC EA7F8013FC383FFFF06C13FC000713FF00011480D8000F13C09038003FE014070078EB03 F000FC1301A27E14036CEB07E0EBE01F90B512C01580150000FB13FC38707FF01C207B9F 27>115 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fe cmtt10 10 7 /Fe 7 119 df36 D48 D<1307497EA2131FA2133F137F13 FF5A1207127FB5FC13DF139FEA7C1F1200B3AE007FB512E0B612F0A36C14E01C3477B32C >I I<3801FFF0000713FE001F6D7E15E048809038C01FF81407EC01FC381F80000006C77EC8 127EA3ECFFFE131F90B5FC1203120F48EB807E383FF800EA7FC090C7FC12FE5AA47E007F 14FEEB8003383FE01F6CB612FC6C15FE6C14BF0001EBFE1F3A003FF007FC27247CA32C> 97 D102 D<3A7FFF01FFFCB514FE148314016C15FC3A03E0000F80A26D131F00011500A26D5B0000 143EA26D137E017C137CA2017E13FC013E5BA2EB3F01011F5BA21483010F5BA214C70107 5BA214EF01035BA214FF6D90C7FCA26D5A147C27247EA32C>118 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Ff cmbx10 10 26 /Ff 26 122 df65 D67 DI70 D78 D82 DI85 D97 D<13FFB5FCA412077EAF4AB47E020F13F0023F13FC9138FE03FFDAF000 13804AEB7FC00280EB3FE091C713F0EE1FF8A217FC160FA217FEAA17FCA3EE1FF8A217F0 6E133F6EEB7FE06E14C0903AFDF001FF80903AF8FC07FE009039F03FFFF8D9E00F13E0D9 C00390C7FC2F3A7EB935>I<903801FFC0010F13FC017F13FFD9FF8013802603FE0013C0 48485AEA0FF8121F13F0123F6E13804848EB7F00151C92C7FC12FFA9127FA27F123FED01 E06C7E15036C6CEB07C06C6C14806C6C131FC69038C07E006DB45A010F13F00101138023 257DA42A>I I<903803FF80011F13F0017F13FC3901FF83FE3A03FE007F804848133F484814C0001FEC 1FE05B003FEC0FF0A2485A16F8150712FFA290B6FCA301E0C8FCA4127FA36C7E1678121F 6C6C14F86D14F000071403D801FFEB0FE06C9038C07FC06DB51200010F13FC010113E025 257DA42C>I<161FD907FEEBFFC090387FFFE348B6EAEFE02607FE07138F260FF801131F 48486C138F003F15CF4990387FC7C0EEC000007F81A6003F5DA26D13FF001F5D6C6C4890 C7FC3907FE07FE48B512F86D13E0261E07FEC8FC90CAFCA2123E123F7F6C7E90B512F8ED FF8016E06C15F86C816C815A001F81393FC0000F48C8138048157F5A163FA36C157F6C16 006D5C6C6C495AD81FF0EB07FCD807FEEB3FF00001B612C06C6C91C7FC010713F02B377D A530>103 D105 D<13FFB5FCA412077EB3B3ACB512FCA4163A7DB91B> 108 D<01FED97FE0EB0FFC00FF902601FFFC90383FFF80020701FF90B512E0DA1F819039 83F03FF0DA3C00903887801F000749DACF007F00034914DE6D48D97FFC6D7E4A5CA24A5C A291C75BB3A3B5D8FC1FB50083B512F0A44C257DA451>I<01FEEB7FC000FF903803FFF8 020F13FE91381F03FFDA3C011380000713780003497E6D4814C05CA25CA291C7FCB3A3B5 D8FC3F13FFA430257DA435>I<903801FFC0010F13F8017F13FFD9FF807F3A03FE003FE0 48486D7E48486D7E48486D7EA2003F81491303007F81A300FF1680A9007F1600A3003F5D 6D1307001F5DA26C6C495A6C6C495A6C6C495A6C6C6CB45A6C6CB5C7FC011F13FC010113 C029257DA430>I<9039FF01FF80B5000F13F0023F13FC9138FE07FFDAF0011380000749 6C13C06C0180EB7FE091C713F0EE3FF8A2EE1FFCA3EE0FFEAA17FC161FA217F8163F17F0 6E137F6E14E06EEBFFC0DAF00313809139FC07FE0091383FFFF8020F13E0020390C7FC91 C9FCACB512FCA42F357EA435>I<9038FE03F000FFEB0FFEEC3FFF91387C7F809138F8FF C000075B6C6C5A5CA29138807F80ED3F00150C92C7FC91C8FCB3A2B512FEA422257EA427 >114 D<90383FF0383903FFFEF8000F13FF381FC00F383F0003007E1301007C130012FC 15787E7E6D130013FCEBFFE06C13FCECFF806C14C06C14F06C14F81203C614FC131F9038 007FFE140700F0130114007E157E7E157C6C14FC6C14F8EB80019038F007F090B512C000 F8140038E01FF81F257DA426>I<130FA55BA45BA25B5BA25A1207001FEBFFE0B6FCA300 0390C7FCB21578A815F86CEB80F014816CEBC3E090383FFFC06D1380903803FE001D357E B425>I<01FFEC3FC0B5EB3FFFA4000714016C80B3A35DA25DA26C5C6E4813E06CD9C03E 13FF90387FFFFC011F13F00103138030257DA435>II121 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fg cmmi10 10.95 3 /Fg 3 123 df<121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A0A798919>58 D<01F8EB0FF0D803FEEB3FFC3A078F80F03E3A0F0F83C01F3B0E07C7800F80001CEBCF00 02FE80003C5B00385B495A127800705BA200F049131F011F5D00005BA2163F013F92C7FC 91C7FC5E167E5B017E14FE5EA201FE0101EB03804914F8A203031307000103F013005B17 0E16E000035E49153C17385F0007913801F1E0496DB45AD801C0023FC7FC31297EA737> 110 D<02F8130ED903FE131ED90FFF131C49EB803C49EBC0784914F090397E07F1E09038 F800FF49EB1FC049EB07800001EC0F006C48131E90C75A5D5D4A5A4A5A4A5A4AC7FC143E 14785C495A495A495A49C8FC011E14E05B5B4913014848EB03C0485AD807F8EB078048B4 131F3A1F87E07F00391E03FFFE486C5B00785CD870005B00F0EB7FC048011FC7FC27297D A72A>122 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fh cmmi8 8 1 /Fh 1 111 df<3907C007E0391FE03FF83918F8783E393879E01E39307B801F38707F00 126013FEEAE0FC12C05B00815C0001143E5BA20003147E157C5B15FC0007ECF8081618EB C00115F0000F1538913803E0300180147016E0001F010113C015E390C7EAFF00000E143E 251F7E9D2B>110 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fi cmbx10 10.95 34 /Fi 34 122 df<041E143C043F147EA34C14FE047E5CA304FE13014C5CA3030114034C5C A2030314074C5CA30307140F4C5CA3030F141F4C5CA2007FBB1280BC12C0A4003F1A80C8 007EC700FCC8FCA203FE13014B5CA3020114034B5CA2020314074B5CA30207140F4B5CA2 003FBB1280BC12C0A46C1A80C7003FC7007EC9FCA24A14FE027E5CA202FE13014A5CA201 0114034A5CA3010314074A5CA20107140F4A5CA2010F141F4A5CA3011F143F4A91CAFCA3 6DC7121E4A517ABE57>35 D45 DI<140F143F5C495A130F48B5FCB6 FCA313F7EAFE071200B3B3A8007FB612F0A5243C78BB34>49 D<903803FF80013F13F890 B512FE00036E7E4881260FF80F7F261FC0037F4848C67F486C6D7E6D6D7E487E6D6D7EA2 6F1380A46C5A6C5A6C5A0007C7FCC8FC4B1300A25E153F5E4B5AA24B5A5E4A5B4A5B4A48 C7FC5D4A5AEC1FE04A5A4A5A9139FF000F80EB01FC495A4948EB1F00495AEB1F8049C7FC 017E5C5B48B7FC485D5A5A5A5A5AB7FC5EA4293C7BBB34>I58 D66 D73 D<003FB912FCA5903BFE003FFE003FD87FF0EE0FFE01C0160349160190C7 1500197E127EA2007C183EA400FC183F48181FA5C81600B3AF010FB712F8A5403D7CBC49 >84 D87 D<007FB6013FB512F0A5D8001F01C0D9003FC7FC6D6D147E18 FE6D6D5C6D6D495A6D4B5A6F13076D6D5C6E6C495A4D5A6EEB803F6E01C090C8FC6E147E 705A6E13F16EEBF9F86EEBFBF0EEFFE0806F5B5F816F7F81836F7F81834B7F4B7F5D83DB 3F3F7FED7E1F03FE804B6C7F4A486C7F4A487E0207814B6C7F4A487E4A4880023F6E7E92 C76C7F027E804A8201016F7F4A6E7F495A49486E7F010F6F7F4A80B600C0017F90B5FCA5 483E7DBD4F>I<903807FFC0013F13F848B6FC48812607FE037F260FF8007F6DEB3FF048 6C806F7EA36F7EA26C5A6C5AEA01E0C8FC153F91B5FC130F137F3901FFFE0F4813E0000F 1380381FFE00485A5B485A12FF5BA4151F7F007F143F6D90387BFF806C6C01FB13FE391F FF07F36CEBFFE100031480C6EC003FD91FF890C7FC2F2B7DA933>97 D<13FFB5FCA512077EAFEDFFE0020713FC021FEBFF80027F80DAFF8113F09139FC003FF8 02F06D7E4A6D7E4A13074A80701380A218C082A318E0AA18C0A25E1880A218005E6E5C6E 495A6E495A02FCEB7FF0903AFCFF01FFE0496CB55AD9F01F91C7FCD9E00713FCC7000113 C033407DBE3A>IIIII<903A03FF8007F0 013F9038F83FF8499038FCFFFC48B712FE48018313F93A07FC007FC34848EB3FE1001FED F1FC4990381FF0F81700003F81A7001F5DA26D133F000F5D6C6C495A3A03FF83FF8091B5 C7FC4814FC01BF5BD80F03138090CAFCA2487EA27F13F06CB6FC16F016FC6C15FF17806C 16C06C16E01207001F16F0393FE000034848EB003F49EC1FF800FF150F90C81207A56C6C EC0FF06D141F003F16E001F0147FD81FFC903801FFC02707FF800F13006C90B55AC615F8 013F14E0010101FCC7FC2F3D7DA834>I<13FFB5FCA512077EAFED1FF8EDFFFE02036D7E 4A80DA0FE07F91381F007F023C805C4A6D7E5CA25CA35CB3A4B5D8FE0FB512E0A5333F7C BE3A>II<13FFB5FCA512077EB092380FFFFEA5DB01FEC7FC4B5A ED07F0ED1FE04B5A4B5A4BC8FCEC03FC4A5A4A5A141F4A7EECFFFCA2818102E77F02C37F 148102007F826F7E6F7E151F6F7E826F7F6F7F816F7FB5D8FC07EBFFC0A5323F7DBE37> 107 D<13FFB5FCA512077EB3B3AFB512FCA5163F7CBE1D>I<01FFD91FF8ECFFC0B590B5 010713F80203DAC01F13FE4A6E487FDA0FE09026F07F077F91261F003FEBF8010007013E DAF9F0806C0178ECFBC04A6DB4486C7FA24A92C7FC4A5CA34A5CB3A4B5D8FE07B5D8F03F EBFF80A551297CA858>I<01FFEB1FF8B5EBFFFE02036D7E4A80DA0FE07F91381F007F00 07013C806C5B4A6D7E5CA25CA35CB3A4B5D8FE0FB512E0A533297CA83A>II<01FFEBFFE0B5000713FC021FEBFF80027F80DA FF8113F09139FC007FF8000701F06D7E6C496D7E4A130F4A6D7E1880A27013C0A38218E0 AA4C13C0A318805E18005E6E5C6E495A6E495A02FCEBFFF0DAFF035B92B55A029F91C7FC 028713FC028113C00280C9FCACB512FEA5333B7DA83A>II<3901FE01FE00FF903807FF804A13E04A13F0EC3F1F91387C3FF800 0713F8000313F0EBFFE0A29138C01FF0ED0FE091388007C092C7FCA391C8FCB3A2B6FCA5 25297DA82B>I<90383FFC1E48B512BE000714FE5A381FF00F383F800148C7FC007E147E A200FE143EA27E7F6D90C7FC13F8EBFFE06C13FF15C06C14F06C806C806C806C80C61580 131F1300020713C014000078147F00F8143F151F7EA27E16806C143F6D140001E013FF90 38F803FE90B55A15F0D8F87F13C026E00FFEC7FC222B7DA929>IIIII121 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fj cmsy10 10.95 2 /Fj 2 122 df<007FB812F8B912FCA26C17F83604789847>0 D121 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fk cmtt10 10.95 59 /Fk 59 123 df<00101304007C131F00FEEB3F80A26C137FA248133FB2007E1400007C7F 003C131E00101304191C75B830>34 D<903907C007C0A2496C487EA8011F131FA202C05B A3007FB7FCA2B81280A36C16006C5D3A007F807F80A2020090C7FCA9495BA2003F90B512 FE4881B81280A36C1600A22701FC01FCC7FCA300031303A201F85BA76C486C5AA229387D B730>I<1438147C14FCA4EB03FF011F13E090B512FC4880000780481580261FFEFD13C0 9039F0FC3FE0D83FC0131FD87F80EB0FF001001307007E15F800FE14035A1507A36CEC03 F0A2007F91C7FC138013C0EA3FF0EA1FFE13FF6C13FF6C14E0000114F86C6C7F011F7F01 037F0100148002FD13C09138FC7FE0151FED0FF015070018EC03F8127E1501B4FCA35AA2 6CEC03F07E01801307ED0FE0D83FC0131F01F0EB7FC0D81FFEB512806CB612006C5C6C5C C614F0013F13C0D907FEC7FCEB00FCA5147C143825477BBE30>I<141E147F14FF5BEB03 FEEB07FCEB0FF0EB1FE0EB3FC0EB7F80EBFF00485A5B12035B485A120F5BA2485AA2123F 5BA2127F90C7FCA412FEAD127FA47F123FA27F121FA26C7EA27F12076C7E7F12017F6C7E EB7F80EB3FC0EB1FE0EB0FF0EB07FCEB03FEEB01FF7F147F141E184771BE30>40 D<127812FE7E7F6C7E6C7EEA0FF06C7E6C7E6C7E6C7EEB7F80133F14C0131FEB0FE014F0 1307A2EB03F8A214FC1301A214FE1300A4147FAD14FEA4130114FCA2130314F8A2EB07F0 A2130F14E0EB1FC0133F1480137FEBFF00485A485A485A485AEA3FE0485A485A90C7FC5A 1278184778BE30>I<143EA2147FAF007FB7FCA2B81280A36C1600A2C76CC8FCAF143EA2 29297DAF30>43 DI<007FB6 12F0A2B712F8A36C15F0A225077B9E30>I<120FEA3FC0EA7FE0A2EAFFF0A4EA7FE0A2EA 3FC0EA0F000C0C6E8B30>I<16F01501ED03F8A21507A2ED0FF0A2ED1FE0A2ED3FC0A2ED 7F80A2EDFF00A24A5AA25D1403A24A5AA24A5AA24A5AA24A5AA24A5AA24AC7FCA2495AA2 5C1303A2495AA2495AA2495AA2495AA2495AA249C8FCA2485AA25B1203A2485AA2485AA2 485AA2485AA2485AA248C9FCA25AA2127CA225477BBE30>I<14FE903807FFC0497F013F 13F8497F90B57E48EB83FF4848C6138049137F4848EB3FC04848EB1FE049130F001F15F0 491307A24848EB03F8A290C712014815FCA400FEEC00FEAD6C14016C15FCA36D1303003F 15F8A26D1307001F15F0A26D130F6C6CEB1FE0A26C6CEB3FC06C6CEB7F806D13FF2601FF 8313006CEBFFFE6D5B6D5B010F13E06D5BD900FEC7FC273A7CB830>IIIII<000FB612804815C05AA316800180C8FCAEEB83FF019F 13C090B512F015FC8181D9FE0313809039F0007FC049133F0180EB1FE06CC7120F000E15 F0C81207A216F81503A31218127EA2B4FC150716F048140F6C15E06C141F6DEB3FC06D13 7F3A3FE001FF80261FFC0F13006CB55A6C5C6C5C6C14E06C6C1380D90FFCC7FC25397BB7 30>I<127CB712FC16FEA416FC48C7EA0FF816F0ED1FE0007CEC3FC0C8EA7F80EDFF00A2 4A5A4A5A5D14075D140F5D4A5AA24A5AA24AC7FCA25C5C13015CA213035CA213075CA449 5AA6131F5CA96D5A6DC8FC273A7CB830>55 D<49B4FC010F13E0013F13F890B57E488048 8048010113803A0FFC007FC0D81FF0EB3FE04848131F49EB0FF048481307A290C7EA03F8 5A4815FC1501A416FEA37E7E6D1303A26C6C13076C6C130F6D133FD80FFC13FF6CB6FC7E 6C14FE6C14F9013FEBE1FC010F138190380060011400ED03F8A2150716F0150F000F15E0 486C131F486CEB3FC0157FEDFF804A1300EC07FE391FF01FFC90B55A6C5C6C5C6C1480C6 49C7FCEB3FF0273A7CB830>57 D<120FEA3FC0EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F 00C7FCAF120FEA3FC0EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F000C276EA630>I<16F0 1503ED07F8151F157FEDFFF014034A13C0021F138091383FFE00ECFFF8495B010713C049 5BD93FFEC7FC495A3801FFF0485B000F13804890C8FCEA7FFC5BEAFFE05B7FEA7FF87FEA 1FFF6C7F000313E06C7F38007FFC6D7E90380FFF806D7F010113F06D7FEC3FFE91381FFF 80020713C06E13F01400ED7FF8151F1507ED03F01500252F7BB230>60 D<007FB7FCA2B81280A36C16006C5DCBFCA7003FB612FE4881B81280A36C1600A229157D A530>I<1278127EB4FC13C07FEA7FF813FEEA1FFF6C13C000037F6C13F86C6C7EEB1FFF 6D7F010313E06D7F9038007FFC6E7E91380FFF806E13C0020113F080ED3FF8151F153FED FFF05C020713C04A138091383FFE004A5A903801FFF0495B010F13804990C7FCEB7FFC48 485A4813E0000F5B4890C8FCEA7FFE13F8EAFFE05B90C9FC127E1278252F7BB230>II<91387F803C903903FFF03E49EBFC7E011F13FE49EBFFFE5B9038FFE07F48EB 801F3903FE000F484813075B48481303A2484813015B123F491300A2127F90C8FC167C16 005A5AAC7E7EA2167C6D14FE123FA27F121F6D13016C6C14FCA26C6CEB03F86D13076C6C EB0FF03901FF801F6C9038E07FE06DB512C06D14806D1400010713FC6D13F09038007FC0 273A7CB830>67 D<003FB712804816C0B8FCA27E7ED801FCC7121FA8EE0F8093C7FCA515 3E157FA490B6FCA69038FC007FA4153E92C8FCAE383FFFF8487FB5FCA27E6C5B2A387EB7 30>70 D<007FB6FCB71280A46C1500260007F0C7FCB3B3A8007FB6FCB71280A46C150021 3879B730>73 D77 DI<007FB512F0B612FE6F7E16E0826C813903F8 003FED0FFCED03FE15016F7EA2821780163FA6167F17005EA24B5A1503ED0FFCED3FF890 B6FC5E5E16804BC7FC15F001F8C9FCB0387FFFC0B57EA46C5B29387EB730>80 D<003FB57E4814F0B612FC15FF6C816C812603F8017F9138003FF0151F6F7E1507150382 1501A515035E1507150F4B5A153F4AB45A90B65A5E93C7FC5D8182D9F8007FED3FE0151F 150F821507A817F8EEF1FCA53A3FFF8003FB4801C0EBFFF8B56C7E17F06C496C13E06C49 EB7FC0C9EA1F002E397FB730>82 D<90390FF803C0D97FFF13E048B512C74814F74814FF 5A381FF80F383FE001497E4848137F90C7123F5A48141FA2150FA37EED07C06C91C7FC7F 7FEA3FF0EA1FFEEBFFF06C13FF6C14E0000114F86C80011F13FF01031480D9003F13C014 019138007FE0151FED0FF0A2ED07F8A2007C140312FEA56C140716F07F6DEB0FE06D131F 01F8EB3FC001FF13FF91B51280160000FD5CD8FC7F13F8D8F81F5BD878011380253A7BB8 30>I<127CA212FEA27EA26C7EA26C7EA26C7EA26C7EA26C7EA26C7EA212017FA26C7EA2 6D7EA26D7EA26D7EA26D7EA26D7EA26D7EA2130180A26D7EA26E7EA26E7EA26E7EA26E7E A26E7EA26E7EA2140181A26E7EA2ED7F80A2ED3FC0A2ED1FE0A2ED0FF0A2ED07F8A21503 A2ED01F0150025477BBE30>92 D<007FB612F0A2B712F8A36C15F0A225077B7D30>95 D97 DII<913801FFE04A7F5CA28080EC0007AAEB03FE90381FFF874913E790B6FC5A5A48 1303380FFC00D81FF0133F49131F485A150F4848130790C7FCA25AA25AA87E6C140FA27F 003F141F6D133F6C7E6D137F390FF801FF2607FE07EBFFC06CB712E06C16F06C14F76D01 C713E0011F010313C0D907FCC8FC2C397DB730>I<49B4FC010713E0011F13F8017F7F90 B57E488048018113803A07FC007FC04848133FD81FE0EB1FE0150F484814F0491307127F 90C7FCED03F85A5AB7FCA516F048C9FC7E7EA27F003FEC01F06DEB03F86C7E6C7E6D1307 D807FEEB1FF03A03FFC07FE06C90B5FC6C15C0013F14806DEBFE00010713F8010013C025 2A7CA830>IIII<14E0EB03F8A2497EA36D5AA2EB00E091C8FCA9381FFFF848 7F5AA27E7EEA0001B3A9003FB612C04815E0B7FCA27E6C15C023397AB830>III<387FFFF8B57EA47EEA0001B3B3A8007FB612 F0B712F8A46C15F025387BB730>I<02FC137E3B7FC3FF01FF80D8FFEF01877F90B500CF 7F15DF92B57E6C010F13872607FE07EB03F801FC13FE9039F803FC01A201F013F8A301E0 13F0B3A23C7FFE0FFF07FF80B548018F13C0A46C486C01071380322881A730>II<49B4FC010F13E0013F13F8497F90B57E0003ECFF8014013A 07FC007FC04848EB3FE0D81FE0EB0FF0A24848EB07F8491303007F15FC90C71201A300FE EC00FEA86C14016C15FCA26D1303003F15F86D13076D130F6C6CEB1FF06C6CEB3FE06D13 7F3A07FF01FFC06C90B512806C15006C6C13FC6D5B010F13E0010190C7FC272A7CA830> II<49B413F8010FEBC1FC01 3F13F14913FD48B6FC5A481381390FFC007F49131F4848130F491307485A491303127F90 C7FC15015A5AA77E7E15037FA26C6C1307150F6C6C131F6C6C133F01FC137F3907FF01FF 6C90B5FC6C14FD6C14F9013F13F1010F13C1903803FE0190C7FCAD92B512F84A14FCA46E 14F82E3C7DA730>II<90381FFC1E48B5129F000714FF5A5A5A387FF007EB 800100FEC7FC4880A46C143E007F91C7FC13E06CB4FC6C13FC6CEBFF806C14E0000114F8 6C6C7F01037F9038000FFF02001380007C147F00FEEC1FC0A2150F7EA27F151F6DEB3F80 6D137F9039FC03FF0090B6FC5D5D00FC14F0D8F83F13C026780FFEC7FC222A79A830>I< EB0780497E131FA9003FB612E04815F0B7FCA36C15E026001FC0C7FCB216F8ED01FCA5EC E003010FEB07F814F09138FC1FF06DB512E06D14C016806D14009038007FFCEC1FF02633 7EB130>II<3B3FFFC07FFF80486DB512C0B515E0A26C16C06C496C13803B01 F80003F000A26D130700005DA26D130F017E5CA2017F131F6D5CA2EC803F011F91C7FCA2 6E5A010F137EA2ECE0FE01075BA214F101035BA3903801FBF0A314FF6D5BA36E5A6E5A2B 277EA630>I<3B3FFFC01FFFE0486D4813F0B515F8A26C16F06C496C13E0D807E0C7EA3F 00A26D5C0003157EA56D14FE00015DEC0F80EC1FC0EC3FE0A33A00FC7FF1F8A2147DA2EC FDF9017C5C14F8A3017E13FBA290393FF07FE0A3ECE03FA2011F5C90390F800F802D277F A630>I<3A3FFF81FFFC4801C37FB580A26C5D6C01815BC648C66CC7FC137FEC80FE9038 3F81FC90381FC3F8EB0FE3ECE7F06DB45A6D5B7F6D5B92C8FC147E147F5C497F81903803 F7E0EB07E790380FE3F0ECC1F890381F81FC90383F80FE90387F007E017E137F01FE6D7E 48486D7E267FFF80B5FCB500C1148014E3A214C16C0180140029277DA630>I<3B3FFFC0 7FFF80486DB512C0B515E0A26C16C06C496C13803B01FC0003F000A2000014076D5C137E 150F017F5C7F151FD91F805BA214C0010F49C7FCA214E00107137EA2EB03F0157C15FCEB 01F85DA2EB00F9ECFDF0147D147FA26E5AA36E5AA35DA2143F92C8FCA25C147EA2000F13 FE486C5AEA3FC1EBC3F81387EB8FF0EBFFE06C5B5C6C90C9FC6C5AEA01F02B3C7EA630> I<001FB612FC4815FE5AA316FC90C7EA0FF8ED1FF0ED3FE0ED7FC0EDFF80003E491300C7 485A4A5A4A5A4A5A4A5A4A5A4A5A4990C7FC495A495A495A495A495A495A4948133E4890 C7127F485A485A485A485A485A48B7FCB8FCA46C15FE28277DA630>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fl cmti10 10.95 56 /Fl 56 123 df<933807FF80043F13E09338FE00F8DB01F0133EDB07E0130E4B48131F4C 137F031F14FF4BC7FCA218FE157E1878180015FE5DA31401A25DA414030103B712F0A218 E0903A0003F000070207140F4B14C0A3171F020F15805DA2173F1800141F5D5F177EA214 3F92C712FE5FA34A1301027EECF81CA3160302FEECF03C4A1538A21878187013014A0101 13F018E0933800F1C0EF7F804948EC1F0094C7FCA35C1307A2001E5B127F130F00FF5BA2 49CAFC12FEEAF81EEA703CEA7878EA1FF0EA07C0385383BF33>12 DI40 D<14031580A2EC01C0EC00E0A21570A215781538153CA3151EA4151FA2150FA7151FA915 3FA2153EA3157EA2157CA215FCA215F8A21401A215F0A2140315E0A2140715C0A2EC0F80 A2141F15005C143EA25CA25CA2495A5C1303495A5C130F49C7FC131E5B137C5B5B485A48 5A485A48C8FC121E5A12705A5A205A7FC325>I44 D<387FFFFCA3B5FCA21605799521>I<15031507150F151F151E153E15 7EEC01FEEC03FC1407141FEB01FF90380FFBF8EB1FC3EB0E07130015F0A2140FA215E0A2 141FA215C0A2143FA21580A2147FA21500A25CA25CA21301A25CA21303A25CA21307A25C A2130FA25CA2131FA25CEB7FE0B612F0A215E0203D77BC2E>49 D<171C173C177CA217FC A216011603A21607A24C7EA2161DA216391679167116E1A2ED01C1A2ED03811507160115 0EA2031C7FA24B7EA25D15F05D4A5AA24A5AA24AC7FC5C140E5C021FB6FC4A81A20270C7 127FA25C13015C495AA249C8FCA2130E131E131C133C5B01F882487ED807FEEC01FFB500 E0017FEBFF80A25C39417BC044>65 D<49B712C018F818FE903B0003FC0001FF9438007F 804BEC3FC0A2F01FE014074B15F0180FA2140F5D181FA2021F16E05D183F19C0023FED7F 804B14FF19004D5A027F4A5A92C7EA07F0EF1FE0EF7F804AD903FEC7FC92B512F017FE4A C7EA3F800101ED1FE04A6E7E17078401036F7E5CA30107825CA3010F5E4A1407A260011F 150F5C4D5A60013F153F4A4A5A4D5A017F4A90C7FC4C5A91C7EA0FF849EC3FF0B812C094 C8FC16F83C3E7BBD40>I<9339FF8001C0030F13E0033F9038F803809239FF807E07913A 03FC001F0FDA0FF0EB071FDA1FC0ECBF00DA7F806DB4FC4AC77E495AD903F86E5A495A13 0F4948157E4948157C495A13FF91C9FC4848167812035B1207491670120FA2485A95C7FC 485AA3127F5BA312FF5BA490CCFCA2170FA2170EA2171E171C173C173817786C16706D15 F04C5A003F5E6D1403001F4B5A6D4AC8FC000F151E6C6C5C6C6C14F86C6C495A6C6CEB07 C090397FC03F8090261FFFFEC9FC010713F0010013803A4272BF41>I<49B712C018F818 FE903B0003FE0003FF9438007F804BEC1FC0F00FE0F007F014074BEC03F8F001FCA2140F 4BEC00FEA3141F4B15FFA3143F5DA3027F5D5DA219FE14FF92C81203A34917FC4A1507A2 19F813034A150F19F0A20107EE1FE05CF03FC0A2010FEE7F804A16006060011F4B5A4A4A 5A4D5AA2013F4B5A4AEC3FC04DC7FC017F15FEEE03FC4AEB0FF001FFEC7FE0B8128004FC C8FC16E0403E7BBD45>I<49B812F8A390260003FEC7121F18074B14031801F000F01407 5DA3140F5D19E0A2141F4B1338A2EF7801023F027013C04B91C7FCA217F0027F5CED8001 1603160F91B65AA3ED001F49EC07805CA3010392C8FC5CF003804C13070107020E14005C 93C75A180E010F161E4A151C183CA2011F5E5C60A2013F15014A4A5A1707017F150F4D5A 4A147F01FF913807FF80B9FCA295C7FC3D3E7BBD3E>I<49B812F0A390260003FEC7123F 180F4B1403A2F001E014075DA3140F5D19C0A2141F5D1770EFF003023F02E013804B91C7 FCA21601027F5CED8003A2160702FFEB1F8092B5FCA349D9003FC8FC4A7F82A20103140E 5CA2161E0107141C5CA293C9FC130F5CA3131F5CA3133F5CA2137FA25C497EB612E0A33C 3E7BBD3B>I<9339FF8001C0030F13E0033F9038F803809239FF807E07913A03FC001F0F DA0FF0EB071FDA1FC0ECBF00DA7F806DB4FC4AC77E495AD903F86E5A495A130F4948157E 4948157C495A13FF91C9FC4848167812035B1207491670120FA2485A95C7FC485AA3127F 5BA312FF5BA30303B512FC90C7FCA2DB000190C7FCA25FA216035FA316076C5E7FA2003F 150F6D5D121F6D141F000F153F6C6C4A5A6C6C14F76C6CEB01E36CB4EB07C1903A7FC03F 81C090391FFFFE00010701F890C8FC010013803A4272BF46>I<49B648B6FC495DA2D900 0390C7000313004B5D4B5DA2180714074B5DA2180F140F4B5DA2181F141F4B5DA2183F14 3F4B5DA2187F147F4B5DA218FF91B8FC96C7FCA292C712015B4A5DA2170313034A5DA217 0713074A5DA2170F130F4A5DA2171F131F4A5DA2173F133F4A5DA2017F157FA24A5D496C 4A7EB66CB67EA3483E7BBD44>I<49B6FC5BA2D9000313005D5DA314075DA3140F5DA314 1F5DA3143F5DA3147F5DA314FF92C7FCA35B5CA313035CA313075CA3130F5CA3131F5CA3 133F5CA2137FA25C497EB67EA3283E7BBD23>I<4AB61280A2180091C713C0167F5FA216 FF94C7FCA35D5EA315035EA315075EA3150F5EA3151F5EA3153F5EA3157FA25EA215FFA2 93C8FCA25CA25DA2380F8003EA3FC0D87FE05BA21407D8FFC05B140F01805B49485A12FC 0070495A4A5A6C01FEC9FC383C01FC380F07F03807FFC0C648CAFC314079BD30>I<49B6 12C0A25FD9000390C8FC5D5DA314075DA3140F5DA3141F5DA3143F5DA3147F5DA314FF92 C9FCA35B5CA313035C18C0EF01E0010716C05C17031880130F4A140718005F131F4A141E A2173E013F5D4A14FC1601017F4A5A16074A131F01FFECFFF0B8FCA25F333E7BBD39>76 D<49B5933807FFFC496062D90003F0FC00505ADBBF805E1A771AEF1407033F923801CFE0 A2F1039F020FEE071F020E606F6C140E1A3F021E161C021C04385BA2F1707F143C023804 E090C7FCF001C0629126780FE0495A02705FF00700F00E0114F002E0031C5BA2F0380301 0116704A6C6C5D18E019070103ED01C00280DA03805BA2943807000F13070200020E5C5F DB03F8141F495D010E4B5CA24D133F131E011CDAF9C05CEEFB80197F013C6DB4C7FC0138 95C8FC5E01784A5C13F8486C4A5CD807FE4C7EB500F04948B512FE16E01500563E7BBD52 >I<902601FFFE020FB5FC496D5CA2D900016D010013C04AEE3F00193E70141C193CEC07 BFDB3FE01438151F1978020F7FDA0E0F15708219F0EC1E07021C6D5CA203031401023C7F DA38015DA2701303EC7800027002805BA2047F130702F014C04A013F91C7FCA2715A0101 141F4AECF00EA2040F131E010315F84A151C1607EFFC3C0107140391C7143817FE040113 784915FF010E16708218F0131E011C6F5AA2173F133C01385E171F137813F8486C6F5AEA 07FEB500F01407A295C8FC483E7BBD44>II<49B77E18F018FC903B0003FE0003FE EF00FF4BEC7F80F03FC00207151F19E05DA2020F16F0A25DA2141FF03FE05DA2023F16C0 187F4B1580A2027FEDFF00604B495A4D5A02FF4A5A4D5A92C7EA3FC04CB4C7FC4990B512 FC17E04ACAFCA21303A25CA21307A25CA2130FA25CA2131FA25CA2133FA25CA2137FA25C 497EB67EA33C3E7BBD3E>I<49B612FCEFFF8018F0903B0003FE000FF8EF03FE4BEB00FF 8419800207ED3FC05DA219E0140F5DA3021FED7FC05DA2F0FF80143F4B15004D5A60027F 4A5A4B495A4D5AEF3F8002FF02FEC7FC92380007F892B512E01780499038000FE04A6D7E 707E707E0103814A130083A213075CA25E130F5C5F1603131F5CA3013F020714404A16E0 5F017F160119C04A01031303496C1680B6D8800113079438FE0F009338007E1ECAEA3FFC EF07F03B407BBD42>82 D<92391FE00380ED7FFC913A01FFFE0700913907F01F8F91390F C007DF4AC66CB4FC023E6D5A4A130014FC495A4948147CA2495AA2010F15785CA3011F15 70A46E91C7FCA2808014FE90380FFFE015FC6DEBFF8016E06D806D806D6C7F141F02037F EC003FED07FF1501A281A282A212075A167E120EA2001E15FE5EA25E003E14015E003F14 034B5A486C5C150F6D495A6D49C8FCD8F9F0137C39F8FE01F839F03FFFF0D8E00F13C026 C001FEC9FC314279BF33>I<48B9FCA25A903AFE001FF00101F89138E0007FD807E0163E 49013F141E5B48C75BA2001E147FA2001C4B131C123C003814FFA2007892C7FC12704A15 3C00F01738485CC716001403A25DA21407A25DA2140FA25DA2141FA25DA2143FA25DA214 7FA25DA214FFA292C9FCA25BA25CA21303A25CEB0FFE003FB67E5AA2383D71BC41>I<00 1FB500F090B512F0485DA226003FF0C7380FFC004AEC03F04A5D715A017F1503A24A5DA2 01FF150795C7FC91C8FCA2485E170E5BA20003161E171C5BA20007163C17385BA2000F16 7817705BA2001F16F05F5BA2003F1501A2495DA2007F1503A2495DA2160794C8FC48C8FC 5E160E161E6C151C163C5E5E5E6C6C13014B5A001F4A5A6C6C011FC9FC6D133E6C6C13F8 3903FC07F0C6B512C0013F90CAFCEB07F83C406FBD44>II<277FFFFE01B500FC90B512E0B5FCA200039026800007 90C7380FFC006C90C701FCEC07F049725A04035EA26350C7FCA20407150EA2040F5D1A3C 041F153862163B6216734F5A6D14E303014B5A6C15C303034BC8FC1683DB0703140E191E 030E151C61031C7F61ED380161157003F04A5A15E002014B5A15C0DA03804AC9FC60DA07 00140E60140E605C029C5D14B8D97FF85D5C715A5C4A5DA24A92CAFC5F91C7FC705A137E 5F137C5F137801705D53406EBD5B>I<91B690383FFFFC605E020101E0010F13006E49EB 07F84C6D5A19C06F6C495A96C7FC033F140E705B183C031F5C705B4D5A030F5C70485A4D C8FC0307130EEEFC1E5F03035BEEFE705F6F6C5A5FA26F90C9FC83A2707EA216FF4B7F5D ED079FEE1FF0150EED1C0F03387F1578EDF007DA01E07F15C09138038003DA07007F140E 021E13014A805C02707F4A81495A4948147F01078249C8FC013F6F7E496C147F2603FFC0 49487EB500F8011FEBFFE0A261463E7CBD44>I<027FB612FEA3913AFFF80007FC03C014 F892C7EA0FF0D901FC141F4AEC3FE04AEC7FC04A15800103EDFF004A5B4C5A4948495A5F 91C7485A49141F010E4A5A4C5A5F011E4AC7FC90C75A4B5A4B5A5E4B5A151F4B5A4B5A5E 15FF4A90C8FC4A5A4A5A5D140F4A5A4A5A4A48130E4B131E02FF141C4990C7FC495A4948 143C4A1438010F1578495A49481470494814F05C01FF4A5A4890C7FC4848140348481407 494A5A000F151F4848143F4848ECFF804848130F90B7FCB8FC94C7FC373E79BD38>90 D<147E49B47E903907C1C38090391F80EFC090383F00FF017E137F4914804848133F485A A248481400120F5B001F5C157E485AA215FE007F5C90C7FCA21401485C5AA21403EDF038 5AA21407EDE078020F1370127C021F13F0007E013F13E0003E137FECF3E1261F01E313C0 3A0F8781E3803A03FF00FF00D800FC133E252977A72E>97 DIIII<167C4BB4FC923807C7 8092380F83C0ED1F87161FED3F3FA2157EA21780EE0E004BC7FCA414015DA414035DA301 03B512F8A390260007E0C7FCA3140F5DA5141F5DA4143F92C8FCA45C147EA414FE5CA413 015CA4495AA4495AA4495A121E127F5C12FF49C9FCA2EAFE1EEAF83C1270EA7878EA3FE0 EA0F802A5383BF1C>III<1478EB01FCA21303A314F8EB00E01400AD137C48B4FC38038F80EA0707000E13 C0121E121CEA3C0F1238A2EA781F00701380A2EAF03F140012005B137E13FE5BA212015B A212035B1438120713E0000F1378EBC070A214F0EB80E0A2EB81C01383148038078700EA 03FEEA00F8163E79BC1C>I<1507ED1FC0A2153FA31680ED0E0092C7FCADEC07C0EC3FF0 EC78F8ECE07CEB01C01303EC807EEB0700A2010E13FE5D131E131CEB3C01A201005BA214 03A25DA21407A25DA2140FA25DA2141FA25DA2143FA292C7FCA25CA2147EA214FEA25CA2 13015CA2121C387F03F012FF495A5C495A4848C8FCEAF83EEA707CEA3FF0EA0FC0225083 BC1C>I IIIII<903903E001F890390FF807FE903A1E7C1E0F80903A1C3E3C07 C0013C137801389038E003E0EB783F017001C013F0ED80019038F07F0001E015F8147E16 03000113FEA2C75AA20101140717F05CA20103140F17E05CA20107EC1FC0A24A1480163F 010F15005E167E5E131F4B5A6E485A4B5A90393FB80F80DA9C1FC7FCEC0FFCEC03E049C9 FCA2137EA213FEA25BA21201A25BA21203A2387FFFE0B5FCA22D3A80A72E>I<027E1360 903901FF81E0903807C1C390391F80E7C090383F00F7017E137F5B4848EB3F80485AA248 5A000F15005B121F5D4848137EA3007F14FE90C75AA3481301485CA31403485CA314074A 5A127C141F007E133F003E495A14FF381F01EF380F879F3903FF1F80EA00FC1300143F92 C7FCA35C147EA314FE5CA21301130390B512F05AA2233A77A72A>IIII<137C48B4141C26038F80137EEA0707000E7F001E15FE121CD83C 0F5C12381501EA781F007001805BA2D8F03F1303140000005D5B017E1307A201FE5C5B15 0F1201495CA2151F0003EDC1C0491481A2153F1683EE0380A2ED7F07000102FF13005C01 F8EBDF0F00009038079F0E90397C0F0F1C90391FFC07F8903907F001F02A2979A731>I< 017CEB01C048B4EB07F038038F80EA0707000E01C013F8121E001C1403EA3C0F0038EC01 F0A2D8781F130000705BA2EAF03F91C712E012005B017E130116C013FE5B150300011580 5BA2ED07001203495B150EA25DA25D1578000114706D5B0000495A6D485AD97E0FC7FCEB 1FFEEB03F0252979A72A>I<017C167048B491387001FC3A038F8001F8EA0707000E01C0 15FE001E1403001CEDF000EA3C0F0038177C1507D8781F4A133C00701380A2D8F03F130F 020049133812005B017E011F14784C137013FE5B033F14F0000192C712E05BA217010003 4A14C049137E17031880A2EF070015FE170E00010101141E01F86D131C0000D9039F5BD9 FC076D5A903A3E0F07C1E0903A1FFC03FFC0902703F0007FC7FC372979A73C>I<903903 F001F890390FFC07FE90393C1E0E0F9026780F1C138001F0EBB83FD801E013F89039C007 F07FEA0380000714E0D9000F140048151C000E4AC7FCA2001E131FA2C75BA2143F92C8FC A35C147EA314FE4A131CA30101143C001E1538003F491378D87F811470018314F000FF5D 9039077801C039FE0F7C033A7C0E3C078027783C1E1EC7FC391FF80FFC3907E003F02929 7CA72A>I<137C48B4143826038F8013FCEA0707000E7F001E1401001C15F8EA3C0F1238 1503D8781F14F000701380A2D8F03F1307020013E012005B017E130F16C013FE5B151F12 01491480A2153F000315005BA25D157EA315FE5D00011301EBF8030000130790387C1FF8 EB3FF9EB07E1EB00035DA21407000E5CEA3F80007F495AA24A5AD8FF0090C7FC143E007C 137E00705B387801F0383803E0381E0FC06CB4C8FCEA03F8263B79A72C>II E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fm cmbx12 12 50 /Fm 50 122 df45 DI48 DIII<163FA25E5E5D5DA25D5D5D5DA25D92B5FCEC01F7EC03E714 0715C7EC0F87EC1F07143E147E147C14F8EB01F0EB03E0130714C0EB0F80EB1F00133E5B A25B485A485A485A120F5B48C7FC123E5A12FCB91280A5C8000F90C7FCAC027FB61280A5 31417DC038>I<0007150301E0143F01FFEB07FF91B6FC5E5E5E5E5E16804BC7FC5D15E0 92C8FC01C0C9FCAAEC3FF001C1B5FC01C714C001DF14F09039FFE03FFC9138000FFE01FC 6D7E01F06D13804915C0497F6C4815E0C8FC6F13F0A317F8A4EA0F80EA3FE0487E12FF7F A317F05B5D6C4815E05B007EC74813C0123E003F4A1380D81FC0491300D80FF0495AD807 FEEBFFFC6CB612F0C65D013F1480010F01FCC7FC010113C02D427BC038>I<4AB47E021F 13F0027F13FC49B6FC01079038807F8090390FFC001FD93FF014C04948137F4948EBFFE0 48495A5A1400485A120FA248486D13C0EE7F80EE1E00003F92C7FCA25B127FA2EC07FC91 381FFF8000FF017F13E091B512F89039F9F01FFC9039FBC007FE9039FF8003FF17804A6C 13C05B6F13E0A24915F0A317F85BA4127FA5123FA217F07F121FA2000F4A13E0A26C6C15 C06D4913806C018014006C6D485A6C9038E01FFC6DB55A011F5C010714C0010191C7FC90 38003FF02D427BC038>I<121E121F13FC90B712FEA45A17FC17F817F017E017C0A24816 80007EC8EA3F00007C157E5E00785D15014B5A00F84A5A484A5A5E151FC848C7FC157E5D A24A5A14035D14074A5AA2141F5D143FA2147F5D14FFA25BA35B92C8FCA35BA55BAA6D5A 6D5A6D5A2F447AC238>III65 DIIIII73 D<0107B7FCA590C7001F1300B3B3A9EA1FE0487E487EA2487EA44B5AA26C48495A495C6C 4813FF6C48485B260FFC0713C06CB65A6C4AC7FCC66C13F8010F138030457DC33A>I76 DI<923807FFC092B512FE0207ECFFC0021F15F091267FFE0013FC9026 01FFF0EB1FFF01070180010313C04990C76C7FD91FFC6E6C7E49486F7E49486F7E01FF83 48496F7E48496F1380A248496F13C0A24890C96C13E0A24819F04982003F19F8A3007F19 FC49177FA400FF19FEAD007F19FC6D17FFA3003F19F8A26D5E6C19F0A26E5D6C19E0A26C 6D4B13C06C19806E5D6C6D4B13006C6D4B5A6D6C4B5A6D6C4B5A6D6C4A5B6D01C001075B 6D01F0011F5B010101FE90B5C7FC6D90B65A023F15F8020715C002004AC8FC030713C047 467AC454>79 DI82 DI<003FBA12E0A59026FE000FEB8003D87FE09338003FF049171F90C71607 A2007E1803007C1801A300781800A400F819F8481978A5C81700B3B3A20107B8FCA54543 7CC24E>III<903801FFE0011F13FE017F6D7E48B612E03A03FE007FF84848EB1FFC6D6D7E48 6C6D7EA26F7FA36F7F6C5A6C5AEA00F090C7FCA40203B5FC91B6FC1307013F13F19038FF FC01000313E0000F1380381FFE00485A5B127F5B12FF5BA35DA26D5B6C6C5B4B13F0D83F FE013EEBFFC03A1FFF80FC7F0007EBFFF86CECE01FC66CEB8007D90FFCC9FC322F7DAD36 >97 DIIIIII< EB7FC0B5FCA512037EB1ED07FE92383FFF8092B512E002C114F89139C7F03FFC9138CF80 1F9139DF000FFE14DE14FC4A6D7E5CA25CA35CB3A7B60083B512FEA537457CC43E>I<13 7C48B4FC4813804813C0A24813E0A56C13C0A26C13806C1300EA007C90C7FCAAEB7FC0EA 7FFFA512037EB3AFB6FCA518467CC520>I108 D<90277F8007FEEC0FFCB590263FFFC090387FFF8092B5D8F001B512E0 02816E4880913D87F01FFC0FE03FF8913D8FC00FFE1F801FFC0003D99F009026FF3E007F 6C019E6D013C130F02BC5D02F86D496D7EA24A5D4A5DA34A5DB3A7B60081B60003B512FE A5572D7CAC5E>I<90397F8007FEB590383FFF8092B512E0028114F8913987F03FFC9138 8F801F000390399F000FFE6C139E14BC02F86D7E5CA25CA35CB3A7B60083B512FEA5372D 7CAC3E>II<90397FC00FF8 B590B57E02C314E002CF14F89139DFC03FFC9139FF001FFE000301FCEB07FF6C496D1380 4A15C04A6D13E05C7013F0A2EF7FF8A4EF3FFCACEF7FF8A318F017FFA24C13E06E15C06E 5B6E4913806E4913006E495A9139DFC07FFC02CFB512F002C314C002C091C7FCED1FF092 C9FCADB67EA536407DAC3E>I<90387F807FB53881FFE0028313F0028F13F8ED8FFC9138 9F1FFE000313BE6C13BC14F8A214F0ED0FFC9138E007F8ED01E092C7FCA35CB3A5B612E0 A5272D7DAC2E>114 D<90391FFC038090B51287000314FF120F381FF003383FC0004913 3F48C7121F127E00FE140FA215077EA27F01E090C7FC13FE387FFFF014FF6C14C015F06C 14FC6C800003806C15806C7E010F14C0EB003F020313E0140000F0143FA26C141F150FA2 7EA26C15C06C141FA26DEB3F8001E0EB7F009038F803FE90B55A00FC5CD8F03F13E026E0 07FEC7FC232F7CAD2C>IIII120 DI E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fn cmti9 9 15 /Fn 15 118 df44 D<161C163CA2167C16FCA21501821503A2ED077E15 0F150E151CA21538A2157015F015E0EC01C0A2913803807F82EC0700A2140E141E141C5C A25CA25C49B6FCA25B913880003F49C7EA1F80A2130E131E131C133C13385B13F05B1201 1203D80FF0EC3FC0D8FFFE903807FFFEA32F367BB539>65 D67 D<010FB51280A216009038003FC05DA292C7FCA25CA2147EA214 FEA25CA21301A25CA21303A25CA21307A25CA2130FA25CA2131FA25CA2133FA291C8FCA2 5BA2137EA213FEA25B1201B512F8A25C21337BB21E>73 D<902607FFC0ED7FFC4917FF81 D9003F4B1300611803023BED077CA2027BED0EFC610273151C1838DAF1F01439F071F014 E118E10101ED01C36102C1EC0383EF070301031607050E5BEC80F8171C0107ED380F6102 001470A249EDE01FDC01C090C7FC130EEE0380011E017C5C933807003E011C140EA2013C 4A137E187C01385C5E017816FC6F485B1370ED3FC001F0EC80016000011500D807F81503 277FFF803E90B512C0B5EB3C01151C46337BB245>77 D<0107B612C04915F883903A003F 8001FEEE003FEF1F8092C713C0170F5C18E0147EA214FEEF1FC05CA201011680173F4A15 00177E010315FE5F4AEB03F8EE07E00107EC3FC091B6C7FC16F802E0C9FC130FA25CA213 1FA25CA2133FA291CAFCA25BA2137EA213FEA25B1201387FFFF0B5FCA233337CB234>80 D<0107B512FE49ECFFC017F0903A003F8007F8EE01FCEE007E92C7127F835C1880147EA2 14FEEF7F005CA2010115FE5F4A13015F01034A5AEE0FC04A495A04FEC7FC49B512F016C0 9138E003E0ED01F8010F6D7E167C4A137EA2131FA25CA2013F14FEA291C7FCA24913015E 137EEF01C001FE150318805B00011607277FFFF0001400B5ECFE0EEE7E1CC9EA1FF8EE07 E032357BB238>82 D<913901FC018091380FFF03023F13C791387E07EF903A01F801FF00 49487E4A7F495A4948133E131F91C7FC5B013E143CA3137E1638A293C7FC137FA26D7E14 E014FE90381FFFC06D13F86D7F01017F6D6C7E020F7F1400153F6F7E150FA4120EA2001E 5D121CA2151F003C92C7FCA2003E143E5D127E007F5C6D485A9038C007E039F3F80FC000 F0B5C8FC38E03FFC38C00FF029377AB42B>I<14FCEB07FF90381F078090383E03C0EBFC 013801F8033803F0073807E00F13C0120F391F80070091C7FC48C8FCA35A127EA312FE5A A4007C14C0EC01E0A2EC03C06CEB0F80EC1F006C137C380F81F03803FFC0C648C7FC1B22 78A023>99 D101 D104 DI<3903C00FC039 0FF03FF0391E78F078391C7DE03C393C3FC0FC00381380EB7F00007814F8D8707E137015 00EAF0FC12E0EA60F812001201A25BA21203A25BA21207A25BA2120FA25BA2121FA290C8 FC120E1E227AA020>114 D<1303EB0F80A3131FA21400A25BA2133EA2137EA2137C387F FFF8A2B5FC3800F800A21201A25BA21203A25BA21207A25BA2120FA25B1460001F13F014 E01300130114C01303001E1380EB07005BEA0F1EEA07F8EA01E015307AAE19>116 DI E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fo cmr6 6 4 /Fo 4 53 df<13E01201120712FF12F91201B3A7487EB512C0A212217AA01E>49 DI<13FF000313C0380F03E0381C00F014F800 3E13FC147CA2001E13FC120CC712F8A2EB01F0EB03E0EB0FC03801FF00A2380003E0EB00 F01478147C143E143F1230127812FCA2143E48137E0060137C003813F8381E03F0380FFF C00001130018227DA01E>I<14E01301A213031307A2130D131D13391331136113E113C1 EA01811203EA07011206120C121C12181230127012E0B6FCA2380001E0A6EB03F0EB3FFF A218227DA11E>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fp cmr9 9 60 /Fp 60 125 df12 D<003C13F0387E01F838FF03FCA2EB83FEA2EA7F81383D80F600 011306A40003130EEB000CA248131C00061318000E1338000C1330001C13704813E03870 01C00060138017177EB326>34 D<123C127EB4FCA21380A2127F123D1201A412031300A2 5A1206120E120C121C5A5A126009177AB315>39 D<14C01301EB0380EB0F00130E5B133C 5B5BA2485A485AA212075B120F90C7FC5AA2121E123EA3123C127CA55AB0127CA5123C12 3EA3121E121FA27E7F12077F1203A26C7E6C7EA213787F131C7F130FEB0380EB01C01300 124A79B71E>I<12C07E1270123C121C7E120F6C7E6C7EA26C7E6C7EA27F1378137C133C 133EA2131E131FA37F1480A5EB07C0B0EB0F80A514005BA3131E133EA2133C137C137813 F85BA2485A485AA2485A48C7FC120E5A123C12705A5A124A7CB71E>I<123C127EB4FCA2 1380A2127F123D1201A412031300A25A1206120E120C121C5A5A126009177A8715>44 DI<123C127E12FFA4127E123C08087A8715>I48 D<13075B5B137FEA07FFB5FC13BFEAF83F 1200B3B3A2497E007FB51280A319327AB126>III<000C14C0380FC00F90B5128015005C5C14F014C0D80C18C7FC90C8FCA9EB0F C0EB7FF8EBF07C380FC03F9038001F80EC0FC0120E000CEB07E0A2C713F01403A215F8A4 1218127E12FEA315F0140712F8006014E01270EC0FC06C131F003C14806CEB7F00380F80 FE3807FFF8000113E038003F801D347CB126>53 D<14FE903807FF80011F13E090383F00 F0017C13703901F801F8EBF003EA03E01207EA0FC0EC01F04848C7FCA248C8FCA35A127E EB07F0EB1FFC38FE381F9038700F809038E007C039FFC003E0018013F0EC01F8130015FC 1400A24814FEA5127EA4127F6C14FCA26C1301018013F8000F14F0EBC0030007EB07E039 03E00FC03901F81F806CB51200EB3FFCEB0FE01F347DB126>I57 D<15E0A34A7EA24A7EA34A7EA3EC0DFE140CA2EC187FA34A6C7EA202707FEC601FA202E0 7FECC00FA2D901807F1507A249486C7EA301066D7EA2010E80010FB5FCA249800118C77E A24981163FA2496E7EA3496E7EA20001821607487ED81FF04A7ED8FFFE49B512E0A33336 7DB53A>65 DII69 DIIII<017FB5FCA39038003FE0EC1FC0B3B1127EB4FCA4EC3F805A00601400 00705B6C13FE6C485A380F03F03803FFC0C690C7FC20357DB227>II77 D80 D82 D<90381FE00390387FFC0748B5FC39 07F01FCF390F8003FF48C7FC003E80814880A200788000F880A46C80A27E92C7FC127F13 C0EA3FF013FF6C13F06C13FF6C14C06C14F0C680013F7F01037F9038003FFF1403020013 80157F153FED1FC0150F12C0A21507A37EA26CEC0F80A26C15006C5C6C143E6C147E01C0 5B39F1FC03F800E0B512E0011F138026C003FEC7FC22377CB42B>I<007FB712FEA39039 8007F001D87C00EC003E0078161E0070160EA20060160600E01607A3481603A6C71500B3 AB4A7E011FB512FCA330337DB237>II87 D<267FFFFC90B512C0A3000101E090381FF80026007F80EB 0FC0013F6E5A6E91C7FC6D6C130E010F140C6E5B6D6C133801035C6E13606D6C13E06D6C 485A5EDA7F83C8FCEC3FC715C6EC1FECEC0FFC5D14076E7EA26E7E815C6F7E9138063FC0 140E4A6C7E9138180FF0EC380702707F91386003FCECC0010101804A6C7E49C77E498101 0E6E7E010C6E7E131C496E7E01786E7E13FCD807FEEC1FFEB56C90B512F8A335337EB23A >II<0003130C48131C000E133848137000181360003813E0003013C0EA70 0100601380A2EAE00300C01300A400DE137800FF13FCEB83FEA2EA7F81A2383F00FC001E 1378171774B326>92 D97 DII<153FEC0FFFA3EC007F81AEEB07F0EB3FFCEBFC0F3901F0 03BF3907E001FF48487E48487F8148C7FCA25A127E12FEAA127E127FA27E6C6C5BA26C6C 5B6C6C4813803A03F007BFFC3900F81E3FEB3FFCD90FE0130026357DB32B>III<151F90391FC07F809039FFF8E3C03901F07FC73907E03F033A0FC0 1F83809039800F8000001F80EB00074880A66C5CEB800F000F5CEBC01F6C6C48C7FCEBF0 7C380EFFF8380C1FC0001CC9FCA3121EA2121F380FFFFEECFFC06C14F06C14FC4880381F 0001003EEB007F4880ED1F8048140FA56C141F007C15006C143E6C5C390FC001F83903F0 07E0C6B51280D91FFCC7FC22337EA126>III107 DI<2703F01FE013FF00FF 90267FF80313C0903BF1E07C0F03E0903BF3803E1C01F02807F7003F387FD803FE147049 6D486C7EA2495CA2495CB3486C496C487EB53BC7FFFE3FFFF0A33C217EA041>I<3903F0 1FC000FFEB7FF09038F1E0FC9038F3807C3907F7007EEA03FE497FA25BA25BB3486CEB7F 80B538C7FFFCA326217EA02B>II<3903F03F8000FFEBFFE09038F3C0F89038F7007ED807FE7F6C48EB1F804914C049 130F16E0ED07F0A3ED03F8A9150716F0A216E0150F16C06D131F6DEB3F80160001FF13FC 9038F381F89038F1FFE0D9F07FC7FC91C8FCAA487EB512C0A325307EA02B>I<903807F0 0390383FFC07EBFC0F3901F8038F3807E001000F14DF48486CB4FC497F123F90C77E5AA2 5A5AA9127FA36C6C5B121F6D5B000F5B3907E003BF3903F0073F3800F81EEB3FF8EB0FE0 90C7FCAAED7F8091380FFFFCA326307DA029>I<3803E07C38FFE1FF9038E38F809038E7 1FC0EA07EEEA03ECA29038FC0F8049C7FCA35BB2487EB512E0A31A217FA01E>II<1330A51370A313F0A21201A2120312 07381FFFFEB5FCA23803F000AF1403A814073801F806A23800FC0EEB7E1CEB1FF8EB07E0 182F7FAD1E>IIII<3A7FFF807FF8A33A07F8001FC00003EC0F800001EC07 0015066C6C5BA26D131C017E1318A26D5BA2EC8070011F1360ECC0E0010F5BA2903807E1 80A214F3010390C7FC14FBEB01FEA26D5AA31478A21430A25CA214E05CA2495A1278D8FC 03C8FCA21306130EEA701CEA7838EA1FF0EA0FC025307F9F29>121 D123 DI E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fq cmsy6 6 1 /Fq 1 4 df<136013701360A20040132000E0137038F861F0387E67E0381FFF803807FE 00EA00F0EA07FE381FFF80387E67E038F861F038E060700040132000001300A213701360 14157B9620>3 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fr cmr8 8 5 /Fr 5 54 df<130C133C137CEA03FC12FFEAFC7C1200B3B113FE387FFFFEA2172C7AAB23 >49 DII<140EA2141E143EA2147E14FEA2EB01 BE1303143E1306130E130C131813381330136013E013C0EA0180120313001206120E120C 5A123812305A12E0B612FCA2C7EA3E00A9147F90381FFFFCA21E2D7EAC23>I<000CEB01 80380FC01F90B512005C5C14F014C0D80C7EC7FC90C8FCA8EB1FC0EB7FF8380DE07C380F 801F01001380000E130F000CEB07C0C713E0A2140315F0A4127812FCA448EB07E012E000 6014C00070130F6C14806CEB1F006C133E380780F83801FFE038007F801C2D7DAB23>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fs cmbx12 14.4 34 /Fs 34 122 df<913803FFC0023F13FC91B6FC010315C0010F018113F0903A1FFC003FF8 49486D7E49486D7E49486D7E48496D138048496D13C0A24817E04890C813F0A34817F8A2 4817FC49157FA3007F17FEA600FF17FFB3A5007F17FEA6003F17FCA26D15FFA26C17F8A3 6C17F0A26C6D4913E0A26C6D4913C06C17806E5B6C6D4913006D6C495AD91FFCEB3FF890 3A0FFF81FFF06D90B55A01011580D9003F01FCC7FC020313C0384F7BCD43>48 D<157815FC14031407141F14FF130F0007B5FCB6FCA2147F13F0EAF800C7FCB3B3B3A600 7FB712FEA52F4E76CD43>II<91380FFFC091B512FC 0107ECFF80011F15E090263FF8077F9026FF800113FC4848C76C7ED803F86E7E491680D8 07FC8048B416C080486D15E0A4805CA36C17C06C5B6C90C75AD801FC1680C9FC4C13005F A24C5A4B5B4B5B4B13C04B5BDBFFFEC7FC91B512F816E016FCEEFF80DA000713E0030113 F89238007FFE707E7013807013C018E07013F0A218F8A27013FCA218FEA2EA03E0EA0FF8 487E487E487EB57EA318FCA25E18F891C7FC6C17F0495C6C4816E001F04A13C06C484A13 80D80FF84A13006CB44A5A6CD9F0075BC690B612F06D5D011F1580010302FCC7FCD9001F 1380374F7ACD43>I<177C17FEA2160116031607160FA2161F163F167FA216FF5D5DA25D 5DED1FBFED3F3F153E157C15FCEC01F815F0EC03E01407EC0FC01580EC1F005C147E147C 5C1301495A495A5C495A131F49C7FC133E5B13FC485A5B485A1207485A485A90C8FC123E 127E5ABA12C0A5C96C48C7FCAF020FB712C0A53A4F7CCE43>II<932601FFFCEC01C0047FD9FFC013030307B600F81307033F03FE131F 92B8EA803F0203DAE003EBC07F020F01FCC7383FF0FF023F01E0EC0FF94A01800203B5FC 494848C9FC4901F8824949824949824949824949824990CA7E494883A2484983485B1B7F 485B481A3FA24849181FA3485B1B0FA25AA298C7FC5CA2B5FCAE7EA280A2F307C07EA36C 7FA21B0F6C6D1980A26C1A1F6C7F1C006C6D606C6D187EA26D6C606D6D4C5A6D6D16036D 6D4C5A6D6D4C5A6D01FC4C5A6D6DEE7F806D6C6C6C4BC7FC6E01E0EC07FE020F01FEEC1F F80203903AFFE001FFF0020091B612C0033F93C8FC030715FCDB007F14E0040101FCC9FC 525479D261>67 DI73 D77 D<93380FFFC00303B6FC 031F15E092B712FC0203D9FC0013FF020F01C0010F13C0023F90C7000313F0DA7FFC0200 7F494848ED7FFE4901E0ED1FFF49496F7F49496F7F4990C96C7F49854948707F4948707F A24849717E48864A83481B804A83481BC0A2481BE04A83A2481BF0A348497113F8A5B51A FCAF6C1BF86E5FA46C1BF0A26E5F6C1BE0A36C6D4D13C0A26C6D4D1380A26C1B006C6D4D 5A6E5E6C626D6C4C5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D4B90C7FC6D6D4B5A6D 01FF02035B023F01E0011F13F0020F01FC90B512C0020390B7C8FC020016FC031F15E003 0392C9FCDB001F13E0565479D265>79 DI82 D<91260FFF80130791B500F85B010702FF5B011FEDC03F49EDF07F9026FFFC00 6D5A4801E0EB0FFD4801800101B5FC4848C87E48488149150F001F824981123F4981007F 82A28412FF84A27FA26D82A27F7F6D93C7FC14C06C13F014FF15F86CECFF8016FC6CEDFF C017F06C16FC6C16FF6C17C06C836C836D826D82010F821303010082021F16801400030F 15C0ED007F040714E01600173F050F13F08383A200788200F882A3187FA27EA219E07EA2 6CEFFFC0A27F6D4B13806D17006D5D01FC4B5A01FF4B5A02C04A5A02F8EC7FF0903B1FFF C003FFE0486C90B65AD8FC0393C7FC48C66C14FC48010F14F048D9007F90C8FC3C5479D2 4B>I85 D97 D<913801FFF8021FEBFF8091B612F0010315FC010F9038C00FFE903A 1FFE0001FFD97FFC491380D9FFF05B4817C048495B5C5A485BA2486F138091C7FC486F13 00705A4892C8FC5BA312FFAD127F7FA27EA2EF03E06C7F17076C6D15C07E6E140F6CEE1F 806C6DEC3F006C6D147ED97FFE5C6D6CEB03F8010F9038E01FF0010390B55A0100158002 3F49C7FC020113E033387CB63C>99 D<4DB47E0407B5FCA5EE001F1707B3A4913801FFE0 021F13FC91B6FC010315C7010F9038E03FE74990380007F7D97FFC0101B5FC49487F4849 143F484980485B83485B5A91C8FC5AA3485AA412FFAC127FA36C7EA37EA26C7F5F6C6D5C 7E6C6D5C6C6D49B5FC6D6C4914E0D93FFED90FEFEBFF80903A0FFFC07FCF6D90B5128F01 01ECFE0FD9003F13F8020301C049C7FC41547CD24B>I<913803FFC0023F13FC49B6FC01 0715C04901817F903A3FFC007FF849486D7E49486D7E4849130F48496D7E48178048497F 18C0488191C7FC4817E0A248815B18F0A212FFA490B8FCA318E049CAFCA6127FA27F7EA2 18E06CEE01F06E14037E6C6DEC07E0A26C6DEC0FC06C6D141F6C6DEC3F806D6CECFF00D9 1FFEEB03FE903A0FFFC03FF8010390B55A010015C0021F49C7FC020113F034387CB63D> III I<137F497E000313E0487FA2487FA76C5BA26C5BC613806DC7FC90C8FCADEB3FF0B5FCA5 12017EB3B3A6B612E0A51B547BD325>I108 DII<913801FFE0 021F13FE91B612C0010315F0010F9038807FFC903A1FFC000FFED97FF86D6C7E49486D7F 48496D7F48496D7F4A147F48834890C86C7EA24883A248486F7EA3007F1880A400FF18C0 AC007F1880A3003F18006D5DA26C5FA26C5F6E147F6C5F6C6D4A5A6C6D495B6C6D495B6D 6C495BD93FFE011F90C7FC903A0FFF807FFC6D90B55A010015C0023F91C8FC020113E03A 387CB643>I<903A3FF001FFE0B5010F13FE033FEBFFC092B612F002F301017F913AF7F8 007FFE0003D9FFE0EB1FFFC602806D7F92C76C7F4A824A6E7F4A6E7FA2717FA285187F85 A4721380AC1A0060A36118FFA2615F616E4A5BA26E4A5B6E4A5B6F495B6F4990C7FC03F0 EBFFFC9126FBFE075B02F8B612E06F1480031F01FCC8FC030313C092CBFCB1B612F8A541 4D7BB54B>I<90397FE003FEB590380FFF80033F13E04B13F09238FE1FF89139E1F83FFC 0003D9E3E013FEC6ECC07FECE78014EF150014EE02FEEB3FFC5CEE1FF8EE0FF04A90C7FC A55CB3AAB612FCA52F367CB537>114 D<903903FFF00F013FEBFE1F90B7FC120348EB00 3FD80FF81307D81FE0130148487F4980127F90C87EA24881A27FA27F01F091C7FC13FCEB FFC06C13FF15F86C14FF16C06C15F06C816C816C81C681013F1580010F15C01300020714 E0EC003F030713F015010078EC007F00F8153F161F7E160FA27E17E07E6D141F17C07F6D EC3F8001F8EC7F0001FEEB01FE9039FFC00FFC6DB55AD8FC1F14E0D8F807148048C601F8 C7FC2C387CB635>I<143EA6147EA414FEA21301A313031307A2130F131F133F13FF5A00 0F90B6FCB8FCA426003FFEC8FCB3A9EE07C0AB011FEC0F8080A26DEC1F0015806DEBC03E 6DEBF0FC6DEBFFF86D6C5B021F5B020313802A4D7ECB34>III 121 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Ft cmr12 12 33 /Ft 33 124 df<140C141C1438147014E0EB01C01303EB0780EB0F00A2131E5BA25B13F8 5B12015B1203A2485AA3485AA348C7FCA35AA2123EA2127EA4127CA312FCB3A2127CA312 7EA4123EA2123FA27EA36C7EA36C7EA36C7EA212017F12007F13787FA27F7FA2EB0780EB 03C01301EB00E014701438141C140C166476CA26>40 D<12C07E12707E7E7E120F6C7E6C 7EA26C7E6C7EA21378137C133C133E131E131FA2EB0F80A3EB07C0A3EB03E0A314F0A213 01A214F8A41300A314FCB3A214F8A31301A414F0A21303A214E0A3EB07C0A3EB0F80A3EB 1F00A2131E133E133C137C13785BA2485A485AA2485A48C7FC120E5A5A5A5A5A16647BCA 26>I<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A312011380120313 005A1206120E5A5A5A12600B1D78891B>44 D<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00 0A0A78891B>46 D<14FF010713E090381F81F890383E007C01FC133F4848EB1F8049130F 4848EB07C04848EB03E0A2000F15F0491301001F15F8A2003F15FCA390C8FC4815FEA548 15FFB3A46C15FEA56D1301003F15FCA3001F15F8A26C6CEB03F0A36C6CEB07E0000315C0 6D130F6C6CEB1F806C6CEB3F00013E137C90381F81F8903807FFE0010090C7FC28447CC1 31>48 D<143014F013011303131F13FFB5FC13E713071200B3B3B0497E497E007FB6FCA3 204278C131>I<121CA2EA1F8090B712C0A3481680A217005E0038C8120C0030151C0070 5D0060153016705E5E4814014B5A4BC7FCC81206150E5D151815385D156015E04A5AA24A 5A140792C8FC5CA25C141E143EA2147E147CA214FCA21301A3495AA41307A6130FAA6D5A EB01C02A457BC231>55 D<14FF010713E0011F13F890387F80FC9038FC007E48487F4848 EB1F804848EB0FC0000FEC07E0485AED03F0485A16F8007F140190C713FCA25AA216FE15 00A516FFA46C5CA36C7E5D121F7F000F5C6C6C130E150C6C6C131C6C6C5BD8007C5B9038 3F01E090390FFF80FE903801FE0090C8FC150116FCA4ED03F8A216F0D80F801307486C14 E0486C130F16C0ED1F80A249EB3F0049137E001EC75A001C495A000F495A3907E01FE06C B51280C649C7FCEB1FF028447CC131>57 D67 D<010FB512FEA3D9000313806E130080B3B3AB123F487E487EA44A5A13801300 006C495A00705C6C13076C5C6C495A6CEB1F802603E07FC7FC3800FFFCEB1FE027467BC3 32>74 D76 D82 D<003FB912F8A3903BF0001FF8001F01806D481303003EC7150048187C007818 3CA20070181CA30060180CA5481806A5C81600B3B3A54B7EED7FFE49B77EA33F447DC346 >84 D97 DII<167FED3FFFA315018182B3EC7F80903803FFF090380FC07C 90383F000E017E1307496D5AD803F87F48487F5B000F81485AA2485AA2127FA290C8FC5A AB7E7FA2123FA26C7EA2000F5D7F6C6C5B00035C6C6C9038077F806C6C010E13C0013F01 1C13FE90380FC0F8903803FFE09026007F0013002F467DC436>II103 DII108 DI<3901FC01FE00FF903807FFC091381E07F091383801F80007 01707F0003EBE0002601FDC07F5C01FF147F91C7FCA25BA35BB3A8486CECFF80B5D8F83F 13FEA32F2C7DAB36>II<3901FC03FC00FF 90380FFF8091383C07E091387001F83A07FDE000FE00030180137FD801FFEC3F8091C7EA 1FC04915E049140F17F0160717F8160317FCA3EE01FEABEE03FCA3EE07F8A217F0160F6D 15E0EE1FC06D143F17806EEB7E00D9FDC05B9039FCF003F891383C0FE091381FFF80DA03 FCC7FC91C9FCAE487EB512F8A32F3F7DAB36>I<3903F803F000FFEB1FFCEC3C3EEC707F 0007EBE0FF3803F9C000015B13FBEC007E153C01FF13005BA45BB3A748B4FCB512FEA320 2C7DAB26>114 D<90383FE0183901FFFC383907E01F78390F0003F8001E130148130000 7C1478127800F81438A21518A27EA27E6C6C13006C7E13FC383FFFE06C13FC6C13FF6C14 C06C14E0C614F0011F13F81300EC0FFC140300C0EB01FE1400157E7E153EA27EA36C143C 6C147C15786C14F86CEB01F039F38003E039F1F00F8039E07FFE0038C00FF01F2E7DAC26 >I<1306A5130EA4131EA3133E137EA213FE12011207001FB512F0B6FCA2C648C7FCB3A4 150CAA017E131C017F1318A26D133890381F8030ECC070903807E0E0903801FFC0903800 7F001E3E7EBC26>II119 D121 D123 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fu cmr10 10.95 77 /Fu 77 125 df<4AB4EB0FE0021F9038E03FFC913A7F00F8FC1ED901FC90383FF03FD907 F090397FE07F80494801FF13FF4948485BD93F805C137F0200ED7F00EF003E01FE6D91C7 FC82ADB97EA3C648C76CC8FCB3AE486C4A7E007FD9FC3FEBFF80A339407FBF35>11 DIII<001E130F397F803FC000FF137F01C013E0 A201E013F0A3007F133F391E600F3000001300A401E01370491360A3000114E04913C000 03130101001380481303000EEB070048130E0018130C0038131C003013181C1C7DBE2D> 34 D<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A312011380120313 005A120E5A1218123812300B1C79BE19>39 D<1430147014E0EB01C0EB03801307EB0F00 131E133E133C5B13F85B12015B1203A2485AA2120F5BA2121F90C7FCA25AA3123E127EA6 127C12FCB2127C127EA6123E123FA37EA27F120FA27F1207A26C7EA212017F12007F1378 7F133E131E7FEB07801303EB01C0EB00E014701430145A77C323>I<12C07E12707E7E12 1E7E6C7E7F12036C7E7F12007F1378137CA27FA2133F7FA21480130FA214C0A3130714E0 A6130314F0B214E01307A614C0130FA31480A2131F1400A25B133EA25BA2137813F85B12 015B485A12075B48C7FC121E121C5A5A5A5A145A7BC323>I<121EEA7F8012FF13C0A213 E0A3127FEA1E601200A413E013C0A312011380120313005A120E5A1218123812300B1C79 8919>44 DI<121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A0A79 8919>IIIIII<150E151E153EA2157EA215FE1401A21403EC 077E1406140E141CA214381470A214E0EB01C0A2EB0380EB0700A2130E5BA25B5BA25B5B 1201485A90C7FC5A120E120C121C5AA25A5AB8FCA3C8EAFE00AC4A7E49B6FCA3283E7EBD 2D>I<00061403D80780131F01F813FE90B5FC5D5D5D15C092C7FC14FCEB3FE090C9FCAC EB01FE90380FFF8090383E03E090387001F8496C7E49137E497F90C713800006141FC813 C0A216E0150FA316F0A3120C127F7F12FFA416E090C7121F12FC007015C012780038EC3F 80123C6CEC7F00001F14FE6C6C485A6C6C485A3903F80FE0C6B55A013F90C7FCEB07F824 3F7CBC2D>II<1238123C123F90B6 12FCA316F85A16F016E00078C712010070EC03C0ED078016005D48141E151C153C5DC812 7015F04A5A5D14034A5A92C7FC5C141EA25CA2147C147814F8A213015C1303A31307A313 0F5CA2131FA6133FAA6D5A0107C8FC26407BBD2D>III<12 1EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCB3121EEA7F80A2EAFFC0A4EA7F80A2EA1E00 0A2779A619>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCB3121E127FEAFF80A213 C0A4127F121E1200A412011380A3120313005A1206120E120C121C5A1230A20A3979A619 >I63 DI<15074B7EA34B7EA34B7EA34B7EA34B7E15E7A2913801C7FC15C3A2913803 81FEA34AC67EA3020E6D7EA34A6D7EA34A6D7EA34A6D7EA34A6D7EA349486D7E91B6FCA2 49819138800001A249C87EA24982010E157FA2011E82011C153FA2013C820138151FA201 7882170F13FC00034C7ED80FFF4B7EB500F0010FB512F8A33D417DC044>IIIIII72 DI<011FB512FCA3D9 000713006E5A1401B3B3A6123FEA7F80EAFFC0A44A5A1380D87F005B007C130700385C00 3C495A6C495A6C495A2603E07EC7FC3800FFF8EB3FC026407CBD2F>IIIIIII82 DI<003FB91280A3903AF0007FE00101 8090393FC0003F48C7ED1FC0007E1707127C00781703A300701701A548EF00E0A5C81600 B3B14B7E4B7E0107B612FEA33B3D7DBC42>IIII<007FB5D8C003B5 12E0A3C649C7EBFC00D93FF8EC3FE06D48EC1F806D6C92C7FC171E6D6C141C6D6C143C5F 6D6C14706D6D13F04C5ADA7FC05B023F13036F485ADA1FF090C8FC020F5BEDF81E913807 FC1C163C6E6C5A913801FF7016F06E5B6F5AA26F7E6F7EA28282153FED3BFEED71FF15F1 03E07F913801C07F0203804B6C7EEC07004A6D7E020E6D7E5C023C6D7E02386D7E14784A 6D7E4A6D7F130149486E7E4A6E7E130749C86C7E496F7E497ED9FFC04A7E00076DEC7FFF B500FC0103B512FEA33F3E7EBD44>I<486C13C00003130101001380481303000EEB0700 48130E0018130C0038131C003013180070133800601330A300E01370481360A400CFEB67 8039FFC07FE001E013F0A3007F133FA2003F131F01C013E0390F0007801C1C73BE2D>92 D97 D I<49B4FC010F13E090383F00F8017C131E4848131F4848137F0007ECFF80485A5B121FA2 4848EB7F00151C007F91C7FCA290C9FC5AAB6C7EA3003FEC01C07F001F140316806C6C13 076C6C14000003140E6C6C131E6C6C137890383F01F090380FFFC0D901FEC7FC222A7DA8 28>IIII<167C903903F801FF903A1FFF078F8090397E0FDE1F90 38F803F83803F001A23B07E000FC0600000F6EC7FC49137E001F147FA8000F147E6D13FE 00075C6C6C485AA23901F803E03903FE0FC026071FFFC8FCEB03F80006CAFC120EA3120F A27F7F6CB512E015FE6C6E7E6C15E06C810003813A0FC0001FFC48C7EA01FE003E140048 157E825A82A46C5D007C153E007E157E6C5D6C6C495A6C6C495AD803F0EB0FC0D800FE01 7FC7FC90383FFFFC010313C0293D7EA82D>III<1478EB01FEA2 EB03FFA4EB01FEA2EB00781400AC147FEB7FFFA313017F147FB3B3A5123E127F38FF807E 14FEA214FCEB81F8EA7F01387C03F0381E07C0380FFF803801FC00185185BD1C>III<2701F801FE14FF00FF902707FF C00313E0913B1E07E00F03F0913B7803F03C01F80007903BE001F87000FC2603F9C06D48 7F000101805C01FBD900FF147F91C75B13FF4992C7FCA2495CB3A6486C496CECFF80B5D8 F87FD9FC3F13FEA347287DA74C>I<3901F801FE00FF903807FFC091381E07E091387803 F000079038E001F82603F9C07F0001138001FB6D7E91C7FC13FF5BA25BB3A6486C497EB5 D8F87F13FCA32E287DA733>I<14FF010713E090381F81F890387E007E01F8131F4848EB 0F804848EB07C04848EB03E0000F15F04848EB01F8A2003F15FCA248C812FEA44815FFA9 6C15FEA36C6CEB01FCA3001F15F86C6CEB03F0A26C6CEB07E06C6CEB0FC06C6CEB1F80D8 007EEB7E0090383F81FC90380FFFF0010090C7FC282A7EA82D>I<3901FC03FC00FF9038 1FFF8091387C0FE09039FDE003F03A07FFC001FC6C496C7E6C90C7127F49EC3F805BEE1F C017E0A2EE0FF0A3EE07F8AAEE0FF0A4EE1FE0A2EE3FC06D1580EE7F007F6E13FE9138C0 01F89039FDE007F09039FC780FC0DA3FFFC7FCEC07F891C9FCAD487EB512F8A32D3A7EA7 33>I<02FF131C0107EBC03C90381F80F090397F00387C01FC131CD803F8130E4848EB0F FC150748481303121F485A1501485AA448C7FCAA6C7EA36C7EA2001F14036C7E15076C6C 130F6C7E6C6C133DD8007E137990383F81F190380FFFC1903801FE0190C7FCAD4B7E92B5 12F8A32D3A7DA730>I<3901F807E000FFEB1FF8EC787CECE1FE3807F9C100031381EA01 FB1401EC00FC01FF1330491300A35BB3A5487EB512FEA31F287EA724>I<90383FC06039 01FFF8E03807C03F381F000F003E1307003C1303127C0078130112F81400A27E7E7E6D13 00EA7FF8EBFFC06C13F86C13FE6C7F6C1480000114C0D8003F13E0010313F0EB001FEC0F F800E01303A214017E1400A27E15F07E14016C14E06CEB03C0903880078039F3E01F0038 E0FFFC38C01FE01D2A7DA824>I<131CA6133CA4137CA213FCA2120112031207001FB512 C0B6FCA2D801FCC7FCB3A215E0A912009038FE01C0A2EB7F03013F138090381F8700EB07 FEEB01F81B397EB723>IIIIII<001FB612 80A2EBE0000180140049485A001E495A121C4A5A003C495A141F00385C4A5A147F5D4AC7 FCC6485AA2495A495A130F5C495A90393FC00380A2EB7F80EBFF005A5B48481307120749 1400485A48485BA248485B4848137F00FF495A90B6FCA221277EA628>III E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fv cmmi7 7 2 /Fv 2 117 df<133EEA07FEA2EA007CA213FCA25BA21201A25BA2120314FCEBE3FF9038 EF0780D807FC13C0EBF00313E0A2EA0FC014071380A2121FEC0F801300A248EB1F00A200 3E1406143E127EEC7C0C127C151800FCEB3C30157048EB1FE00070EB0F801F297CA727> 104 D<131C133EA25BA45BA4485AB512E0A23801F000485AA4485AA4485AA448C7FC1460 A214C0123EEB0180EB0300EA1E06EA1F1CEA0FF8EA03E013267EA419>116 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fw cmr7 7 3 /Fw 3 54 df<13381378EA01F8121F12FE12E01200B3AB487EB512F8A215267BA521>49 D<13FF000313E0380E03F0381800F848137C48137E00787F12FC6CEB1F80A4127CC7FC15 005C143E147E147C5C495A495A5C495A010EC7FC5B5B903870018013E0EA018039030003 0012065A001FB5FC5A485BB5FCA219267DA521>I<0018130C001F137CEBFFF85C5C1480 D819FCC7FC0018C8FCA7137F3819FFE0381F81F0381E0078001C7F0018133EC7FC80A215 80A21230127C12FCA3150012F00060133E127000305B001C5B380F03E03803FFC0C648C7 FC19277DA521>53 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fx cmr10 10 62 /Fx 62 123 df11 D13 D<001C131C007F137F39FF80FF80A26D13C0A3007F137F001C131C00001300A400011301 01801380A20003130301001300485B00061306000E130E485B485B485B006013601A197D B92A>34 D<146014E0EB01C0EB0380EB0700130E131E5B5BA25B485AA2485AA212075B12 0F90C7FCA25A121EA2123EA35AA65AB2127CA67EA3121EA2121F7EA27F12077F1203A26C 7EA26C7E1378A27F7F130E7FEB0380EB01C0EB00E01460135278BD20>40 D<12C07E12707E7E7E120F6C7E6C7EA26C7E6C7EA21378A2137C133C133E131EA2131F7F A21480A3EB07C0A6EB03E0B2EB07C0A6EB0F80A31400A25B131EA2133E133C137C1378A2 5BA2485A485AA2485A48C7FC120E5A5A5A5A5A13527CBD20>I<15301578B3A6007FB812 F8B912FCA26C17F8C80078C8FCB3A6153036367BAF41>43 D<121C127FEAFF80A213C0A3 127F121C1200A412011380A2120313005A1206120E5A5A5A12600A19798817>I48 D III<1538A2157815F8 A2140114031407A2140F141F141B14331473146314C313011483EB030313071306130C13 1C131813301370136013C01201EA038013005A120E120C5A123812305A12E0B712F8A3C7 3803F800AB4A7E0103B512F8A325397EB82A>I<0006140CD80780133C9038F003F890B5 FC5D5D158092C7FC14FC38067FE090C9FCABEB07F8EB3FFE9038780F803907E007E09038 8003F0496C7E12066E7EC87EA28181A21680A4123E127F487EA490C71300485C12E00060 5C12700030495A00385C6C1303001E495A6C6C485A3907E03F800001B5C7FC38007FFCEB 1FE0213A7CB72A>II<12301238123E003FB612E0A3 16C05A168016000070C712060060140E5D151800E01438485C5D5DC712014A5A92C7FC5C 140E140C141C5CA25CA214F0495AA21303A25C1307A2130FA3495AA3133FA5137FA96DC8 FC131E233B7BB82A>III<007FB8 12F8B912FCA26C17F8CCFCAE007FB812F8B912FCA26C17F836167B9F41>61 D<1538A3157CA315FEA34A7EA34A6C7EA202077FEC063FA2020E7FEC0C1FA2021C7FEC18 0FA202387FEC3007A202707FEC6003A202C07F1501A2D901807F81A249C77F167FA20106 810107B6FCA24981010CC7121FA2496E7EA3496E7EA3496E7EA213E0707E1201486C81D8 0FFC02071380B56C90B512FEA3373C7DBB3E>65 DI<913A01FF8001 80020FEBE003027F13F8903A01FF807E07903A03FC000F0FD90FF0EB039F4948EB01DFD9 3F80EB00FF49C8127F01FE153F12014848151F4848150FA248481507A2485A1703123F5B 007F1601A35B00FF93C7FCAD127F6DED0180A3123F7F001F160318006C7E5F6C7E17066C 6C150E6C6C5D00001618017F15386D6C5CD91FE05C6D6CEB03C0D903FCEB0F80902701FF 803FC7FC9039007FFFFC020F13F002011380313D7BBA3C>IIII73 D75 DIIIII82 DI<003FB812E0A3D9C003EB001F 273E0001FE130348EE01F00078160000701770A300601730A400E01738481718A4C71600 B3B0913807FF80011FB612E0A335397DB83C>III89 D<3901800180000313033907000700000E130E485B001813180038133800301330007013 7000601360A200E013E0485BA400CE13CE39FF80FF806D13C0A3007F137FA2393F803F80 390E000E001A1974B92A>92 D97 DIIII<147E9038 03FF8090380FC1E0EB1F8790383F0FF0137EA213FCA23901F803C091C7FCADB512FCA3D8 01F8C7FCB3AB487E387FFFF8A31C3B7FBA19>IIII107 DI<2703F00FF0EB 1FE000FFD93FFCEB7FF8913AF03F01E07E903BF1C01F83803F3D0FF3800FC7001F802603 F70013CE01FE14DC49D907F8EB0FC0A2495CA3495CB3A3486C496CEB1FE0B500C1B50083 B5FCA340257EA445>I<3903F00FF000FFEB3FFCECF03F9039F1C01F803A0FF3800FC038 03F70013FE496D7EA25BA35BB3A3486C497EB500C1B51280A329257EA42E>II<3903F01FE000FFEB7FF89038F1E07E9039F3801F803A0FF7000FC0D803FEEB07 E049EB03F04914F849130116FC150016FEA3167FAA16FEA3ED01FCA26DEB03F816F06D13 076DEB0FE001F614C09039F7803F009038F1E07E9038F0FFF8EC1FC091C8FCAB487EB512 C0A328357EA42E>I<3807E01F00FFEB7FC09038E1E3E09038E387F0380FE707EA03E613 EE9038EC03E09038FC0080491300A45BB3A2487EB512F0A31C257EA421>114 DI<1318A5 1338A31378A313F8120112031207001FB5FCB6FCA2D801F8C7FCB215C0A93800FC011580 EB7C03017E13006D5AEB0FFEEB01F81A347FB220>IIIIII<003FB512FCA2EB8003D83E 0013F8003CEB07F00038EB0FE012300070EB1FC0EC3F800060137F150014FE495AA2C648 5A495AA2495A495A495AA290387F000613FEA2485A485A0007140E5B4848130C4848131C A24848133C48C7127C48EB03FC90B5FCA21F247EA325>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fy cmsy10 12 2 /Fy 2 14 df<147014F8A81470007815F0007C1401B4EC07F8D87F80EB0FF0D83FE0EB3F E0D80FF0EB7F80D803F8EBFE003900FE73F890383F77E090380FFF80D903FEC7FCEB00F8 EB03FE90380FFF8090383F77E09038FE73F83903F870FED80FF0EB7F80D83FE0EB3FE0D8 7F80EB0FF0D8FF00EB07F8007CEC01F000781400C7140014F8A81470252B7AAD32>3 D<933803FFE0047F13FF0303B612E0030F15F8923A7FFE003FFFDBFFC001017FDA03FEC8 EA3FE0DA0FF8ED0FF8DA1FC0ED01FC4A486F7E02FECAEA3F804948717ED903F0EF07E049 48717E4948717E4948717E49CC127E017E85017C8549737E0001874919074848737EA248 48737E000F8749190090CE1278481B7CA2003E87A2003C1B1EA2007C1B1FA2007887A200 F81C80A2481B07AC6C1B0FA200781C00A2007C63A2003C1B1EA2003E1B3EA26C63A26C1B 786D1AF86D19010007636C6C4F5AA26C6C4F5A6D190F000063017C4FC7FC017E616D197E 6D6C606D6C4D5A6D6C4D5A6D6C4D5AD901FCEF1FC06D6C4D5ADA3F8004FEC8FC6E6C4B5A DA0FF8ED0FF8DA03FEED3FE0912600FFC0903801FF80DB7FFE013F90C9FC030FB612F803 0315E0DB007F91CAFC040313E0595C7BC664>13 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fz cmr17 17.28 17 /Fz 17 118 df<4AB4FC021F13F0027F13FC903901FF01FF903A03F8003F80D90FE0EB0F E049486D7E49486D7E49C76C7E017E140049157E0001167F49810003178049151F000717 C049150F000F17E0A3001F17F0491507A2003F17F8A54848ED03FCA700FF17FEB3A8007F 17FCA56D1507A3003F17F8A4001F17F06D150FA2000F17E0A36C6CED1FC0A2000317806D 153F000117006D5D6C6C15FE017E5D017F14016D6C495A6D6C495A6D6C495AD903F8EB3F 806DB448B4C7FC9039007FFFFC021F13F0020190C8FC37607BDD42>48 D50 D<120FEA3FC0EA7FE0EAFFF0A6EA7FE0EA3FC0EA0F00C7FCB3B3 A2120FEA3FC0EA7FE0EAFFF0A6EA7FE0EA3FC0EA0F000C3E74BD24>58 D<170FA34D7EA24D7EA34D7EA34D7EA34C7F17DFA29338039FFC178FA29338070FFE1707 040F7FEE0E03A2041E80EE1C01A2043C80EE3800A24C80187FA24C80183FA24B4880181F 0303814C130FA203078193C71207A24B81030E80A24B8284A24B8284A24B82197F03F082 4B153FA20201834B151FA202038392B8FCA24A83A292C91207020E8385A24A8485023C84 023882A20278840270177FA202F0844A173FA24948841A1FA24948841A0FA249CB7F1A07 4985865B496C85497E48486C4D7F000F01F8051F13F0B60407B612F0A45C657DE463>65 D73 D77 D80 D82 DI97 D<133C13FF487F487FA66C5B6C90 C7FC133C90C8FCB3A2EB03C0EA07FF127FA41201EA007FA2133FB3B3AC497E497EB612E0 A41B5F7DDE23>105 D108 DI111 D<9039078003F8D807FFEB0F FFB5013F13C092387C0FE0913881F01F9238E03FF00001EB838039007F8700148FEB3F8E 029CEB1FE0EE0FC00298EB030002B890C7FCA214B014F0A25CA55CB3B0497EEBFFF8B612 FCA42C3F7CBE33>114 D<1438A71478A414F8A31301A31303A21307130F131FA2137F13 FF1203000F90B6FCB8FCA3260007F8C8FCB3AE17E0AE6D6CEB01C0A316036D6C14801607 6D6C14006E6C5A91383FC01E91381FF07C6EB45A020313E09138007F802B597FD733> 116 DI E %EndDVIPSBitmapFont end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin %%PaperSize: A4 %%EndSetup %%Page: 1 1 1 0 bop 887 463 a Fz(SPIM)44 b(S20:)58 b(A)44 b(MIPS)f(R2000)f(Sim)l (ulator)3041 411 y Fy(\003)1183 646 y Fx(\\)1251 613 y Fw(1)p 1234 627 67 4 v 1234 674 a(25)1311 596 y Fv(th)1406 646 y Fx(the)28 b(p)r(erformance)f(at)g(none)h(of)f(the)h(cost")1654 898 y Fu(James)j(R.)f(Larus)1616 1014 y(larus@cs.wisc.edu)1335 1131 y(Computer)g(Sciences)g(Departmen)m(t)1302 1247 y(Univ)m(ersit)m(y)g(of)g(Wisconsin{Madison)1465 1363 y(1210)i(W)-8 b(est)32 b(Da)m(yton)g(Street)1456 1479 y(Madison,)e(WI)g(53706,)j(USA)1707 1596 y(608-262-9519)1050 1799 y Ft(Cop)m(yrigh)m(t)1536 1796 y(c)1508 1799 y Fy(\015)o Ft(1990{1997)e(b)m(y)i(James)g(R.)f(Larus)913 1915 y(\(This)h(do)s (cumen)m(t)g(ma)m(y)f(b)s(e)h(copied)f(without)g(ro)m(y)m(alties,)971 2028 y(so)h(long)e(as)i(this)f(cop)m(yrigh)m(t)h(notice)f(remains)g(on) g(it.\))75 2550 y Fs(1)135 b(SPIM)75 2753 y Fu(SPIM)40 b(S20)h(is)e(a)i(sim)m(ulator)f(that)h(runs)e(programs)h(for)g(the)h (MIPS)f(R2000/R3000)k(RISC)39 b(computers.)3815 2720 y Fr(1)75 2866 y Fu(SPIM)f(can)h(read)f(and)g(immediately)f(execute)j (\014les)e(con)m(taining)g(assem)m(bly)g(language.)66 b(SPIM)38 b(is)f(a)i(self-)75 2979 y(con)m(tained)e(system)g(for)g (running)d(these)j(programs)g(and)f(con)m(tains)h(a)h(debugger)e(and)h (in)m(terface)g(to)h(a)f(few)75 3092 y(op)s(erating)30 b(system)g(services.)216 3205 y(The)e(arc)m(hitecture)h(of)g(the)g (MIPS)e(computers)i(is)e(simple)g(and)h(regular,)g(whic)m(h)f(mak)m(es) i(it)f(easy)i(to)f(learn)75 3318 y(and)e(understand.)39 b(The)27 b(pro)s(cessor)h(con)m(tains)g(32)h(general-purp)s(ose)e (32-bit)h(registers)g(and)f(a)i(w)m(ell-designed)75 3431 y(instruction)f(set)j(that)g(mak)m(e)h(it)e(a)g(propitious)e(target)k (for)e(generating)h(co)s(de)g(in)e(a)i(compiler.)216 3544 y(Ho)m(w)m(ev)m(er,)g(the)c(ob)m(vious)g(question)g(is:)38 b(wh)m(y)28 b(use)f(a)h(sim)m(ulator)e(when)h(man)m(y)g(p)s(eople)g(ha) m(v)m(e)i(w)m(orkstations)75 3657 y(that)i(con)m(tain)g(a)g(hardw)m (are,)g(and)f(hence)h(signi\014can)m(tly)e(faster,)i(implemen)m(tation) f(of)g(this)g(computer?)41 b(One)75 3770 y(reason)32 b(is)f(that)h(these)g(w)m(orkstations)g(are)g(not)g(generally)f(a)m(v) -5 b(ailable.)45 b(Another)31 b(reason)h(is)f(that)h(these)g(ma-)75 3882 y(c)m(hine)k(will)e(not)j(p)s(ersist)f(for)g(man)m(y)h(y)m(ears)h (b)s(ecause)e(of)h(the)g(rapid)e(progress)i(leading)e(to)j(new)e(and)h (faster)75 3995 y(computers.)47 b(Unfortunately)-8 b(,)34 b(the)e(trend)g(is)g(to)i(mak)m(e)f(computers)g(faster)g(b)m(y)f (executing)h(sev)m(eral)g(instruc-)75 4108 y(tions)k(concurren)m(tly)-8 b(,)39 b(whic)m(h)c(mak)m(es)j(their)f(arc)m(hitecture)h(more)f (di\016cult)e(to)j(understand)d(and)i(program.)75 4221 y(The)30 b(MIPS)g(arc)m(hitecture)h(ma)m(y)g(b)s(e)e(the)i(epitome)f (of)h(a)g(simple,)d(clean)j(RISC)e(mac)m(hine.)216 4334 y(In)e(addition,)f(sim)m(ulators)g(can)i(pro)m(vide)e(a)i(b)s(etter)g (en)m(vironmen)m(t)f(for)g(lo)m(w-lev)m(el)g(programming)f(than)h(an)75 4447 y(actual)33 b(mac)m(hine)g(b)s(ecause)g(they)f(can)i(detect)g (more)f(errors)f(and)g(pro)m(vide)g(more)h(features)g(than)g(an)g (actual)75 4560 y(computer.)40 b(F)-8 b(or)29 b(example,)g(SPIM)f(has)g (a)g(X-windo)m(w)g(in)m(terface)h(that)g(is)e(b)s(etter)h(than)g(most)h (debuggers)f(for)75 4673 y(the)j(actual)f(mac)m(hines.)p 75 4734 1512 4 v 177 4788 a Fq(\003)213 4820 y Fp(I)20 b(grateful)h(to)g(the)f(man)n(y)e(studen)n(ts)i(at)g(UW)g(who)g(used)g (SPIM)g(in)g(their)g(courses)h(and)f(happily)g(found)g(bugs)g(in)g(a)h (professor's)75 4911 y(co)r(de.)32 b(In)18 b(particular,)i(the)e (studen)n(ts)f(in)h(CS536,)j(Spring)c(1990,)22 b(painfully)c(found)g (the)f(last)i(few)g(bugs)f(in)f(an)h(\\already-debugged")75 5002 y(sim)n(ulator.)35 b(I)25 b(am)g(grateful)i(for)f(their)g (patience)g(and)f(p)r(ersistence.)36 b(Alan)25 b(Y)-6 b(uen-wui)25 b(Sio)n(w)h(wrote)g(the)g(X-windo)n(w)f(in)n(terface.)179 5062 y Fo(1)213 5094 y Fp(F)-6 b(or)26 b(a)g(description)g(of)h(the)e (real)i(mac)n(hines,)e(see)h(Gerry)g(Kane)g(and)f(Jo)r(e)i(Heinric)n (h,)e Fn(MIPS)i(RISC)g(A)n(r)l(chite)l(ctur)l(e,)i Fp(Pren)n(tice)75 5185 y(Hall,)e(1992.)1942 5656 y Fu(1)p eop %%Page: 2 2 2 1 bop 216 99 a Fu(Finally)-8 b(,)30 b(sim)m(ulators)f(are)j(an)e (useful)f(to)s(ol)i(for)g(studying)e(computers)i(and)f(the)h(programs)f (that)i(run)d(on)75 211 y(them.)39 b(Because)28 b(they)e(are)h (implemen)m(ted)e(in)g(soft)m(w)m(are,)k(not)d(silicon,)f(they)i(can)f (b)s(e)g(easily)f(mo)s(di\014ed)g(to)i(add)75 324 y(new)j (instructions,)e(build)g(new)i(systems)g(suc)m(h)g(as)h(m)m(ultipro)s (cessors,)d(or)j(simply)d(to)j(collect)f(data.)75 568 y Fm(1.1)112 b(Sim)m(ulation)35 b(of)j(a)g(Virtual)d(Mac)m(hine)75 739 y Fu(The)20 b(MIPS)g(arc)m(hitecture,)k(lik)m(e)c(that)h(of)g(most) g(RISC)e(computers,)k(is)c(di\016cult)g(to)i(program)g(directly)e(b)s (ecause)75 852 y(of)30 b(its)f(dela)m(y)m(ed)i(branc)m(hes,)e(dela)m(y) m(ed)i(loads,)e(and)h(restricted)f(address)g(mo)s(des.)40 b(This)28 b(di\016cult)m(y)g(is)h(tolerable)75 965 y(since)j(these)i (computers)f(w)m(ere)g(designed)f(to)i(b)s(e)f(programmed)f(in)g (high-lev)m(el)g(languages)h(and)g(so)g(presen)m(t)75 1078 y(an)k(in)m(terface)g(designed)f(for)g(compilers,)i(not)f (programmers.)59 b(A)37 b(go)s(o)s(d)g(part)g(of)g(the)g(complexit)m(y) f(results)75 1191 y(from)e(dela)m(y)m(ed)h(instructions.)50 b(A)35 b Fl(delaye)-5 b(d)38 b(br)-5 b(anch)42 b Fu(tak)m(es)36 b(t)m(w)m(o)g(cycles)e(to)i(execute.)54 b(In)33 b(the)i(second)f (cycle,)75 1304 y(the)c(instruction)f(immediately)f(follo)m(wing)h(the) h(branc)m(h)g(executes.)42 b(This)28 b(instruction)g(can)j(p)s(erform)e (useful)75 1417 y(w)m(ork)i(that)g(normally)d(w)m(ould)i(ha)m(v)m(e)h (b)s(een)f(done)g(b)s(efore)g(the)h(branc)m(h)f(or)g(it)g(can)h(b)s(e)f (a)h Fk(nop)e Fu(\(no)i(op)s(eration\).)75 1530 y(Similarly)-8 b(,)30 b Fl(delaye)-5 b(d)36 b(lo)-5 b(ads)41 b Fu(tak)m(e)34 b(t)m(w)m(o)g(cycles)e(so)h(the)f(instruction)f(immediately)f(follo)m (wing)h(a)h(load)g(cannot)75 1643 y(use)e(the)h(v)-5 b(alue)29 b(loaded)h(from)g(memory)-8 b(.)216 1756 y(MIPS)34 b(wisely)f(c)m(ho)s(ose)i(to)h(hide)d(this)g(complexit)m(y)h(b)m(y)g (implemen)m(ting)f(a)i Fl(virtual)i(machine)42 b Fu(with)33 b(their)75 1868 y(assem)m(bler.)40 b(This)29 b(virtual)g(computer)h (app)s(ears)f(to)j(ha)m(v)m(e)f(non-dela)m(y)m(ed)g(branc)m(hes)f(and)f (loads)h(and)g(a)h(ric)m(her)75 1981 y(instruction)i(set)i(than)g(the)g (actual)h(hardw)m(are.)54 b(The)34 b(assem)m(bler)g Fl(r)-5 b(e)g(or)g(ganizes)45 b Fu(\(rearranges\))36 b(instructions)75 2094 y(to)f(\014ll)e(the)i(dela)m(y)f(slots.)53 b(It)35 b(also)f(sim)m(ulates)g(the)h(additional,)f Fl(pseudoinstructions)44 b Fu(b)m(y)34 b(generating)h(short)75 2207 y(sequences)c(of)f(actual)h (instructions.)216 2320 y(By)42 b(default,)i(SPIM)d(sim)m(ulates)g(the) h(ric)m(her,)i(virtual)c(mac)m(hine.)75 b(It)42 b(can)g(also)g(sim)m (ulate)f(the)h(actual)75 2433 y(hardw)m(are.)80 b(W)-8 b(e)45 b(will)c(describ)s(e)h(the)i(virtual)d(mac)m(hine)j(and)f(only)f (men)m(tion)i(in)e(passing)g(features)i(that)75 2546 y(do)37 b(not)g(b)s(elong)f(to)h(the)g(actual)h(hardw)m(are.)59 b(In)37 b(doing)e(so,)k(w)m(e)f(are)f(follo)m(wing)e(the)i(con)m(v)m (en)m(tion)h(of)f(MIPS)75 2659 y(assem)m(bly)27 b(language)g (programmers)g(\(and)g(compilers\),)g(who)g(routinely)e(tak)m(e)k(adv) -5 b(an)m(tage)29 b(of)f(the)f(extended)75 2772 y(mac)m(hine.)40 b(Instructions)29 b(mark)m(ed)i(with)e(a)i(dagger)g(\()p Fj(y)p Fu(\))f(are)h(pseudoinstructions.)75 3015 y Fm(1.2)112 b(SPIM)38 b(In)m(terface)75 3187 y Fu(SPIM)31 b(pro)m(vides)f(a)i (simple)e(terminal)g(and)h(a)g(X-windo)m(w)g(in)m(terface.)44 b(Both)32 b(pro)m(vide)f(equiv)-5 b(alen)m(t)31 b(function-)75 3300 y(alit)m(y)-8 b(,)31 b(but)e(the)i(X)f(in)m(terface)h(is)f (generally)f(easier)i(to)g(use)f(and)g(more)g(informativ)m(e.)216 3413 y Fk(spim)p Fu(,)46 b(the)e(terminal)e(v)m(ersion,)47 b(and)c Fk(xspim)p Fu(,)j(the)d(X)h(v)m(ersion,)j(ha)m(v)m(e)e(the)e (follo)m(wing)f(command-line)75 3526 y(options:)120 3713 y Fk(-bare)302 3826 y Fu(Sim)m(ulate)36 b(a)h(bare)f(MIPS)h(mac)m(hine) f(without)g(pseudoinstructions)d(or)k(the)g(additional)e(addressing)302 3939 y(mo)s(des)30 b(pro)m(vided)f(b)m(y)h(the)h(assem)m(bler.)40 b(Implies)28 b Fk(-quiet)p Fu(.)120 4127 y Fk(-asm)302 4240 y Fu(Sim)m(ulate)i(the)g(virtual)f(MIPS)h(mac)m(hine)g(pro)m (vided)f(b)m(y)h(the)h(assem)m(bler.)40 b(This)28 b(is)i(the)g (default.)120 4427 y Fk(-pseudo)302 4540 y Fu(Accept)i (pseudoinstructions)27 b(in)i(assem)m(bly)h(co)s(de.)120 4728 y Fk(-nopseudo)302 4841 y Fu(Do)h(not)g(accept)h (pseudoinstructions)27 b(in)i(assem)m(bly)h(co)s(de.)120 5028 y Fk(-notrap)302 5141 y Fu(Do)38 b(not)f(load)f(the)h(standard)f (trap)g(handler.)58 b(This)35 b(trap)h(handler)f(has)i(t)m(w)m(o)h (functions)d(that)i(m)m(ust)302 5254 y(b)s(e)g(assumed)f(b)m(y)g(the)h (user's)g(program.)60 b(First,)38 b(it)e(handles)g(traps.)59 b(When)37 b(a)g(trap)g(o)s(ccurs,)h(SPIM)302 5367 y(jumps)22 b(to)j(lo)s(cation)e(0x80000080,)29 b(whic)m(h)22 b(should)g(con)m (tain)i(co)s(de)g(to)g(service)g(the)f(exception.)39 b(Second,)1942 5656 y(2)p eop %%Page: 3 3 3 2 bop 302 99 a Fu(this)34 b(\014le)f(con)m(tains)i(startup)f(co)s(de) g(that)h(in)m(v)m(ok)m(es)h(the)e(routine)g Fk(main)p Fu(.)51 b(Without)35 b(the)f(trap)h(handler,)302 211 y(execution)c(b)s(egins)e(at)i(the)f(instruction)f(lab)s(eled)p 2034 211 29 4 v 2068 211 V 97 w Fk(start)p Fu(.)120 399 y Fk(-trap)302 512 y Fu(Load)i(the)f(standard)g(trap)g(handler.)39 b(This)29 b(is)g(the)i(default.)120 700 y Fk(-trap)p 366 700 V 33 w(file)302 812 y Fu(Load)g(the)f(trap)h(handler)d(in)h (the)i(\014le.)120 1000 y Fk(-noquiet)302 1113 y Fu(Prin)m(t)f(a)g (message)i(when)d(an)i(exception)f(o)s(ccurs.)41 b(This)28 b(is)h(the)i(default.)120 1301 y Fk(-quiet)302 1414 y Fu(Do)g(not)g(prin)m(t)e(a)i(message)g(at)g(an)g(exception.)120 1601 y Fk(-nomapped)p 558 1601 V 32 w(io)302 1714 y Fu(Disable)f(the)g (memory-mapp)s(ed)g(IO)f(facilit)m(y)h(\(see)h(Section)f(5\).)120 1902 y Fk(-mapped)p 462 1902 V 33 w(io)302 2015 y Fu(Enable)f(the)i (memory-mapp)s(ed)e(IO)g(facilit)m(y)g(\(see)j(Section)d(5\).)42 b(Programs)30 b(that)h(use)e(SPIM)h(syscalls)302 2128 y(\(see)i(Section)e(1.5\))i(to)f(read)f(from)g(the)g(terminal)f(should) g(not)h(also)h(use)f(memory-mapp)s(ed)f(IO.)120 2315 y Fk(-file)302 2428 y Fu(Load)i(and)f(execute)h(the)g(assem)m(bly)f(co) s(de)g(in)f(the)i(\014le.)120 2616 y Fk(-s)48 b(seg)f(size)d Fu(Sets)h(the)g(initial)e(size)i(of)g(memory)g(segmen)m(t)i Fl(se)-5 b(g)53 b Fu(to)46 b(b)s(e)f Fl(size)52 b Fu(b)m(ytes.)85 b(The)45 b(memory)302 2729 y(segmen)m(ts)c(are)f(named:)59 b Fk(text)p Fu(,)41 b Fk(data)p Fu(,)h Fk(stack)p Fu(,)e Fk(ktext)p Fu(,)h(and)e Fk(kdata)p Fu(.)68 b(F)-8 b(or)40 b(example,)i(the)e(pair)f(of)302 2842 y(argumen)m(ts)31 b Fk(-sdata)46 b(2000000)28 b Fu(starts)j(the)g(user)e(data)j(segmen)m (t)f(at)g(2,000,000)j(b)m(ytes.)120 3029 y Fk(-lseg)47 b(size)31 b Fu(Sets)h(the)h(limit)d(on)i(ho)m(w)g(large)g(memory)g (segmen)m(t)i Fl(se)-5 b(g)40 b Fu(can)32 b(gro)m(w)h(to)g(b)s(e)f Fl(size)39 b Fu(b)m(ytes.)46 b(The)302 3142 y(memory)31 b(segmen)m(ts)g(that)g(can)g(gro)m(w)f(are:)42 b Fk(data)p Fu(,)29 b Fk(stack)p Fu(,)g(and)h Fk(kdata)p Fu(.)75 3382 y Fi(1.2.1)105 b(T)-9 b(erminal)34 b(In)m(terface)75 3554 y Fu(The)c(terminal)f(in)m(terface)i(\()p Fk(spim)p Fu(\))f(pro)m(vides)f(the)i(follo)m(wing)d(commands:)120 3741 y Fk(exit)302 3854 y Fu(Exit)i(the)h(sim)m(ulator.)120 4042 y Fk(read)47 b("file")302 4155 y Fu(Read)39 b Fl(\014le)45 b Fu(of)38 b(assem)m(bly)g(language)h(commands)f(in)m(to)g(SPIM's)g (memory)-8 b(.)65 b(If)37 b(the)i(\014le)e(has)h(already)302 4268 y(b)s(een)33 b(read)g(in)m(to)g(SPIM,)g(the)g(system)g(should)e(b) s(e)i(cleared)g(\(see)h Fk(reinitialize)p Fu(,)d(b)s(elo)m(w\))i(or)g (global)302 4381 y(sym)m(b)s(ols)c(will)f(b)s(e)i(m)m(ultiply)d (de\014ned.)120 4568 y Fk(load)47 b("file")302 4681 y Fu(Synon)m(ym)30 b(for)g Fk(read)p Fu(.)120 4869 y Fk(run)47 b()302 4982 y Fu(Start)39 b(running)d(a)j(program.)66 b(If)38 b(the)h(optional)f(address)g Fl(addr)50 b Fu(is)38 b(pro)m(vided,)i(the)f(program)g(starts)302 5095 y(at)g(that)g (address.)64 b(Otherwise,)40 b(the)e(program)g(starts)h(at)g(the)g (global)f(sym)m(b)s(ol)p 3159 5095 V 3193 5095 V 106 w Fk(start)p Fu(,)h(whic)m(h)e(is)302 5208 y(de\014ned)28 b(b)m(y)h(the)g(default)f(trap)h(handler)e(to)i(call)g(the)g(routine)f (at)h(the)g(global)g(sym)m(b)s(ol)e Fk(main)h Fu(with)g(the)302 5321 y(usual)h(MIPS)h(calling)f(con)m(v)m(en)m(tion.)1942 5656 y(3)p eop %%Page: 4 4 4 3 bop 120 99 a Fk(step)47 b()302 211 y Fu(Step)30 b(the)h(program)f(for)g Fl(N)45 b Fu(\(default:)40 b(1\))31 b(instructions.)39 b(Prin)m(t)29 b(instructions)f(as)j(they)g(execute.) 120 399 y Fk(continue)302 512 y Fu(Con)m(tin)m(ue)f(program)g (execution)h(without)e(stepping.)120 700 y Fk(print)47 b($N)302 812 y Fu(Prin)m(t)30 b(register)g Fl(N)15 b Fu(.)120 1000 y Fk(print)47 b($fN)302 1113 y Fu(Prin)m(t)30 b(\015oating)g(p)s(oin)m(t)f(register)i Fl(N)15 b Fu(.)120 1301 y Fk(print)47 b(addr)302 1414 y Fu(Prin)m(t)30 b(the)g(con)m(ten)m (ts)i(of)f(memory)f(at)h(address)f Fl(addr)10 b Fu(.)120 1601 y Fk(print)p 366 1601 29 4 v 33 w(sym)302 1714 y Fu(Prin)m(t)38 b(the)i(con)m(ten)m(ts)h(of)e(the)h(sym)m(b)s(ol)d (table,)42 b(i.e.,)g(the)d(addresses)g(of)g(the)h(global)e(\(but)h(not) g(lo)s(cal\))302 1827 y(sym)m(b)s(ols.)120 2015 y Fk(reinitialize)302 2128 y Fu(Clear)30 b(the)h(memory)f(and)g(registers.)120 2315 y Fk(breakpoint)45 b(addr)302 2428 y Fu(Set)28 b(a)f(breakp)s(oin) m(t)f(at)i(address)e Fl(addr)10 b Fu(.)42 b Fl(addr)c Fu(can)28 b(b)s(e)e(either)h(a)g(memory)g(address)g(or)g(sym)m(b)s (olic)e(lab)s(el.)120 2616 y Fk(delete)47 b(addr)302 2729 y Fu(Delete)32 b(all)d(breakp)s(oin)m(ts)g(at)i(address)f Fl(addr)10 b Fu(.)120 2916 y Fk(list)302 3029 y Fu(List)30 b(all)f(breakp)s(oin)m(ts.)120 3217 y Fk(.)302 3330 y Fu(Rest)i(of)g(line)d(is)i(an)g(assem)m(bly)g(instruction)e(that)j(is)f (stored)g(in)f(memory)-8 b(.)120 3517 y Fk()302 3630 y Fu(A)31 b(newline)d(reexecutes)k(previous)d(command.)120 3818 y Fk(?)302 3931 y Fu(Prin)m(t)h(a)g(help)f(message.)216 4118 y(Most)38 b(commands)e(can)h(b)s(e)f(abbreviated)g(to)h(their)f (unique)e(pre\014x)i(e.g.,)k Fk(ex)p Fu(,)d Fk(re)p Fu(,)h Fk(l)p Fu(,)g Fk(ru)p Fu(,)g Fk(s)p Fu(,)g Fk(p)p Fu(.)59 b(More)75 4231 y(dangerous)30 b(commands,)g(suc)m(h)g(as)h Fk(reinitialize)p Fu(,)c(require)i(a)i(longer)f(pre\014x.)75 4471 y Fi(1.2.2)105 b(X-Windo)m(w)35 b(In)m(terface)75 4643 y Fu(The)27 b(X)h(v)m(ersion)f(of)h(SPIM,)g Fk(xspim)p Fu(,)f(lo)s(oks)g(di\013eren)m(t,)h(but)f(should)f(op)s(erate)i(in)f (the)h(same)g(manner)f(as)h Fk(spim)p Fu(.)75 4756 y(The)d(X)h(windo)m (w)e(has)i(\014v)m(e)g(panes)g(\(see)g(Figure)g(1\).)40 b(The)25 b(top)h(pane)g(displa)m(ys)d(the)j(con)m(ten)m(ts)i(of)e(the)g (registers.)75 4869 y(It)k(is)g(con)m(tin)m(ually)f(up)s(dated,)g (except)j(while)c(a)j(program)f(is)f(running.)216 4982 y(The)h(next)h(pane)f(con)m(tains)g(the)h(buttons)f(that)h(con)m(trol)f (the)h(sim)m(ulator:)302 5169 y Fi(quit)302 5282 y Fu(Exit)f(from)g (the)g(sim)m(ulator.)1942 5656 y(4)p eop %%Page: 5 5 5 4 bop 629 1250 a 21100149 21313290 1184071 8156938 36245749 43547525 startTexFig 629 1250 a %%BeginDocument: xinterface.id %!PS-Adobe-2.0 EPSF-1.2 %%DocumentFonts: Courier Helvetica-Bold Times-Roman %%Pages: 1 %%BoundingBox: 18 124 551 662 %%EndComments /IdrawDict 53 dict def IdrawDict begin /reencodeISO { dup dup findfont dup length dict begin { 1 index /FID ne { def }{ pop pop } ifelse } forall /Encoding ISOLatin1Encoding def currentdict end definefont } def /ISOLatin1Encoding [ /.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/quoteright /parenleft/parenright/asterisk/plus/comma/minus/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/quoteleft/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/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine /guillemotright/onequarter/onehalf/threequarters/questiondown /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis /yacute/thorn/ydieresis ] def /Courier reencodeISO def /Helvetica-Bold reencodeISO def /Times-Roman reencodeISO def /arrowHeight 8 def /arrowWidth 4 def /none null def /numGraphicParameters 17 def /stringLimit 65535 def /Begin { save numGraphicParameters dict begin } def /End { end restore } def /SetB { dup type /nulltype eq { pop false /brushRightArrow idef false /brushLeftArrow idef true /brushNone idef } { /brushDashOffset idef /brushDashArray idef 0 ne /brushRightArrow idef 0 ne /brushLeftArrow idef /brushWidth idef false /brushNone idef } ifelse } def /SetCFg { /fgblue idef /fggreen idef /fgred idef } def /SetCBg { /bgblue idef /bggreen idef /bgred idef } def /SetF { /printSize idef /printFont idef } def /SetP { dup type /nulltype eq { pop true /patternNone idef } { dup -1 eq { /patternGrayLevel idef /patternString idef } { /patternGrayLevel idef } ifelse false /patternNone idef } ifelse } def /BSpl { 0 begin storexyn newpath n 1 gt { 0 0 0 0 0 0 1 1 true subspline n 2 gt { 0 0 0 0 1 1 2 2 false subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline } if n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Circ { newpath 0 360 arc patternNone not { ifill } if brushNone not { istroke } if } def /CBSpl { 0 begin dup 2 gt { storexyn newpath n 1 sub dup 0 0 1 1 2 2 true subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline n 2 sub dup n 1 sub dup 0 0 1 1 false subspline patternNone not { ifill } if brushNone not { istroke } if } { Poly } ifelse end } dup 0 4 dict put def /Elli { 0 begin newpath 4 2 roll translate scale 0 0 1 0 360 arc patternNone not { ifill } if brushNone not { istroke } if end } dup 0 1 dict put def /Line { 0 begin 2 storexyn newpath x 0 get y 0 get moveto x 1 get y 1 get lineto brushNone not { istroke } if 0 0 1 1 leftarrow 0 0 1 1 rightarrow end } dup 0 4 dict put def /MLine { 0 begin storexyn newpath n 1 gt { x 0 get y 0 get moveto 1 1 n 1 sub { /i exch def x i get y i get lineto } for patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Poly { 3 1 roll newpath moveto -1 add { lineto } repeat closepath patternNone not { ifill } if brushNone not { istroke } if } def /Rect { 0 begin /t exch def /r exch def /b exch def /l exch def newpath l b moveto l t lineto r t lineto r b lineto closepath patternNone not { ifill } if brushNone not { istroke } if end } dup 0 4 dict put def /Text { ishow } def /idef { dup where { pop pop pop } { exch def } ifelse } def /ifill { 0 begin gsave patternGrayLevel -1 ne { fgred bgred fgred sub patternGrayLevel mul add fggreen bggreen fggreen sub patternGrayLevel mul add fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor eofill } { eoclip originalCTM setmatrix pathbbox /t exch def /r exch def /b exch def /l exch def /w r l sub ceiling cvi def /h t b sub ceiling cvi def /imageByteWidth w 8 div ceiling cvi def /imageHeight h def bgred bggreen bgblue setrgbcolor eofill fgred fggreen fgblue setrgbcolor w 0 gt h 0 gt and { l b translate w h scale w h true [w 0 0 h neg 0 h] { patternproc } imagemask } if } ifelse grestore end } dup 0 8 dict put def /istroke { gsave brushDashOffset -1 eq { [] 0 setdash 1 setgray } { brushDashArray brushDashOffset setdash fgred fggreen fgblue setrgbcolor } ifelse brushWidth setlinewidth originalCTM setmatrix stroke grestore } def /ishow { 0 begin gsave fgred fggreen fgblue setrgbcolor printFont printSize scalefont setfont /descender 0 printFont /FontBBox get 1 get printFont /FontMatrix get transform exch pop def /vertoffset 1 printSize sub descender sub def { 0 vertoffset moveto show /vertoffset vertoffset printSize sub def } forall grestore end } dup 0 2 dict put def /patternproc { 0 begin /patternByteLength patternString length def /patternHeight patternByteLength 8 mul sqrt cvi def /patternWidth patternHeight def /patternByteWidth patternWidth 8 idiv def /imageByteMaxLength imageByteWidth imageHeight mul stringLimit patternByteWidth sub min def /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv patternHeight mul patternHeight max def /imageHeight imageHeight imageMaxHeight sub store /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def 0 1 imageMaxHeight 1 sub { /y exch def /patternRow y patternByteWidth mul patternByteLength mod def /patternRowString patternString patternRow patternByteWidth getinterval def /imageRow y imageByteWidth mul def 0 patternByteWidth imageByteWidth 1 sub { /x exch def imageString imageRow x add patternRowString putinterval } for } for imageString end } dup 0 12 dict put def /min { dup 3 2 roll dup 4 3 roll lt { exch } if pop } def /max { dup 3 2 roll dup 4 3 roll gt { exch } if pop } def /arrowhead { 0 begin transform originalCTM itransform /taily exch def /tailx exch def transform originalCTM itransform /tipy exch def /tipx exch def /dy tipy taily sub def /dx tipx tailx sub def /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def gsave originalCTM setmatrix tipx tipy translate angle rotate newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath patternNone not { originalCTM setmatrix /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul arrowWidth div def /padtail brushWidth 2 div def tipx tipy translate angle rotate padtip 0 translate arrowHeight padtip add padtail add arrowHeight div dup scale arrowheadpath ifill } if brushNone not { originalCTM setmatrix tipx tipy translate angle rotate arrowheadpath istroke } if grestore end } dup 0 9 dict put def /arrowheadpath { newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath } def /leftarrow { 0 begin y exch get /taily exch def x exch get /tailx exch def y exch get /tipy exch def x exch get /tipx exch def brushLeftArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /rightarrow { 0 begin y exch get /tipy exch def x exch get /tipx exch def y exch get /taily exch def x exch get /tailx exch def brushRightArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /midpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 x1 add 2 div y0 y1 add 2 div end } dup 0 4 dict put def /thirdpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 2 mul x1 add 3 div y0 2 mul y1 add 3 div end } dup 0 4 dict put def /subspline { 0 begin /movetoNeeded exch def y exch get /y3 exch def x exch get /x3 exch def y exch get /y2 exch def x exch get /x2 exch def y exch get /y1 exch def x exch get /x1 exch def y exch get /y0 exch def x exch get /x0 exch def x1 y1 x2 y2 thirdpoint /p1y exch def /p1x exch def x2 y2 x1 y1 thirdpoint /p2y exch def /p2x exch def x1 y1 x0 y0 thirdpoint p1x p1y midpoint /p0y exch def /p0x exch def x2 y2 x3 y3 thirdpoint p2x p2y midpoint /p3y exch def /p3x exch def movetoNeeded { p0x p0y moveto } if p1x p1y p2x p2y p3x p3y curveto end } dup 0 17 dict put def /storexyn { /n exch def /y n array def /x n array def n 1 sub -1 0 { /i exch def y i 3 2 roll put x i 3 2 roll put } for } def %%EndProlog %I Idraw 9 Grid 8 %%Page: 1 1 Begin %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.923077 0 0 0.923077 0 0 ] concat /originalCTM matrix currentmatrix def Begin %I Poly %I b 13107 1 0 0 [2 2 2 2 2 2 2 2] 15 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 97 131 ] concat %I 4 7 7 7 586 499 586 496 5 4 Poly End Begin %I Line %I b 13107 1 0 0 [2 2 2 2 2 2 2 2] 15 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 97 131 ] concat %I 7 568 499 568 Line End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-courier-medium-r-normal--10-*-75-* Courier 10 SetF %I t [ 1 0 0 1 112 691 ] concat %I [ (PC = 00000000 EPC = 00000000 Cause = 0000000 BadVaddr = 00000000) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-courier-medium-r-normal--10-*-75-* Courier 10 SetF %I t [ 1 0 0 1 112 682 ] concat %I [ (Status= 00000000 HI = 00000000 LO = 0000000) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-courier-medium-r-normal--10-*-75-* Courier 10 SetF %I t [ 1 0 0 1 112 665 ] concat %I [ (R0 \(r0\) = 00000000 R8 \(t0\) = 00000000 R16 \(s0\) = 0000000 R24 \(t8\) = 00000000) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-courier-medium-r-normal--10-*-75-* Courier 10 SetF %I t [ 1 0 0 1 112 657 ] concat %I [ (R1 \(at\) = 00000000 R9 \(t1\) = 00000000 R17 \(s1\) = 0000000 R25 \(s9\) = 00000000) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-courier-medium-r-normal--10-*-75-* Courier 10 SetF %I t [ 1 0 0 1 112 648 ] concat %I [ (R2 \(v0\) = 00000000 R10 \(t2\) = 00000000 R18 \(s2\) = 0000000 R26 \(k0\) = 00000000) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-courier-medium-r-normal--10-*-75-* Courier 10 SetF %I t [ 1 0 0 1 112 639 ] concat %I [ (R3 \(v1\) = 00000000 R11 \(t3\) = 00000000 R19 \(s3\) = 0000000 R27 \(k1\) = 00000000) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-courier-medium-r-normal--10-*-75-* Courier 10 SetF %I t [ 1 0 0 1 112 631 ] concat %I [ (R4 \(a0\) = 00000000 R12 \(t4\) = 00000000 R20 \(s4\) = 0000000 R28 \(gp\) = 00000000) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-courier-medium-r-normal--10-*-75-* Courier 10 SetF %I t [ 1 0 0 1 112 622 ] concat %I [ (R5 \(a1\) = 00000000 R13 \(t5\) = 00000000 R21 \(s5\) = 0000000 R29 \(gp\) = 00000000) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-courier-medium-r-normal--10-*-75-* Courier 10 SetF %I t [ 1 0 0 1 112 613 ] concat %I [ (R6 \(a2\) = 00000000 R14 \(t6\) = 00000000 R22 \(s6\) = 0000000 R30 \(s8\) = 00000000) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-courier-medium-r-normal--10-*-75-* Courier 10 SetF %I t [ 1 0 0 1 112 605 ] concat %I [ (R7 \(a3\) = 00000000 R15 \(t7\) = 00000000 R23 \(s7\) = 0000000 R31 \(ra\) = 00000000) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-courier-medium-r-normal--10-*-75-* Courier 10 SetF %I t [ 1 0 0 1 112 587 ] concat %I [ (FP0 = 0.000000 FP8 = 0.000000 FP16 = 0.00000 FP24 = 0.000000) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-courier-medium-r-normal--10-*-75-* Courier 10 SetF %I t [ 1 0 0 1 112 562 ] concat %I [ (FP6 = 0.000000 FP14 = 0.000000 FP22 = 0.00000 FP30 = 0.000000) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-courier-medium-r-normal--10-*-75-* Courier 10 SetF %I t [ 1 0 0 1 112 570 ] concat %I [ (FP4 = 0.000000 FP12 = 0.000000 FP20 = 0.00000 FP28 = 0.000000) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-courier-medium-r-normal--10-*-75-* Courier 10 SetF %I t [ 1 0 0 1 112 579 ] concat %I [ (FP2 = 0.000000 FP10 = 0.000000 FP18 = 0.00000 FP26 = 0.000000) ] Text End Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.680251 0 0 1 461.205 131 ] concat %I 11 24 396 33 396 84 396 93 396 102 387 93 378 84 378 33 378 24 378 15 387 24 396 11 CBSpl End Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.680251 0 0 1 392.205 132 ] concat %I 11 24 396 33 396 84 396 93 396 102 387 93 378 84 378 33 378 24 378 15 387 24 396 11 CBSpl End Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.680251 0 0 1 325.205 132 ] concat %I 11 24 396 33 396 84 396 93 396 102 387 93 378 84 378 33 378 24 378 15 387 24 396 11 CBSpl End Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.680251 0 0 1 256.205 132 ] concat %I 11 24 396 33 396 84 396 93 396 102 387 93 378 84 378 33 378 24 378 15 387 24 396 11 CBSpl End Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.680251 0 0 1 186.205 133 ] concat %I 11 24 396 33 396 84 396 93 396 102 387 93 378 84 378 33 378 24 378 15 387 24 396 11 CBSpl End Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.680251 0 0 1 118.205 133 ] concat %I 11 24 396 33 396 84 396 93 396 102 387 93 378 84 378 33 378 24 378 15 387 24 396 11 CBSpl End Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.680251 0 0 1 392.205 107 ] concat %I 11 24 396 33 396 84 396 93 396 102 387 93 378 84 378 33 378 24 378 15 387 24 396 11 CBSpl End Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.680251 0 0 1 325.205 107 ] concat %I 11 24 396 33 396 84 396 93 396 102 387 93 378 84 378 33 378 24 378 15 387 24 396 11 CBSpl End Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.680251 0 0 1 256.205 107 ] concat %I 11 24 396 33 396 84 396 93 396 102 387 93 378 84 378 33 378 24 378 15 387 24 396 11 CBSpl End Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.680251 0 0 1 186.205 108 ] concat %I 11 24 396 33 396 84 396 93 396 102 387 93 378 84 378 33 378 24 378 15 387 24 396 11 CBSpl End Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.680251 0 0 1 118.205 108 ] concat %I 11 24 396 33 396 84 396 93 396 102 387 93 378 84 378 33 378 24 378 15 387 24 396 11 CBSpl End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-courier-medium-r-normal--10-*-75-* Courier 10 SetF %I t [ 1 0 0 1 146 524 ] concat %I [ (quit) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-courier-medium-r-normal--10-*-75-* Courier 10 SetF %I t [ 1 0 0 1 214 524 ] concat %I [ (load) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-courier-medium-r-normal--10-*-75-* Courier 10 SetF %I t [ 1 0 0 1 287 523 ] concat %I [ (run) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-courier-medium-r-normal--10-*-75-* Courier 10 SetF %I t [ 1 0 0 1 353 523 ] concat %I [ (step) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-courier-medium-r-normal--10-*-75-* Courier 10 SetF %I t [ 1 0 0 1 417 523 ] concat %I [ (clear) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-courier-medium-r-normal--10-*-75-* Courier 10 SetF %I t [ 1 0 0 1 474 522 ] concat %I [ (set value) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-courier-medium-r-normal--10-*-75-* Courier 10 SetF %I t [ 1 0 0 1 143 499 ] concat %I [ (print) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-courier-medium-r-normal--10-*-75-* Courier 10 SetF %I t [ 1 0 0 1 205 499 ] concat %I [ (breakpt) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-courier-medium-r-normal--10-*-75-* Courier 10 SetF %I t [ 1 0 0 1 284 498 ] concat %I [ (help) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-courier-medium-r-normal--10-*-75-* Courier 10 SetF %I t [ 1 0 0 1 341 498 ] concat %I [ (terminal) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-courier-medium-r-normal--10-*-75-* Courier 10 SetF %I t [ 1 0 0 1 420 498 ] concat %I [ (mode) ] Text End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 97 131 ] concat %I 7 344 499 344 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 97 129 ] concat %I 7 327 499 327 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 97 161 ] concat %I 7 180 499 180 Line End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-courier-medium-r-normal--10-*-75-* Courier 10 SetF %I t [ 1 0 0 1 112 227 ] concat %I [ (SPIM Version 3.2 of January 14, 1990) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 304.5 469.5 ] concat %I [ (Text Segments) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--10-*-75-* Helvetica-Bold 10 SetF %I t [ 1 0 0 1 121 711 ] concat %I [ (xspim) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--14-*-75-* Helvetica-Bold 14 SetF %I t [ 1 0 0 1 21.0001 647 ] concat %I [ (Register) (Display) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--14-*-75-* Helvetica-Bold 14 SetF %I t [ 1 0 0 1 21.0001 517 ] concat %I [ (Control) (Buttons) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--14-*-75-* Helvetica-Bold 14 SetF %I t [ 1 0 0 1 21.0001 433 ] concat %I [ (User and) (Kernel) (Text) (Segments) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--14-*-75-* Helvetica-Bold 14 SetF %I t [ 1 0 0 1 21.0001 193 ] concat %I [ (SPIM) (Messages) ] Text End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 -30 123 ] concat %I 134 413 626 413 Line End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-times-medium-r-normal--10-*-75-* Times-Roman 10 SetF %I t [ 1 0 0 1 313.5 673 ] concat %I [ (General Registers) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-times-medium-r-normal--10-*-75-* Times-Roman 10 SetF %I t [ 1 0 0 1 306 594 ] concat %I [ (Double Floating Point Registers) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-times-medium-r-normal--10-*-75-* Times-Roman 10 SetF %I t [ 1 0 0 1 308 548 ] concat %I [ (Single Floating Point Registers) ] Text End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 97 182 ] concat %I 7 180 499 180 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 97 56 ] concat %I 7 180 499 180 Line End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 302 355 ] concat %I [ (Data Segments) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--14-*-75-* Helvetica-Bold 14 SetF %I t [ 1 0 0 1 21.0001 302 ] concat %I [ (Data and) (Stack) (Segments) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-courier-medium-r-normal--10-*-75-* Courier 10 SetF %I t [ 1 0 0 1 112 449 ] concat %I [ ([0x00400000] 0x8fa40000 lw R4, 0\(R29\) []) ([0x00400004] 0x27a50004 addiu R5, R29, 4 []) ([0x00400008] 0x24a60004 addiu R6, R5, 4 []) ([0x0040000c] 0x00041090 sll R2, R4, 2) ([0x00400010] 0x00c23021 addu R6, R6, R2) ([0x00400014] 0x0c000000 jal 0x00000000 []) ([0x00400018] 0x3402000a ori R0, R0, 10 []) ([0x0040001c] 0x0000000c syscall) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-courier-medium-r-normal--10-*-75-* Courier 10 SetF %I t [ 1 0 0 1 112 333 ] concat %I [ ([0x10000000]...[0x10010000] 0x00000000) ([0x10010004] 0x74706563 0x206e6f69 0x636f2000) ([0x10010010] 0x72727563 0x61206465 0x6920646e 0x726f6e67) ([0x10010020] 0x000a6465 0x495b2020 0x7265746e 0x74707572) ([0x10010030] 0x0000205d 0x20200000 0x616e555b 0x6e67696c) ([0x10010040] 0x61206465 0x65726464 0x69207373 0x6e69206e) ([0x10010050] 0x642f7473 0x20617461 0x63746566 0x00205d68) ([0x10010060] 0x555b2020 0x696c616e 0x64656e67 0x64646120) ([0x10010070] 0x73736572 0x206e6920 0x726f7473 0x00205d65) ] Text End End %I eop showpage %%Trailer end %%EndDocument endTexFig 1184 4146 a Fu(Figure)30 b(1:)41 b(X-windo)m(w)30 b(in)m(terface)h(to) g(SPIM.)1942 5656 y(5)p eop %%Page: 6 6 6 5 bop 302 99 a Fi(load)302 211 y Fu(Read)31 b(a)g(source)f(\014le)g (in)m(to)g(memory)-8 b(.)302 389 y Fi(run)302 502 y Fu(Start)31 b(the)f(program)h(running.)302 679 y Fi(step)302 792 y Fu(Single-step)e(through)h(a)h(program.)302 969 y Fi(clear)302 1082 y Fu(Reinitialize)d(registers)i(or)h(memory)-8 b(.)302 1259 y Fi(set)35 b(v)-6 b(alue)302 1372 y Fu(Set)31 b(the)f(v)-5 b(alue)30 b(in)f(a)i(register)f(or)h(memory)f(lo)s(cation.)302 1549 y Fi(prin)m(t)302 1662 y Fu(Prin)m(t)g(the)g(v)-5 b(alue)30 b(in)f(a)i(register)f(or)g(memory)h(lo)s(cation.)302 1839 y Fi(breakp)s(oin)m(t)302 1952 y Fu(Set)g(or)f(delete)h(a)g (breakp)s(oin)m(t)e(or)h(list)f(all)h(breakp)s(oin)m(ts.)302 2129 y Fi(help)302 2242 y Fu(Prin)m(t)g(a)g(help)f(message.)302 2420 y Fi(terminal)302 2532 y Fu(Raise)h(or)h(hide)e(the)h(console)h (windo)m(w.)302 2710 y Fi(mo)s(de)302 2823 y Fu(Set)g(SPIM)f(op)s (erating)f(mo)s(des.)216 2984 y(The)h(next)g(t)m(w)m(o)i(panes)e (displa)m(y)e(the)j(memory)f(con)m(ten)m(ts.)42 b(The)30 b(top)g(one)h(sho)m(ws)f(instructions)e(from)i(the)75 3097 y(user)g(and)g(k)m(ernel)g(text)h(segmen)m(ts.)1283 3064 y Fr(2)1365 3097 y Fu(The)f(\014rst)g(few)g(instructions)f(in)g (the)h(text)i(segmen)m(t)g(are)f(startup)f(co)s(de)75 3210 y(\()p 116 3210 29 4 v 150 3210 V 69 w Fk(start)p Fu(\))f(that)i(loads)f Fk(argc)f Fu(and)h Fk(argv)f Fu(in)m(to)i (registers)f(and)g(in)m(v)m(ok)m(es)h(the)f Fk(main)g Fu(routine.)216 3323 y(The)d(lo)m(w)m(er)h(of)f(these)h(t)m(w)m(o)g (panes)f(displa)m(ys)f(the)h(data)h(and)f(stac)m(k)i(segmen)m(ts.)41 b(Both)28 b(panes)f(are)g(up)s(dated)75 3436 y(as)k(a)f(program)h (executes.)216 3549 y(The)c(b)s(ottom)h(pane)f(is)g(used)g(to)h(displa) m(y)e(messages)i(from)f(the)h(sim)m(ulator.)39 b(It)28 b(do)s(es)f(not)h(displa)m(y)d(output)75 3662 y(from)40 b(an)h(executing)f(program.)72 b(When)40 b(a)h(program)f(reads)h(or)f (writes,)j(its)d(IO)g(app)s(ears)g(in)f(a)i(separate)75 3775 y(windo)m(w,)29 b(called)h(the)g(Console,)g(whic)m(h)f(p)s(ops)h (up)f(when)g(needed.)75 4013 y Fm(1.3)112 b(Surprising)37 b(F)-9 b(eatures)75 4185 y Fu(Although)26 b(SPIM)g(faithfully)e(sim)m (ulates)i(the)h(MIPS)f(computer,)i(it)e(is)g(a)h(sim)m(ulator)f(and)g (certain)h(things)f(are)75 4298 y(not)32 b(iden)m(tical)f(to)i(the)f (actual)g(computer.)46 b(The)31 b(most)i(ob)m(vious)e(di\013erences)g (are)i(that)f(instruction)e(timing)75 4411 y(and)g(the)i(memory)e (systems)h(are)h(not)f(iden)m(tical.)41 b(SPIM)31 b(do)s(es)f(not)i (sim)m(ulate)e(cac)m(hes)i(or)f(memory)g(latency)-8 b(,)75 4523 y(nor)30 b(do)s(es)g(it)g(accurate)i(re\015ect)f(the)f(dela)m(ys)g (for)h(\015oating)f(p)s(oin)m(t)f(op)s(erations)h(or)g(m)m(ultiplies)e (and)h(divides.)216 4636 y(Another)42 b(surprise)e(\(whic)m(h)h(o)s (ccurs)g(on)h(the)h(real)e(mac)m(hine)h(as)g(w)m(ell\))g(is)f(that)h(a) h(pseudoinstruction)75 4749 y(expands)d(in)m(to)h(sev)m(eral)h(mac)m (hine)f(instructions.)71 b(When)41 b(single-stepping)e(or)i(examining)e (memory)-8 b(,)45 b(the)75 4862 y(instructions)24 b(that)i(y)m(ou)g (see)h(are)f(sligh)m(tly)e(di\013eren)m(t)h(from)h(the)g(source)g (program.)39 b(The)25 b(corresp)s(ondence)g(b)s(e-)75 4975 y(t)m(w)m(een)g(the)f(t)m(w)m(o)h(sets)f(of)f(instructions)f(is)h (fairly)e(simple)h(since)h(SPIM)g(do)s(es)g(not)h(reorganize)g(the)g (instructions)75 5088 y(to)31 b(\014ll)d(dela)m(y)j(slots.)p 75 5139 1512 4 v 179 5193 a Fo(2)213 5225 y Fp(These)d(instructions)g (are)g(real|not)f(pseudo|MIPS)g(instructions.)40 b(SPIM)27 b(translates)h(assem)n(bler)g(pseudoinstructions)75 5316 y(to)e(1{3)i(MIPS)e(instructions)g(b)r(efore)h(storing)g(the)f(program) g(in)g(memory)-6 b(.)34 b(Eac)n(h)26 b(source)h(instruction)f(app)r (ears)h(as)f(a)h(commen)n(t)75 5407 y(on)f(the)f(\014rst)g(instruction) h(to)g(whic)n(h)g(it)g(is)g(translated.)1942 5656 y Fu(6)p eop %%Page: 7 7 7 6 bop 75 99 a Fm(1.4)112 b(Assem)m(bler)36 b(Syn)m(tax)75 270 y Fu(Commen)m(ts)28 b(in)e(assem)m(bler)i(\014les)e(b)s(egin)h (with)f(a)j(sharp-sign)d(\()p Fk(#)p Fu(\).)40 b(Ev)m(erything)27 b(from)g(the)h(sharp-sign)e(to)j(the)75 383 y(end)h(of)g(the)h(line)e (is)g(ignored.)216 496 y(Iden)m(ti\014ers)22 b(are)i(a)g(sequence)g(of) g(alphan)m(umeric)d(c)m(haracters,)27 b(underbars)21 b(\()p 2783 496 29 4 v 35 w(\),)k(and)e(dots)h(\()p Fk(.)p Fu(\))38 b(that)24 b(do)g(not)75 609 y(b)s(egin)h(with)h(a)h(n)m(um)m (b)s(er.)38 b(Op)s(co)s(des)26 b(for)g(instructions)f(are)i(reserv)m (ed)g(w)m(ords)f(that)i(are)f Fi(not)g Fu(v)-5 b(alid)25 b(iden)m(ti\014ers.)75 722 y(Lab)s(els)i(are)h(declared)f(b)m(y)h (putting)f(them)h(at)h(the)f(b)s(eginning)d(of)j(a)h(line)d(follo)m(w)m (ed)h(b)m(y)h(a)h(colon,)f(for)g(example:)457 894 y Fk(.data)170 1007 y(item:)47 b(.word)f(1)457 1120 y(.text)457 1233 y(.globl)g(main)619 b(#)48 b(Must)e(be)i(global)170 1346 y(main:)f(lw)g($t0,)g(item)216 1518 y Fu(Strings)28 b(are)i(enclosed)g (in)e(double-quotes)h(\()p Fk(")p Fu(\).)41 b(Sp)s(ecial)28 b(c)m(haracters)j(in)d(strings)h(follo)m(w)f(the)i(C)f(con)m(v)m(en-)75 1631 y(tion:)266 1804 y Fk(newline)380 b(\\n)266 1916 y(tab)572 b(\\t)266 2029 y(quote)476 b(\\")216 2202 y Fu(SPIM)30 b(supp)s(orts)e(a)j(subset)f(of)h(the)f(assem)m(bler)g (directiv)m(es)g(pro)m(vided)f(b)m(y)h(the)h(MIPS)e(assem)m(bler:)120 2374 y Fk(.align)47 b(n)302 2487 y Fu(Align)23 b(the)i(next)f(datum)g (on)g(a)h(2)1407 2454 y Fh(n)1479 2487 y Fu(b)m(yte)g(b)s(oundary)-8 b(.)37 b(F)-8 b(or)25 b(example,)g Fk(.align)46 b(2)24 b Fu(aligns)f(the)i(next)f(v)-5 b(alue)302 2600 y(on)34 b(a)h(w)m(ord)f(b)s(oundary)-8 b(.)50 b Fk(.align)c(0)34 b Fu(turns)f(o\013)i(automatic)g(alignmen)m(t)e(of)i Fk(.half)p Fu(,)e Fk(.word)p Fu(,)h Fk(.float)p Fu(,)302 2713 y(and)c Fk(.double)e Fu(directiv)m(es)i(un)m(til)f(the)h(next)h Fk(.data)e Fu(or)h Fk(.kdata)f Fu(directiv)m(e.)120 2894 y Fk(.ascii)47 b(str)302 3007 y Fu(Store)31 b(the)f(string)g(in)f (memory)-8 b(,)31 b(but)e(do)i(not)f(n)m(ull-terminate)f(it.)120 3189 y Fk(.asciiz)46 b(str)302 3302 y Fu(Store)31 b(the)f(string)g(in)f (memory)h(and)g(n)m(ull-terminate)f(it.)120 3483 y Fk(.byte)47 b(b1,)g(...,)f(bn)302 3596 y Fu(Store)31 b(the)f Fg(n)g Fu(v)-5 b(alues)30 b(in)f(successiv)m(e)i(b)m(ytes)g(of)f(memory)-8 b(.)120 3778 y Fk(.data)47 b()302 3891 y Fu(The)31 b(follo)m(wing)f(data)h(items)g(should)e(b)s(e)i(stored)g(in)f(the)h (data)h(segmen)m(t.)44 b(If)31 b(the)g(optional)f(argumen)m(t)302 4004 y Fl(addr)42 b Fu(is)30 b(presen)m(t,)g(the)h(items)f(are)g (stored)h(b)s(eginning)d(at)j(address)e Fl(addr)10 b Fu(.)120 4185 y Fk(.double)46 b(d1,)h(...,)g(dn)302 4298 y Fu(Store)31 b(the)f Fg(n)g Fu(\015oating)h(p)s(oin)m(t)e(double)g (precision)f(n)m(um)m(b)s(ers)h(in)g(successiv)m(e)i(memory)f(lo)s (cations.)120 4480 y Fk(.extern)46 b(sym)h(size)302 4592 y Fu(Declare)38 b(that)g(the)f(datum)f(stored)h(at)h Fk(sym)e Fu(is)g Fk(size)f Fu(b)m(ytes)j(large)f(and)f(is)g(a)h(global) g(sym)m(b)s(ol.)59 b(This)302 4705 y(directiv)m(e)32 b(enables)g(the)g(assem)m(bler)g(to)h(store)g(the)g(datum)e(in)g(a)i(p) s(ortion)e(of)h(the)h(data)g(segmen)m(t)g(that)302 4818 y(is)d(e\016cien)m(tly)g(accessed)h(via)f(register)h Fk($gp)p Fu(.)120 5000 y Fk(.float)47 b(f1,)f(...,)h(fn)302 5113 y Fu(Store)31 b(the)f Fg(n)g Fu(\015oating)h(p)s(oin)m(t)e(single) g(precision)g(n)m(um)m(b)s(ers)f(in)i(successiv)m(e)g(memory)h(lo)s (cations.)120 5294 y Fk(.globl)47 b(sym)302 5407 y Fu(Declare)32 b(that)f(sym)m(b)s(ol)e Fk(sym)g Fu(is)h(global)f(and)h(can)h(b)s(e)e (referenced)i(from)f(other)g(\014les.)1942 5656 y(7)p eop %%Page: 8 8 8 7 bop 331 11 3268 4 v 329 110 4 100 v 503 80 a Ff(Service)p 972 110 V 221 w(System)31 b(Call)g(Co)s(de)p 1821 110 V 1821 110 V 362 w(Argumen)m(ts)p 2909 110 V 2909 110 V 522 w(Result)p 3597 110 V 331 113 3268 4 v 331 130 V 329 230 4 100 v 381 200 a Fx(prin)n(t)p 564 200 25 4 v 30 w(in)n(t)p 972 230 4 100 v 689 w(1)p 1821 230 V 454 w Fe($a0)26 b Fx(=)h(in)n(teger)p 2909 230 V 3597 230 V 329 329 V 381 299 a(prin)n(t)p 564 299 25 4 v 30 w(\015oat)p 972 329 4 100 v 626 w(2)p 1821 329 V 454 w Fe($f12)f Fx(=)h(\015oat)p 2909 329 V 3597 329 V 329 429 V 381 399 a(prin)n(t)p 564 399 25 4 v 30 w(double)p 972 429 4 100 v 548 w(3)p 1821 429 V 454 w Fe($f12)f Fx(=)h(double)p 2909 429 V 3597 429 V 329 529 V 381 499 a(prin)n(t)p 564 499 25 4 v 30 w(string)p 972 529 4 100 v 579 w(4)p 1821 529 V 454 w Fe($a0)f Fx(=)h(string)p 2909 529 V 3597 529 V 329 628 V 381 598 a(read)p 544 598 25 4 v 29 w(in)n(t)p 972 628 4 100 v 710 w(5)p 1821 628 V 2909 628 V 1541 w(in)n(teger)g(\(in)h Fe($v0)p Fx(\))p 3597 628 V 329 728 V 381 698 a(read)p 544 698 25 4 v 29 w(\015oat)p 972 728 4 100 v 647 w(6)p 1821 728 V 2909 728 V 1541 w(\015oat)g(\(in)g Fe($f0)p Fx(\))p 3597 728 V 329 827 V 381 798 a(read)p 544 798 25 4 v 29 w(double)p 972 827 4 100 v 569 w(7)p 1821 827 V 2909 827 V 1541 w(double)g(\(in)g Fe($f0)p Fx(\))p 3597 827 V 329 927 V 381 897 a(read)p 544 897 25 4 v 29 w(string)p 972 927 4 100 v 600 w(8)p 1821 927 V 454 w Fe($a0)e Fx(=)h(bu\013er,)h Fe($a1)f Fx(=)g(length)p 2909 927 V 3597 927 V 329 1027 V 381 997 a(sbrk)p 972 1027 V 840 w(9)p 1821 1027 V 454 w Fe($a0)f Fx(=)h(amoun)n(t)p 2909 1027 V 562 w(address)g(\(in)h Fe($v0)p Fx(\))p 3597 1027 V 329 1126 V 381 1096 a(exit)p 972 1126 V 840 w(10)p 1821 1126 V 2909 1126 V 3597 1126 V 329 1226 V 381 1196 a(prin)n(t)p 564 1196 25 4 v 30 w(c)n(haracter)p 972 1226 4 100 v 431 w(11)p 1821 1226 V 432 w Fe($a0)e Fx(=)h(in)n(teger)p 2909 1226 V 3597 1226 V 329 1326 V 381 1296 a(read)p 544 1296 25 4 v 29 w(c)n(haracter)p 972 1326 4 100 v 452 w(12)p 1821 1326 V 432 w(c)n(har)f(\(in)i Fe($v0)p Fx(\))p 2909 1326 V 331 1329 3268 4 v 1463 1583 a Fu(T)-8 b(able)30 b(1:)41 b(System)30 b(services.)120 1858 y Fk(.half)47 b(h1,)g(...,)f(hn)302 1971 y Fu(Store)31 b(the)f Fg(n)g Fu(16-bit)h(quan)m(tities)f(in)f (successiv)m(e)h(memory)h(halfw)m(ords.)120 2159 y Fk(.kdata)47 b()302 2271 y Fu(The)40 b(follo)m(wing)e(data)i(items)g(should)e (b)s(e)h(stored)h(in)e(the)i(k)m(ernel)g(data)g(segmen)m(t.)70 b(If)40 b(the)g(optional)302 2384 y(argumen)m(t)31 b Fl(addr)42 b Fu(is)29 b(presen)m(t,)i(the)g(items)e(are)i(stored)g(b)s (eginning)c(at)32 b(address)d Fl(addr)10 b Fu(.)120 2572 y Fk(.ktext)47 b()302 2685 y Fu(The)37 b(next)h(items)f(are)h (put)f(in)f(the)i(k)m(ernel)f(text)i(segmen)m(t.)63 b(In)37 b(SPIM,)h(these)g(items)f(ma)m(y)h(only)f(b)s(e)302 2798 y(instructions)e(or)h(w)m(ords)g(\(see)i(the)e Fk(.word)g Fu(directiv)m(e)g(b)s(elo)m(w\).)58 b(If)36 b(the)h(optional)f(argumen) m(t)h Fl(addr)48 b Fu(is)302 2911 y(presen)m(t,)31 b(the)g(items)e(are) i(stored)g(b)s(eginning)c(at)k(address)f Fl(addr)10 b Fu(.)120 3098 y Fk(.space)47 b(n)302 3211 y Fu(Allo)s(cate)41 b Fg(n)g Fu(b)m(ytes)g(of)h(space)f(in)f(the)h(curren)m(t)g(segmen)m(t) h(\(whic)m(h)e(m)m(ust)h(b)s(e)f(the)h(data)h(segmen)m(t)g(in)302 3324 y(SPIM\).)120 3512 y Fk(.text)47 b()302 3625 y Fu(The)42 b(next)f(items)h(are)g(put)f(in)f(the)i(user)f(text)i (segmen)m(t.)76 b(In)41 b(SPIM,)h(these)g(items)f(ma)m(y)i(only)e(b)s (e)302 3738 y(instructions)35 b(or)h(w)m(ords)g(\(see)i(the)e Fk(.word)g Fu(directiv)m(e)g(b)s(elo)m(w\).)58 b(If)36 b(the)h(optional)f(argumen)m(t)h Fl(addr)48 b Fu(is)302 3851 y(presen)m(t,)31 b(the)g(items)e(are)i(stored)g(b)s(eginning)c(at) k(address)f Fl(addr)10 b Fu(.)120 4038 y Fk(.word)47 b(w1,)g(...,)f(wn)302 4151 y Fu(Store)31 b(the)f Fg(n)g Fu(32-bit)h(quan)m(tities)f(in)f(successiv)m(e)h(memory)h(w)m(ords.)75 4339 y(SPIM)f(do)s(es)g(not)h(distinguish)26 b(v)-5 b(arious)29 b(parts)i(of)f(the)h(data)g(segmen)m(t)g(\()p Fk(.data)p Fu(,)f Fk(.rdata)p Fu(,)f(and)g Fk(.sdata)p Fu(\).)75 4582 y Fm(1.5)112 b(System)37 b(Calls)75 4754 y Fu(SPIM)32 b(pro)m(vides)f(a)i(small)d(set)j(of)f(op)s(erating-system-lik)m(e)g (services)g(through)g(the)g(system)h(call)e(\()p Fk(syscall)p Fu(\))75 4867 y(instruction.)37 b(T)-8 b(o)24 b(request)h(a)f(service,) i(a)f(program)f(loads)g(the)g(system)g(call)g(co)s(de)h(\(see)g(T)-8 b(able)24 b(1\))h(in)m(to)f(register)75 4980 y Fk($v0)j Fu(and)f(the)i(argumen)m(ts)g(in)m(to)f(registers)g Fk($a0)p Fg(:)15 b(:)g(:)q Fk($a3)26 b Fu(\(or)i Fk($f12)e Fu(for)h(\015oating)h (p)s(oin)m(t)e(v)-5 b(alues\).)40 b(System)27 b(calls)75 5093 y(that)d(return)e(v)-5 b(alues)23 b(put)g(their)f(result)h(in)f (register)h Fk($v0)g Fu(\(or)h Fk($f0)e Fu(for)h(\015oating)h(p)s(oin)m (t)e(results\).)38 b(F)-8 b(or)24 b(example,)75 5205 y(to)31 b(prin)m(t)e(\\)p Fk(the)47 b(answer)g(=)g(5)p Fu(",)31 b(use)f(the)g(commands:)1942 5656 y(8)p eop %%Page: 9 9 9 8 bop 457 99 a Fk(.data)170 211 y(str:)95 b(.asciiz)46 b("the)g(answer)g(=)i(")457 324 y(.text)457 437 y(li)f($v0,)g(4)381 b(#)48 b(system)e(call)g(code)h(for)g(print_str)457 550 y(la)g($a0,)g(str)285 b(#)48 b(address)d(of)j(string)e(to)h(print)457 663 y(syscall)475 b(#)48 b(print)e(the)h(string)457 889 y(li)g($v0,)g(1)381 b(#)48 b(system)e(call)g(code)h(for)g(print_int)457 1002 y(li)g($a0,)g(5)381 b(#)48 b(integer)d(to)j(print)457 1115 y(syscall)475 b(#)48 b(print)e(it)216 1302 y(print)p 462 1302 29 4 v 33 w(int)37 b Fu(is)g(passed)h(an)g(in)m(teger)h(and)e (prin)m(ts)g(it)g(on)h(the)g(console.)65 b Fk(print)p 2977 1302 V 33 w(float)36 b Fu(prin)m(ts)h(a)h(single)75 1415 y(\015oating)24 b(p)s(oin)m(t)g(n)m(um)m(b)s(er.)37 b Fk(print)p 1239 1415 V 33 w(double)23 b Fu(prin)m(ts)g(a)i(double)e (precision)g(n)m(um)m(b)s(er.)37 b Fk(print)p 3173 1415 V 33 w(string)23 b Fu(is)g(passed)75 1528 y(a)31 b(p)s(oin)m(ter)e(to)i (a)g(n)m(ull-terminated)d(string,)i(whic)m(h)f(it)h(writes)f(to)i(the)g (console.)216 1641 y Fk(read)p 414 1641 V 33 w(int)p Fu(,)26 b Fk(read)p 834 1641 V 34 w(float)p Fu(,)f(and)g Fk(read)p 1522 1641 V 33 w(double)f Fu(read)i(an)f(en)m(tire)h(line)e (of)i(input)d(up)i(to)h(and)g(including)c(the)75 1754 y(newline.)38 b(Characters)30 b(follo)m(wing)e(the)i(n)m(um)m(b)s(er)e (are)i(ignored.)40 b Fk(read)p 2475 1754 V 33 w(string)28 b Fu(has)h(the)h(same)g(seman)m(tics)g(as)75 1867 y(the)37 b(Unix)f(library)e(routine)i Fk(fgets)p Fu(.)58 b(It)37 b(reads)g(up)e(to)j Fg(n)24 b Fj(\000)g Fu(1)37 b(c)m(haracters)h(in)m (to)f(a)g(bu\013er)f(and)g(terminates)75 1980 y(the)f(string)e(with)h (a)h(n)m(ull)d(b)m(yte.)54 b(If)34 b(there)h(are)g(few)m(er)g(c)m (haracters)h(on)f(the)f(curren)m(t)h(line,)f(it)g(reads)h(through)75 2093 y(the)f(newline)e(and)i(again)g(n)m(ull-terminates)f(the)h (string.)51 b Fi(W)-9 b(arning:)49 b Fu(programs)34 b(that)h(use)e (these)i(syscalls)75 2206 y(to)c(read)f(from)g(the)h(terminal)e(should) f(not)j(use)f(memory-mapp)s(ed)f(IO)h(\(see)h(Section)f(5\).)216 2319 y Fk(sbrk)35 b Fu(returns)h(a)h(p)s(oin)m(ter)e(to)i(a)g(blo)s(c)m (k)f(of)h(memory)f(con)m(taining)g Fg(n)g Fu(additional)e(b)m(ytes.)60 b Fk(exit)35 b Fu(stops)i(a)75 2431 y(program)30 b(from)g(running.)75 2718 y Fs(2)135 b(Description)45 b(of)h(the)f(MIPS)f(R2000)75 2921 y Fu(A)27 b(MIPS)g(pro)s(cessor)f(consists)h(of)g(an)g(in)m(teger) g(pro)s(cessing)f(unit)f(\(the)j(CPU\))f(and)f(a)h(collection)g(of)g (copro)s(ces-)75 3034 y(sors)c(that)g(p)s(erform)f(ancillary)f(tasks)j (or)f(op)s(erate)g(on)g(other)g(t)m(yp)s(es)h(of)f(data)g(suc)m(h)g(as) g(\015oating)g(p)s(oin)m(t)f(n)m(um)m(b)s(ers)75 3147 y(\(see)31 b(Figure)e(2\).)42 b(SPIM)29 b(sim)m(ulates)g(t)m(w)m(o)i (copro)s(cessors.)41 b(Copro)s(cessor)30 b(0)g(handles)e(traps,)i (exceptions,)h(and)75 3260 y(the)h(virtual)e(memory)i(system.)46 b(SPIM)31 b(sim)m(ulates)g(most)h(of)g(the)h(\014rst)e(t)m(w)m(o)i(and) e(en)m(tirely)g(omits)h(details)f(of)75 3372 y(the)i(memory)f(system.) 48 b(Copro)s(cessor)32 b(1)h(is)f(the)h(\015oating)f(p)s(oin)m(t)g (unit.)46 b(SPIM)32 b(sim)m(ulates)g(most)h(asp)s(ects)g(of)75 3485 y(this)c(unit.)75 3729 y Fm(2.1)112 b(CPU)37 b(Registers)75 3900 y Fu(The)28 b(MIPS)g(\(and)g(SPIM\))g(cen)m(tral)h(pro)s(cessing)e (unit)g(con)m(tains)i(32)g(general)g(purp)s(ose)d(32-bit)j(registers)f (that)75 4013 y(are)j(n)m(um)m(b)s(ered)e(0{31.)44 b(Register)30 b Fg(n)g Fu(is)g(designated)g(b)m(y)h Fk($n)p Fu(.)41 b(Register)31 b Fk($0)f Fu(alw)m(a)m(ys)h(con)m(tains)g(the)g (hardwired)75 4126 y(v)-5 b(alue)34 b(0.)52 b(MIPS)34 b(has)g(established)e(a)j(set)f(of)h(con)m(v)m(en)m(tions)g(as)f(to)h (ho)m(w)f(registers)g(should)e(b)s(e)i(used.)51 b(These)75 4239 y(suggestions)36 b(are)g(guidelines,)f(whic)m(h)g(are)h(not)g (enforced)g(b)m(y)g(the)g(hardw)m(are.)56 b(Ho)m(w)m(ev)m(er)38 b(a)f(program)e(that)75 4352 y(violates)23 b(them)g(will)d(not)k(w)m (ork)f(prop)s(erly)e(with)g(other)j(soft)m(w)m(are.)39 b(T)-8 b(able)23 b(2)h(lists)d(the)i(registers)g(and)g(describ)s(es)75 4465 y(their)29 b(in)m(tended)h(use.)216 4578 y(Registers)25 b Fk($at)g Fu(\(1\),)i Fk($k0)d Fu(\(26\),)k(and)d Fk($k1)f Fu(\(27\))j(are)e(reserv)m(ed)g(for)g(use)g(b)m(y)g(the)g(assem)m(bler) g(and)f(op)s(erating)75 4691 y(system.)216 4804 y(Registers)39 b Fk($a0)p Fu({)p Fk($a3)f Fu(\(4{7\))j(are)f(used)e(to)i(pass)e(the)i (\014rst)e(four)g(argumen)m(ts)i(to)g(routines)d(\(remaining)75 4917 y(argumen)m(ts)i(are)h(passed)e(on)h(the)h(stac)m(k\).)68 b(Registers)39 b Fk($v0)f Fu(and)h Fk($v1)f Fu(\(2,)k(3\))e(are)g(used) e(to)i(return)e(v)-5 b(alues)75 5030 y(from)33 b(functions.)49 b(Registers)34 b Fk($t0)p Fu({)p Fk($t9)e Fu(\(8{15,)37 b(24,)f(25\))e(are)g(caller-sa)m(v)m(ed)h(registers)e(used)g(for)g (temp)s(orary)75 5142 y(quan)m(tities)f(that)h(do)g(not)f(need)h(to)g (b)s(e)f(preserv)m(ed)g(across)i(calls.)46 b(Registers)33 b Fk($s0)p Fu({)p Fk($s7)e Fu(\(16{23\))36 b(are)d(callee-)75 5255 y(sa)m(v)m(ed)e(registers)g(that)g(hold)e(long-liv)m(ed)g(v)-5 b(alues)29 b(that)i(should)e(b)s(e)g(preserv)m(ed)i(across)f(calls.) 1942 5656 y(9)p eop %%Page: 10 10 10 9 bop 608 918 2715 4 v 606 1017 4 100 v 658 987 a Ff(Register)30 b(Name)p 1329 1017 V 98 w(Num)m(b)s(er)p 1773 1017 V 1773 1017 V 698 w(Usage)p 3321 1017 V 608 1020 2715 4 v 608 1037 V 606 1137 4 100 v 658 1107 a Fx(zero)p 1329 1137 V 876 w(0)p 1773 1137 V 99 w(Constan)n(t)d(0)p 3321 1137 V 606 1236 V 658 1206 a(at)p 1329 1236 V 951 w(1)p 1773 1236 V 99 w(Reserv)n(ed)f(for)h(assem)n(bler)p 3321 1236 V 606 1336 V 658 1306 a(v0)p 1329 1336 V 939 w(2)p 1773 1336 V 99 w(Expression)f(ev)-5 b(aluation)27 b(and)p 3321 1336 V 606 1436 V 658 1406 a(v1)p 1329 1436 V 939 w(3)p 1773 1436 V 210 w(results)g(of)g(a)g(function)p 3321 1436 V 606 1535 V 658 1505 a(a0)p 1329 1535 V 941 w(4)p 1773 1535 V 99 w(Argumen)n(t)g(1)p 3321 1535 V 606 1635 V 658 1605 a(a1)p 1329 1635 V 941 w(5)p 1773 1635 V 99 w(Argumen)n(t)g(2)p 3321 1635 V 606 1734 V 658 1705 a(a2)p 1329 1734 V 941 w(6)p 1773 1734 V 99 w(Argumen)n(t)g(3)p 3321 1734 V 606 1834 V 658 1804 a(a3)p 1329 1834 V 941 w(7)p 1773 1834 V 99 w(Argumen)n(t)g(4)p 3321 1834 V 606 1934 V 658 1904 a(t0)p 1329 1934 V 951 w(8)p 1773 1934 V 99 w(T)-7 b(emp)r(orary)26 b(\(not)i(preserv)n(ed)e (across)f(call\))p 3321 1934 V 606 2033 V 658 2003 a(t1)p 1329 2033 V 951 w(9)p 1773 2033 V 99 w(T)-7 b(emp)r(orary)26 b(\(not)i(preserv)n(ed)e(across)f(call\))p 3321 2033 V 606 2133 V 658 2103 a(t2)p 1329 2133 V 909 w(10)p 1773 2133 V 99 w(T)-7 b(emp)r(orary)26 b(\(not)i(preserv)n(ed)e(across)f (call\))p 3321 2133 V 606 2233 V 658 2203 a(t3)p 1329 2233 V 909 w(11)p 1773 2233 V 99 w(T)-7 b(emp)r(orary)26 b(\(not)i(preserv)n(ed)e(across)f(call\))p 3321 2233 V 606 2332 V 658 2302 a(t4)p 1329 2332 V 909 w(12)p 1773 2332 V 99 w(T)-7 b(emp)r(orary)26 b(\(not)i(preserv)n(ed)e(across)f (call\))p 3321 2332 V 606 2432 V 658 2402 a(t5)p 1329 2432 V 909 w(13)p 1773 2432 V 99 w(T)-7 b(emp)r(orary)26 b(\(not)i(preserv)n(ed)e(across)f(call\))p 3321 2432 V 606 2531 V 658 2502 a(t6)p 1329 2531 V 909 w(14)p 1773 2531 V 99 w(T)-7 b(emp)r(orary)26 b(\(not)i(preserv)n(ed)e(across)f (call\))p 3321 2531 V 606 2631 V 658 2601 a(t7)p 1329 2631 V 909 w(15)p 1773 2631 V 99 w(T)-7 b(emp)r(orary)26 b(\(not)i(preserv)n(ed)e(across)f(call\))p 3321 2631 V 606 2731 V 658 2701 a(s0)p 1329 2731 V 908 w(16)p 1773 2731 V 99 w(Sa)n(v)n(ed)i(temp)r(orary)f(\(preserv)n(ed)g(across)g (call\))p 3321 2731 V 606 2830 V 658 2800 a(s1)p 1329 2830 V 908 w(17)p 1773 2830 V 99 w(Sa)n(v)n(ed)h(temp)r(orary)f (\(preserv)n(ed)g(across)g(call\))p 3321 2830 V 606 2930 V 658 2900 a(s2)p 1329 2930 V 908 w(18)p 1773 2930 V 99 w(Sa)n(v)n(ed)h(temp)r(orary)f(\(preserv)n(ed)g(across)g(call\))p 3321 2930 V 606 3030 V 658 3000 a(s3)p 1329 3030 V 908 w(19)p 1773 3030 V 99 w(Sa)n(v)n(ed)h(temp)r(orary)f(\(preserv)n(ed)g (across)g(call\))p 3321 3030 V 606 3129 V 658 3099 a(s4)p 1329 3129 V 908 w(20)p 1773 3129 V 99 w(Sa)n(v)n(ed)h(temp)r(orary)f (\(preserv)n(ed)g(across)g(call\))p 3321 3129 V 606 3229 V 658 3199 a(s5)p 1329 3229 V 908 w(21)p 1773 3229 V 99 w(Sa)n(v)n(ed)h(temp)r(orary)f(\(preserv)n(ed)g(across)g(call\))p 3321 3229 V 606 3328 V 658 3299 a(s6)p 1329 3328 V 908 w(22)p 1773 3328 V 99 w(Sa)n(v)n(ed)h(temp)r(orary)f(\(preserv)n(ed)g (across)g(call\))p 3321 3328 V 606 3428 V 658 3398 a(s7)p 1329 3428 V 908 w(23)p 1773 3428 V 99 w(Sa)n(v)n(ed)h(temp)r(orary)f (\(preserv)n(ed)g(across)g(call\))p 3321 3428 V 606 3528 V 658 3498 a(t8)p 1329 3528 V 909 w(24)p 1773 3528 V 99 w(T)-7 b(emp)r(orary)26 b(\(not)i(preserv)n(ed)e(across)f(call\))p 3321 3528 V 606 3627 V 658 3597 a(t9)p 1329 3627 V 909 w(25)p 1773 3627 V 99 w(T)-7 b(emp)r(orary)26 b(\(not)i(preserv)n(ed)e (across)f(call\))p 3321 3627 V 606 3727 V 658 3697 a(k0)p 1329 3727 V 897 w(26)p 1773 3727 V 99 w(Reserv)n(ed)h(for)h(OS)h(k)n (ernel)p 3321 3727 V 606 3827 V 658 3797 a(k1)p 1329 3827 V 897 w(27)p 1773 3827 V 99 w(Reserv)n(ed)e(for)h(OS)h(k)n(ernel)p 3321 3827 V 606 3926 V 658 3896 a(gp)p 1329 3926 V 895 w(28)p 1773 3926 V 99 w(P)n(oin)n(ter)e(to)h(global)g(area)p 3321 3926 V 606 4026 V 658 3996 a(sp)p 1329 4026 V 904 w(29)p 1773 4026 V 99 w(Stac)n(k)g(p)r(oin)n(ter)p 3321 4026 V 606 4125 V 658 4096 a(fp)p 1329 4125 V 912 w(30)p 1773 4125 V 99 w(F)-7 b(rame)27 b(p)r(oin)n(ter)p 3321 4125 V 606 4225 V 658 4195 a(ra)p 1329 4225 V 908 w(31)p 1773 4225 V 99 w(Return)h(address)e(\(used)i(b)n(y)f(function)h(call\)) p 3321 4225 V 608 4228 2715 4 v 690 4483 a Fu(T)-8 b(able)30 b(2:)41 b(MIPS)30 b(registers)g(and)g(the)h(con)m(v)m(en)m(tion)g(go)m (v)m(erning)g(their)f(use.)1920 5656 y(10)p eop %%Page: 11 11 11 10 bop 897 7 a 16861171 18945146 4604723 20326563 29996482 48810065 startTexFig 897 7 a %%BeginDocument: mips.id %!PS-Adobe-2.0 EPSF-1.2 %%DocumentFonts: Helvetica %%Pages: 1 %%BoundingBox: 70 309 456 742 %%EndComments /IdrawDict 51 dict def IdrawDict begin /reencodeISO { dup dup findfont dup length dict begin { 1 index /FID ne { def }{ pop pop } ifelse } forall /Encoding ISOLatin1Encoding def currentdict end definefont } def /ISOLatin1Encoding [ /.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/quoteright /parenleft/parenright/asterisk/plus/comma/minus/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/quoteleft/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/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine /guillemotright/onequarter/onehalf/threequarters/questiondown /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis /yacute/thorn/ydieresis ] def /Helvetica reencodeISO def /arrowHeight 8 def /arrowWidth 4 def /none null def /numGraphicParameters 17 def /stringLimit 65535 def /Begin { save numGraphicParameters dict begin } def /End { end restore } def /SetB { dup type /nulltype eq { pop false /brushRightArrow idef false /brushLeftArrow idef true /brushNone idef } { /brushDashOffset idef /brushDashArray idef 0 ne /brushRightArrow idef 0 ne /brushLeftArrow idef /brushWidth idef false /brushNone idef } ifelse } def /SetCFg { /fgblue idef /fggreen idef /fgred idef } def /SetCBg { /bgblue idef /bggreen idef /bgred idef } def /SetF { /printSize idef /printFont idef } def /SetP { dup type /nulltype eq { pop true /patternNone idef } { dup -1 eq { /patternGrayLevel idef /patternString idef } { /patternGrayLevel idef } ifelse false /patternNone idef } ifelse } def /BSpl { 0 begin storexyn newpath n 1 gt { 0 0 0 0 0 0 1 1 true subspline n 2 gt { 0 0 0 0 1 1 2 2 false subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline } if n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Circ { newpath 0 360 arc patternNone not { ifill } if brushNone not { istroke } if } def /CBSpl { 0 begin dup 2 gt { storexyn newpath n 1 sub dup 0 0 1 1 2 2 true subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline n 2 sub dup n 1 sub dup 0 0 1 1 false subspline patternNone not { ifill } if brushNone not { istroke } if } { Poly } ifelse end } dup 0 4 dict put def /Elli { 0 begin newpath 4 2 roll translate scale 0 0 1 0 360 arc patternNone not { ifill } if brushNone not { istroke } if end } dup 0 1 dict put def /Line { 0 begin 2 storexyn newpath x 0 get y 0 get moveto x 1 get y 1 get lineto brushNone not { istroke } if 0 0 1 1 leftarrow 0 0 1 1 rightarrow end } dup 0 4 dict put def /MLine { 0 begin storexyn newpath n 1 gt { x 0 get y 0 get moveto 1 1 n 1 sub { /i exch def x i get y i get lineto } for patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Poly { 3 1 roll newpath moveto -1 add { lineto } repeat closepath patternNone not { ifill } if brushNone not { istroke } if } def /Rect { 0 begin /t exch def /r exch def /b exch def /l exch def newpath l b moveto l t lineto r t lineto r b lineto closepath patternNone not { ifill } if brushNone not { istroke } if end } dup 0 4 dict put def /Text { ishow } def /idef { dup where { pop pop pop } { exch def } ifelse } def /ifill { 0 begin gsave patternGrayLevel -1 ne { fgred bgred fgred sub patternGrayLevel mul add fggreen bggreen fggreen sub patternGrayLevel mul add fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor eofill } { eoclip originalCTM setmatrix pathbbox /t exch def /r exch def /b exch def /l exch def /w r l sub ceiling cvi def /h t b sub ceiling cvi def /imageByteWidth w 8 div ceiling cvi def /imageHeight h def bgred bggreen bgblue setrgbcolor eofill fgred fggreen fgblue setrgbcolor w 0 gt h 0 gt and { l b translate w h scale w h true [w 0 0 h neg 0 h] { patternproc } imagemask } if } ifelse grestore end } dup 0 8 dict put def /istroke { gsave brushDashOffset -1 eq { [] 0 setdash 1 setgray } { brushDashArray brushDashOffset setdash fgred fggreen fgblue setrgbcolor } ifelse brushWidth setlinewidth originalCTM setmatrix stroke grestore } def /ishow { 0 begin gsave fgred fggreen fgblue setrgbcolor printFont printSize scalefont setfont /descender 0 printFont /FontBBox get 1 get printFont /FontMatrix get transform exch pop def /vertoffset 1 printSize sub descender sub def { 0 vertoffset moveto show /vertoffset vertoffset printSize sub def } forall grestore end } dup 0 2 dict put def /patternproc { 0 begin /patternByteLength patternString length def /patternHeight patternByteLength 8 mul sqrt cvi def /patternWidth patternHeight def /patternByteWidth patternWidth 8 idiv def /imageByteMaxLength imageByteWidth imageHeight mul stringLimit patternByteWidth sub min def /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv patternHeight mul patternHeight max def /imageHeight imageHeight imageMaxHeight sub store /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def 0 1 imageMaxHeight 1 sub { /y exch def /patternRow y patternByteWidth mul patternByteLength mod def /patternRowString patternString patternRow patternByteWidth getinterval def /imageRow y imageByteWidth mul def 0 patternByteWidth imageByteWidth 1 sub { /x exch def imageString imageRow x add patternRowString putinterval } for } for imageString end } dup 0 12 dict put def /min { dup 3 2 roll dup 4 3 roll lt { exch } if pop } def /max { dup 3 2 roll dup 4 3 roll gt { exch } if pop } def /arrowhead { 0 begin transform originalCTM itransform /taily exch def /tailx exch def transform originalCTM itransform /tipy exch def /tipx exch def /dy tipy taily sub def /dx tipx tailx sub def /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def gsave originalCTM setmatrix tipx tipy translate angle rotate newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath patternNone not { originalCTM setmatrix /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul arrowWidth div def /padtail brushWidth 2 div def tipx tipy translate angle rotate padtip 0 translate arrowHeight padtip add padtail add arrowHeight div dup scale arrowheadpath ifill } if brushNone not { originalCTM setmatrix tipx tipy translate angle rotate arrowheadpath istroke } if grestore end } dup 0 9 dict put def /arrowheadpath { newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath } def /leftarrow { 0 begin y exch get /taily exch def x exch get /tailx exch def y exch get /tipy exch def x exch get /tipx exch def brushLeftArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /rightarrow { 0 begin y exch get /tipy exch def x exch get /tipx exch def y exch get /taily exch def x exch get /tailx exch def brushRightArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /midpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 x1 add 2 div y0 y1 add 2 div end } dup 0 4 dict put def /thirdpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 2 mul x1 add 3 div y0 2 mul y1 add 3 div end } dup 0 4 dict put def /subspline { 0 begin /movetoNeeded exch def y exch get /y3 exch def x exch get /x3 exch def y exch get /y2 exch def x exch get /x2 exch def y exch get /y1 exch def x exch get /x1 exch def y exch get /y0 exch def x exch get /x0 exch def x1 y1 x2 y2 thirdpoint /p1y exch def /p1x exch def x2 y2 x1 y1 thirdpoint /p2y exch def /p2x exch def x1 y1 x0 y0 thirdpoint p1x p1y midpoint /p0y exch def /p0x exch def x2 y2 x3 y3 thirdpoint p2x p2y midpoint /p3y exch def /p3x exch def movetoNeeded { p0x p0y moveto } if p1x p1y p2x p2y p3x p3y curveto end } dup 0 17 dict put def /storexyn { /n exch def /y n array def /x n array def n 1 sub -1 0 { /i exch def y i 3 2 roll put x i 3 2 roll put } for } def %%EndProlog %I Idraw 9 Grid 8 %%Page: 1 1 Begin %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.923077 0 0 0.923077 0 0 ] concat /originalCTM matrix currentmatrix def Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 52 232 ] concat %I 155 493 319 562 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 97 131 ] concat %I 222 327 395 542 Rect End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 52 321 ] concat %I 198 257 259 257 Line End Begin %I Rect %I b 65535 1 1 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p < ff 88 88 88 ff 88 88 88 > -1 SetP %I t [ 1 0 0 1 52.5 320 ] concat %I 147 413 311 482 Rect End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 52 321 ] concat %I 224 413 112 361 Line End Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 52 321 ] concat %I 224 413 345 361 Line End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 254 131 ] concat %I 58 335 231 551 Rect End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 237.25 131 ] concat %I 127 482 197 482 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 237.25 131 ] concat %I 127 430 197 430 Line End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 235.75 131 ] concat %I 127 413 197 499 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-normal--12-*-75-* Helvetica 12 SetF %I t [ 1 0 0 1 373.25 648 ] concat %I [ (Registers) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-normal--12-*-75-* Helvetica 12 SetF %I t [ 1 0 0 1 391.25 624.5 ] concat %I [ ($0) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-normal--12-*-75-* Helvetica 12 SetF %I t [ 1 0 0 1 387.75 555.5 ] concat %I [ ($31) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-normal--12-*-75-* Helvetica 12 SetF %I t [ 1 0 0 1 396.25 603 ] concat %I [ (.) (.) (.) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 152.5 0 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 69 312 ] concat %I 147 171 207 206 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-normal--12-*-75-* Helvetica 12 SetF %I t [ 1 0 0 1 217.5 510.5 ] concat %I [ (Arithmetic) (Unit) ] Text End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-normal--12-*-75-* Helvetica 12 SetF %I t [ 1 0 0 1 321 673 ] concat %I [ (FPU \(Coprocessor 1\)) ] Text End Begin %I MLine %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 52 321 ] concat %I 2 345 223 345 197 2 MLine End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 97 131 ] concat %I 76 206 309 301 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 69 320 ] concat %I 95 24 328 119 Rect End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 17 -17 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-normal--12-*-75-* Helvetica 12 SetF %I t [ 1 0 0 1 191 414 ] concat %I [ (BadVAddr) ] Text End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 52 321 ] concat %I 129 76 207 102 Rect End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-normal--12-*-75-* Helvetica 12 SetF %I t [ 1 0 0 1 202 388 ] concat %I [ (Status) ] Text End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 52 321 ] concat %I 129 50 207 76 Rect End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -35 9 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-normal--12-*-75-* Helvetica 12 SetF %I t [ 1 0 0 1 327.5 405.5 ] concat %I [ (Cause) ] Text End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 52 321 ] concat %I 259 68 328 93 Rect End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -35 18 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-normal--12-*-75-* Helvetica 12 SetF %I t [ 1 0 0 1 333 371 ] concat %I [ (EPC) ] Text End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 52 321 ] concat %I 259 33 328 59 Rect End End %I eop End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-normal--12-*-75-* Helvetica 12 SetF %I t [ 1 0 0 1 172 431 ] concat %I [ (Coprocessor 0 \(Traps and Memory\)) ] Text End End %I eop Begin %I Line %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 56.5 321 ] concat %I 224 257 224 119 Line End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 52 232 ] concat %I 34 226 207 441 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 20 131 ] concat %I 58 335 231 551 Rect End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -8 9 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-normal--12-*-75-* Helvetica 12 SetF %I t [ 1 0 0 1 139.25 648 ] concat %I [ (Registers) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 3.25 131 ] concat %I 127 482 197 482 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 3.25 131 ] concat %I 127 430 197 430 Line End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 1.75 131 ] concat %I 127 413 197 499 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-normal--12-*-75-* Helvetica 12 SetF %I t [ 1 0 0 1 156.25 624.5 ] concat %I [ ($0) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-normal--12-*-75-* Helvetica 12 SetF %I t [ 1 0 0 1 152.75 555.5 ] concat %I [ ($31) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-normal--12-*-75-* Helvetica 12 SetF %I t [ 1 0 0 1 162.25 603 ] concat %I [ (.) (.) (.) ] Text End End %I eop End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -130 24.9999 ] concat Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 69 312 ] concat %I 147 171 207 206 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-normal--12-*-75-* Helvetica 12 SetF %I t [ 1 0 0 1 217.5 510.5 ] concat %I [ (Arithmetic) (Unit) ] Text End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-normal--12-*-75-* Helvetica 12 SetF %I t [ 1 0 0 1 87 673 ] concat %I [ (CPU) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 0 24.9999 ] concat Begin %I Rect %I b 65535 1 1 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 52 321 ] concat %I 129 163 190 197 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-normal--12-*-75-* Helvetica 12 SetF %I t [ 1 0 0 1 189 511 ] concat %I [ (Multiply) (Divide) ] Text End End %I eop Begin %I Pict %I b 65535 2 0 0 [] 0 SetB %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -1 -42 ] concat Begin %I Rect %I b 65535 1 1 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 52 321 ] concat %I 164 197 190 214 Rect End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect %I b 65535 1 1 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 52 321 ] concat %I 129 197 155 214 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-normal--12-*-75-* Helvetica 12 SetF %I t [ 1 0 0 1 187 530.5 ] concat %I [ (Lo) ] Text End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-normal--12-*-75-* Helvetica 12 SetF %I t [ 1 0 0 1 223 530.5 ] concat %I [ (Hi) ] Text End End %I eop Begin %I MLine %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 97 131 ] concat %I 4 93 465 119 465 119 413 119 413 4 MLine End Begin %I MLine %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 0 0 0.5 113 347 ] concat %I 2 206 324 206 308 2 MLine End Begin %I MLine %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 0 0 0.5 113 347 ] concat %I 2 154 308 222 308 2 MLine End Begin %I MLine %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 0 0 0.5 113 347 ] concat %I 2 154 308 154 290 2 MLine End Begin %I MLine %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 0 0 0.5 113 347 ] concat %I 2 222 308 222 290 2 MLine End Begin %I MLine %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 0.5 0 0 0.5 55 347 ] concat %I 3 98 394 98 498 132 498 3 MLine End End %I eop Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 1 SetP %I t [ 1 0 0 1 120 265 ] concat %I 86 513 140 531 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-normal--12-*-75-* Helvetica 12 SetF %I t [ 1 0 0 1 211 791 ] concat %I [ (Memory) ] Text End End %I eop showpage %%Trailer end %%EndDocument endTexFig 1201 2603 a Fu(Figure)30 b(2:)41 b(MIPS)30 b(R2000)i(CPU)e(and)g(FPU) 216 2874 y(Register)f Fk($sp)e Fu(\(29\))j(is)d(the)i(stac)m(k)h(p)s (oin)m(ter,)e(whic)m(h)f(p)s(oin)m(ts)g(to)i(the)g(last)f(lo)s(cation)g (in)f(use)h(on)g(the)h(stac)m(k.)3814 2841 y Fr(3)75 2986 y Fu(Register)f Fk($fp)f Fu(\(30\))i(is)e(the)h(frame)g(p)s(oin)m (ter.)1593 2953 y Fr(4)1672 2986 y Fu(Register)g Fk($ra)f Fu(\(31\))i(is)e(written)g(with)f(the)i(return)f(address)g(for)75 3099 y(a)k(call)e(b)m(y)i(the)f Fk(jal)g Fu(instruction.)216 3212 y(Register)i Fk($gp)f Fu(\(28\))j(is)c(a)j(global)e(p)s(oin)m(ter) g(that)h(p)s(oin)m(ts)f(in)m(to)h(the)g(middle)d(of)j(a)g(64K)h(blo)s (c)m(k)e(of)h(memory)75 3325 y(in)f(the)h(heap)h(that)f(holds)f (constan)m(ts)j(and)d(global)h(v)-5 b(ariables.)45 b(The)32 b(ob)5 b(jects)33 b(in)e(this)g(heap)h(can)h(b)s(e)e(quic)m(kly)75 3438 y(accessed)h(with)d(a)h(single)f(load)h(or)h(store)g(instruction.) 216 3551 y(In)25 b(addition,)g(copro)s(cessor)h(0)g(con)m(tains)f (registers)g(that)h(are)g(useful)e(to)i(handle)e(exceptions.)39 b(SPIM)25 b(do)s(es)75 3664 y(not)k(implemen)m(t)e(all)g(of)h(these)h (registers,)g(since)f(they)g(are)h(not)f(of)h(m)m(uc)m(h)f(use)g(in)f (a)i(sim)m(ulator)e(or)i(are)g(part)f(of)75 3777 y(the)j(memory)f (system,)h(whic)m(h)e(is)g(not)i(implemen)m(ted.)39 b(Ho)m(w)m(ev)m (er,)33 b(it)d(do)s(es)g(pro)m(vide)f(the)i(follo)m(wing:)p 361 3875 3209 4 v 359 3975 4 100 v 411 3945 a Ff(Register)f(Name)p 1082 3975 V 98 w(Num)m(b)s(er)p 1526 3975 V 1526 3975 V 945 w(Usage)p 3568 3975 V 361 3978 3209 4 v 361 3995 V 359 4094 4 100 v 411 4064 a Fx(BadV)-9 b(Addr)p 1082 4094 V 487 w(8)p 1526 4094 V 250 w(Memory)27 b(address)f(at)i(whic)n(h) f(address)f(exception)i(o)r(ccurred)p 3568 4094 V 359 4194 V 411 4164 a(Status)p 1082 4194 V 622 w(12)p 1526 4194 V 229 w(In)n(terrupt)f(mask)g(and)h(enable)f(bits)p 3568 4194 V 359 4294 V 411 4264 a(Cause)p 1082 4294 V 635 w(13)p 1526 4294 V 229 w(Exception)g(t)n(yp)r(e)h(and)f(p)r(ending) h(in)n(terrupt)f(bits)p 3568 4294 V 359 4393 V 411 4363 a(EPC)p 1082 4393 V 679 w(14)p 1526 4393 V 229 w(Address)g(of)h (instruction)f(that)h(caused)f(exception)p 3568 4393 V 361 4397 3209 4 v 75 4537 a Fu(These)f(registers)g(are)h(part)f(of)h (copro)s(cessor)f(0's)h(register)g(set)f(and)g(are)h(accessed)h(b)m(y)e (the)g Fk(lwc0)p Fu(,)h Fk(mfc0)p Fu(,)f Fk(mtc0)p Fu(,)75 4650 y(and)k Fk(swc0)f Fu(instructions.)216 4763 y(Figure)44 b(3)h(describ)s(es)e(the)h(bits)g(in)f(the)i Fk(Status)d Fu(register)j(that)g(are)g(implemen)m(ted)e(b)m(y)h(SPIM.)g(The)75 4876 y Fk(interrupt)h(mask)28 b Fu(con)m(tains)h(a)h(bit)e(for)g(eac)m (h)i(of)g(the)f(\014v)m(e)g(in)m(terrupt)e(lev)m(els.)40 b(If)29 b(a)g(bit)f(is)g(one,)i(in)m(terrupts)d(at)75 4989 y(that)h(lev)m(el)f(are)h(allo)m(w)m(ed.)39 b(If)27 b(the)h(bit)e(is)h(zero,)i(in)m(terrupts)d(at)i(that)g(lev)m(el)f(are)h (disabled.)37 b(The)27 b(lo)m(w)g(six)f(bits)h(of)p 75 5048 1512 4 v 179 5101 a Fo(3)213 5133 y Fp(In)g(earlier)h(v)n(ersion)f (of)h(SPIM,)f Fd($sp)h Fp(w)n(as)g(do)r(cumen)n(ted)d(as)j(p)r(oin)n (ting)f(at)g(the)g(\014rst)g(free)h(w)n(ord)f(on)g(the)g(stac)n(k)g (\(not)f(the)h(last)75 5225 y(w)n(ord)g(of)h(the)f(stac)n(k)g(frame\).) 38 b(Recen)n(t)27 b(MIPS)g(do)r(cumen)n(ts)e(ha)n(v)n(e)i(made)f(it)h (clear)h(that)f(this)g(w)n(as)h(an)f(error.)39 b(Both)27 b(con)n(v)n(en)n(tions)75 5316 y(w)n(ork)f(equally)f(w)n(ell,)j(but)c (w)n(e)i(c)n(ho)r(ose)h(to)f(follo)n(w)i(the)d(real)i(system.)179 5375 y Fo(4)213 5407 y Fp(The)f(MIPS)g(compiler)f(do)r(es)i(not)e(use)h (a)g(frame)g(p)r(oin)n(ter,)g(so)g(this)g(register)g(is)h(used)e(as)h (callee-sa)n(v)n(ed)h(register)g Fd($s8)p Fp(.)1920 5656 y Fu(11)p eop %%Page: 12 12 12 11 bop -85 7 a 32364626 7499120 2762833 33088225 35127459 40587345 startTexFig -85 7 a %%BeginDocument: status_reg.id %!PS-Adobe-2.0 EPSF-1.2 %%Creator: idraw %%DocumentFonts: Helvetica-Bold %%Pages: 1 %%BoundingBox: 42 503 534 617 %%EndComments /arrowHeight 10 def /arrowWidth 5 def /IdrawDict 51 dict def IdrawDict begin /reencodeISO { dup dup findfont dup length dict begin { 1 index /FID ne { def }{ pop pop } ifelse } forall /Encoding ISOLatin1Encoding def currentdict end definefont } def /ISOLatin1Encoding [ /.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/quoteright /parenleft/parenright/asterisk/plus/comma/minus/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/quoteleft/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/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine /guillemotright/onequarter/onehalf/threequarters/questiondown /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis /yacute/thorn/ydieresis ] def /Helvetica-Bold reencodeISO def /none null def /numGraphicParameters 17 def /stringLimit 65535 def /Begin { save numGraphicParameters dict begin } def /End { end restore } def /SetB { dup type /nulltype eq { pop false /brushRightArrow idef false /brushLeftArrow idef true /brushNone idef } { /brushDashOffset idef /brushDashArray idef 0 ne /brushRightArrow idef 0 ne /brushLeftArrow idef /brushWidth idef false /brushNone idef } ifelse } def /SetCFg { /fgblue idef /fggreen idef /fgred idef } def /SetCBg { /bgblue idef /bggreen idef /bgred idef } def /SetF { /printSize idef /printFont idef } def /SetP { dup type /nulltype eq { pop true /patternNone idef } { dup -1 eq { /patternGrayLevel idef /patternString idef } { /patternGrayLevel idef } ifelse false /patternNone idef } ifelse } def /BSpl { 0 begin storexyn newpath n 1 gt { 0 0 0 0 0 0 1 1 true subspline n 2 gt { 0 0 0 0 1 1 2 2 false subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline } if n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Circ { newpath 0 360 arc patternNone not { ifill } if brushNone not { istroke } if } def /CBSpl { 0 begin dup 2 gt { storexyn newpath n 1 sub dup 0 0 1 1 2 2 true subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline n 2 sub dup n 1 sub dup 0 0 1 1 false subspline patternNone not { ifill } if brushNone not { istroke } if } { Poly } ifelse end } dup 0 4 dict put def /Elli { 0 begin newpath 4 2 roll translate scale 0 0 1 0 360 arc patternNone not { ifill } if brushNone not { istroke } if end } dup 0 1 dict put def /Line { 0 begin 2 storexyn newpath x 0 get y 0 get moveto x 1 get y 1 get lineto brushNone not { istroke } if 0 0 1 1 leftarrow 0 0 1 1 rightarrow end } dup 0 4 dict put def /MLine { 0 begin storexyn newpath n 1 gt { x 0 get y 0 get moveto 1 1 n 1 sub { /i exch def x i get y i get lineto } for patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Poly { 3 1 roll newpath moveto -1 add { lineto } repeat closepath patternNone not { ifill } if brushNone not { istroke } if } def /Rect { 0 begin /t exch def /r exch def /b exch def /l exch def newpath l b moveto l t lineto r t lineto r b lineto closepath patternNone not { ifill } if brushNone not { istroke } if end } dup 0 4 dict put def /Text { ishow } def /idef { dup where { pop pop pop } { exch def } ifelse } def /ifill { 0 begin gsave patternGrayLevel -1 ne { fgred bgred fgred sub patternGrayLevel mul add fggreen bggreen fggreen sub patternGrayLevel mul add fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor eofill } { eoclip originalCTM setmatrix pathbbox /t exch def /r exch def /b exch def /l exch def /w r l sub ceiling cvi def /h t b sub ceiling cvi def /imageByteWidth w 8 div ceiling cvi def /imageHeight h def bgred bggreen bgblue setrgbcolor eofill fgred fggreen fgblue setrgbcolor w 0 gt h 0 gt and { l b translate w h scale w h true [w 0 0 h neg 0 h] { patternproc } imagemask } if } ifelse grestore end } dup 0 8 dict put def /istroke { gsave brushDashOffset -1 eq { [] 0 setdash 1 setgray } { brushDashArray brushDashOffset setdash fgred fggreen fgblue setrgbcolor } ifelse brushWidth setlinewidth originalCTM setmatrix stroke grestore } def /ishow { 0 begin gsave fgred fggreen fgblue setrgbcolor /fontDict printFont printSize scalefont dup setfont def /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end transform exch pop def /vertoffset 1 printSize sub descender sub def { 0 vertoffset moveto show /vertoffset vertoffset printSize sub def } forall grestore end } dup 0 3 dict put def /patternproc { 0 begin /patternByteLength patternString length def /patternHeight patternByteLength 8 mul sqrt cvi def /patternWidth patternHeight def /patternByteWidth patternWidth 8 idiv def /imageByteMaxLength imageByteWidth imageHeight mul stringLimit patternByteWidth sub min def /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv patternHeight mul patternHeight max def /imageHeight imageHeight imageMaxHeight sub store /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def 0 1 imageMaxHeight 1 sub { /y exch def /patternRow y patternByteWidth mul patternByteLength mod def /patternRowString patternString patternRow patternByteWidth getinterval def /imageRow y imageByteWidth mul def 0 patternByteWidth imageByteWidth 1 sub { /x exch def imageString imageRow x add patternRowString putinterval } for } for imageString end } dup 0 12 dict put def /min { dup 3 2 roll dup 4 3 roll lt { exch } if pop } def /max { dup 3 2 roll dup 4 3 roll gt { exch } if pop } def /midpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 x1 add 2 div y0 y1 add 2 div end } dup 0 4 dict put def /thirdpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 2 mul x1 add 3 div y0 2 mul y1 add 3 div end } dup 0 4 dict put def /subspline { 0 begin /movetoNeeded exch def y exch get /y3 exch def x exch get /x3 exch def y exch get /y2 exch def x exch get /x2 exch def y exch get /y1 exch def x exch get /x1 exch def y exch get /y0 exch def x exch get /x0 exch def x1 y1 x2 y2 thirdpoint /p1y exch def /p1x exch def x2 y2 x1 y1 thirdpoint /p2y exch def /p2x exch def x1 y1 x0 y0 thirdpoint p1x p1y midpoint /p0y exch def /p0x exch def x2 y2 x3 y3 thirdpoint p2x p2y midpoint /p3y exch def /p3x exch def movetoNeeded { p0x p0y moveto } if p1x p1y p2x p2y p3x p3y curveto end } dup 0 17 dict put def /storexyn { /n exch def /y n array def /x n array def n 1 sub -1 0 { /i exch def y i 3 2 roll put x i 3 2 roll put } for } def /SSten { fgred fggreen fgblue setrgbcolor dup true exch 1 0 0 -1 0 6 -1 roll matrix astore } def /FSten { dup 3 -1 roll dup 4 1 roll exch newpath 0 0 moveto dup 0 exch lineto exch dup 3 1 roll exch lineto 0 lineto closepath bgred bggreen bgblue setrgbcolor eofill SSten } def /Rast { exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore } def %%EndProlog %%BeginIdrawPrologue /arrowhead { 0 begin transform originalCTM itransform /taily exch def /tailx exch def transform originalCTM itransform /tipy exch def /tipx exch def /dy tipy taily sub def /dx tipx tailx sub def /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def gsave originalCTM setmatrix tipx tipy translate angle rotate newpath arrowHeight neg arrowWidth 2 div moveto 0 0 lineto arrowHeight neg arrowWidth 2 div neg lineto patternNone not { originalCTM setmatrix /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul arrowWidth div def /padtail brushWidth 2 div def tipx tipy translate angle rotate padtip 0 translate arrowHeight padtip add padtail add arrowHeight div dup scale arrowheadpath ifill } if brushNone not { originalCTM setmatrix tipx tipy translate angle rotate arrowheadpath istroke } if grestore end } dup 0 9 dict put def /arrowheadpath { newpath arrowHeight neg arrowWidth 2 div moveto 0 0 lineto arrowHeight neg arrowWidth 2 div neg lineto } def /leftarrow { 0 begin y exch get /taily exch def x exch get /tailx exch def y exch get /tipy exch def x exch get /tipx exch def brushLeftArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /rightarrow { 0 begin y exch get /tipy exch def x exch get /tipx exch def y exch get /taily exch def x exch get /tailx exch def brushRightArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def %%EndIdrawPrologue %I Idraw 10 Grid 8 8 %%Page: 1 1 Begin %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.77233 0 0 0.77233 0 0 ] concat /originalCTM matrix currentmatrix def Begin %I Rect %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 30 112 ] concat %I 26 616 650 656 Rect End Begin %I Line %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 30 112 ] concat %I 618 656 618 616 Line %I 1 End Begin %I Line %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -10 112 ] concat %I 618 656 618 616 Line %I 1 End Begin %I Line %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -50 112 ] concat %I 618 656 618 616 Line %I 1 End Begin %I Line %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -90 112 ] concat %I 618 656 618 616 Line %I 1 End Begin %I Line %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -130 112 ] concat %I 618 656 618 616 Line %I 1 End Begin %I Rect %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.5 SetP %I t [ 1 0 0 1 30 112 ] concat %I 26 616 274 656 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 304 795 ] concat %I [ (15) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 368 795 ] concat %I [ (10) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 656 795 ] concat %I [ (0) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 616 795 ] concat %I [ (1) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 584 795 ] concat %I [ (2) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 545 795 ] concat %I [ (3) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 505 795 ] concat %I [ (4) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 465 795 ] concat %I [ (5) ] Text End Begin %I Rect %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.5 SetP %I t [ 1 0 0 1 22 168 ] concat %I 354 560 426 600 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 312 707 ] concat %I [ (Interrupt) (Mask) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 478.5 715 ] concat %I [ (Old) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 542.5 715 ] concat %I [ (Previous) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 626.5 715 ] concat %I [ (Current) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -0.487396 0 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--10-*-75-* Helvetica-Bold 10 SetF %I t [ 0.707107 0.707107 -0.707107 0.707107 447.469 666.282 ] concat %I [ (Kernel/) (User) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--10-*-75-* Helvetica-Bold 10 SetF %I t [ 0.707107 0.707107 -0.707107 0.707107 488.494 666.282 ] concat %I [ (Interrupt) (Enable) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 79.5124 -0.000488281 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--10-*-75-* Helvetica-Bold 10 SetF %I t [ 0.707107 0.707107 -0.707107 0.707107 447.469 666.283 ] concat %I [ (Kernel/) (User) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--10-*-75-* Helvetica-Bold 10 SetF %I t [ 0.707107 0.707107 -0.707107 0.707107 488.494 666.283 ] concat %I [ (Interrupt) (Enable) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 159.512 -0.000488281 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--10-*-75-* Helvetica-Bold 10 SetF %I t [ 0.707107 0.707107 -0.707107 0.707107 447.469 666.283 ] concat %I [ (Kernel/) (User) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--10-*-75-* Helvetica-Bold 10 SetF %I t [ 0.707107 0.707107 -0.707107 0.707107 488.494 666.283 ] concat %I [ (Interrupt) (Enable) ] Text End End %I eop Begin %I Line %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.5 SetP %I t [ 1 0 0 1 30 168 ] concat %I 426 544 442 544 Line %I 1 End Begin %I Line %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.5 SetP %I t [ 1 0 0 1 78 168 ] concat %I 426 544 442 544 Line %I 1 End Begin %I Line %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.5 SetP %I t [ 1 0 0 1 30 168 ] concat %I 506 544 514 544 Line %I 1 End Begin %I Line %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.5 SetP %I t [ 1 0 0 1 86 168 ] concat %I 506 544 514 544 Line %I 1 End Begin %I Line %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.5 SetP %I t [ 1 0 0 1 30 168 ] concat %I 586 544 594 544 Line %I 1 End Begin %I Line %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.5 SetP %I t [ 1 0 0 1 86 168 ] concat %I 586 544 594 544 Line %I 1 End End %I eop showpage %%Trailer end %%EndDocument endTexFig 1355 1153 a Fu(Figure)30 b(3:)41 b(The)29 b Fk(Status)g Fu(register.)-52 1270 y 31838372 5920358 2762833 34666987 34601205 40587345 startTexFig -52 1270 a %%BeginDocument: cause_reg.id %!PS-Adobe-2.0 EPSF-1.2 %%Creator: idraw %%DocumentFonts: Helvetica-Bold %%Pages: 1 %%BoundingBox: 42 527 526 617 %%EndComments /arrowHeight 10 def /arrowWidth 5 def /IdrawDict 51 dict def IdrawDict begin /reencodeISO { dup dup findfont dup length dict begin { 1 index /FID ne { def }{ pop pop } ifelse } forall /Encoding ISOLatin1Encoding def currentdict end definefont } def /ISOLatin1Encoding [ /.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/quoteright /parenleft/parenright/asterisk/plus/comma/minus/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/quoteleft/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/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine /guillemotright/onequarter/onehalf/threequarters/questiondown /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis /yacute/thorn/ydieresis ] def /Helvetica-Bold reencodeISO def /none null def /numGraphicParameters 17 def /stringLimit 65535 def /Begin { save numGraphicParameters dict begin } def /End { end restore } def /SetB { dup type /nulltype eq { pop false /brushRightArrow idef false /brushLeftArrow idef true /brushNone idef } { /brushDashOffset idef /brushDashArray idef 0 ne /brushRightArrow idef 0 ne /brushLeftArrow idef /brushWidth idef false /brushNone idef } ifelse } def /SetCFg { /fgblue idef /fggreen idef /fgred idef } def /SetCBg { /bgblue idef /bggreen idef /bgred idef } def /SetF { /printSize idef /printFont idef } def /SetP { dup type /nulltype eq { pop true /patternNone idef } { dup -1 eq { /patternGrayLevel idef /patternString idef } { /patternGrayLevel idef } ifelse false /patternNone idef } ifelse } def /BSpl { 0 begin storexyn newpath n 1 gt { 0 0 0 0 0 0 1 1 true subspline n 2 gt { 0 0 0 0 1 1 2 2 false subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline } if n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Circ { newpath 0 360 arc patternNone not { ifill } if brushNone not { istroke } if } def /CBSpl { 0 begin dup 2 gt { storexyn newpath n 1 sub dup 0 0 1 1 2 2 true subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline n 2 sub dup n 1 sub dup 0 0 1 1 false subspline patternNone not { ifill } if brushNone not { istroke } if } { Poly } ifelse end } dup 0 4 dict put def /Elli { 0 begin newpath 4 2 roll translate scale 0 0 1 0 360 arc patternNone not { ifill } if brushNone not { istroke } if end } dup 0 1 dict put def /Line { 0 begin 2 storexyn newpath x 0 get y 0 get moveto x 1 get y 1 get lineto brushNone not { istroke } if 0 0 1 1 leftarrow 0 0 1 1 rightarrow end } dup 0 4 dict put def /MLine { 0 begin storexyn newpath n 1 gt { x 0 get y 0 get moveto 1 1 n 1 sub { /i exch def x i get y i get lineto } for patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Poly { 3 1 roll newpath moveto -1 add { lineto } repeat closepath patternNone not { ifill } if brushNone not { istroke } if } def /Rect { 0 begin /t exch def /r exch def /b exch def /l exch def newpath l b moveto l t lineto r t lineto r b lineto closepath patternNone not { ifill } if brushNone not { istroke } if end } dup 0 4 dict put def /Text { ishow } def /idef { dup where { pop pop pop } { exch def } ifelse } def /ifill { 0 begin gsave patternGrayLevel -1 ne { fgred bgred fgred sub patternGrayLevel mul add fggreen bggreen fggreen sub patternGrayLevel mul add fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor eofill } { eoclip originalCTM setmatrix pathbbox /t exch def /r exch def /b exch def /l exch def /w r l sub ceiling cvi def /h t b sub ceiling cvi def /imageByteWidth w 8 div ceiling cvi def /imageHeight h def bgred bggreen bgblue setrgbcolor eofill fgred fggreen fgblue setrgbcolor w 0 gt h 0 gt and { l b translate w h scale w h true [w 0 0 h neg 0 h] { patternproc } imagemask } if } ifelse grestore end } dup 0 8 dict put def /istroke { gsave brushDashOffset -1 eq { [] 0 setdash 1 setgray } { brushDashArray brushDashOffset setdash fgred fggreen fgblue setrgbcolor } ifelse brushWidth setlinewidth originalCTM setmatrix stroke grestore } def /ishow { 0 begin gsave fgred fggreen fgblue setrgbcolor /fontDict printFont printSize scalefont dup setfont def /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end transform exch pop def /vertoffset 1 printSize sub descender sub def { 0 vertoffset moveto show /vertoffset vertoffset printSize sub def } forall grestore end } dup 0 3 dict put def /patternproc { 0 begin /patternByteLength patternString length def /patternHeight patternByteLength 8 mul sqrt cvi def /patternWidth patternHeight def /patternByteWidth patternWidth 8 idiv def /imageByteMaxLength imageByteWidth imageHeight mul stringLimit patternByteWidth sub min def /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv patternHeight mul patternHeight max def /imageHeight imageHeight imageMaxHeight sub store /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def 0 1 imageMaxHeight 1 sub { /y exch def /patternRow y patternByteWidth mul patternByteLength mod def /patternRowString patternString patternRow patternByteWidth getinterval def /imageRow y imageByteWidth mul def 0 patternByteWidth imageByteWidth 1 sub { /x exch def imageString imageRow x add patternRowString putinterval } for } for imageString end } dup 0 12 dict put def /min { dup 3 2 roll dup 4 3 roll lt { exch } if pop } def /max { dup 3 2 roll dup 4 3 roll gt { exch } if pop } def /midpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 x1 add 2 div y0 y1 add 2 div end } dup 0 4 dict put def /thirdpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 2 mul x1 add 3 div y0 2 mul y1 add 3 div end } dup 0 4 dict put def /subspline { 0 begin /movetoNeeded exch def y exch get /y3 exch def x exch get /x3 exch def y exch get /y2 exch def x exch get /x2 exch def y exch get /y1 exch def x exch get /x1 exch def y exch get /y0 exch def x exch get /x0 exch def x1 y1 x2 y2 thirdpoint /p1y exch def /p1x exch def x2 y2 x1 y1 thirdpoint /p2y exch def /p2x exch def x1 y1 x0 y0 thirdpoint p1x p1y midpoint /p0y exch def /p0x exch def x2 y2 x3 y3 thirdpoint p2x p2y midpoint /p3y exch def /p3x exch def movetoNeeded { p0x p0y moveto } if p1x p1y p2x p2y p3x p3y curveto end } dup 0 17 dict put def /storexyn { /n exch def /y n array def /x n array def n 1 sub -1 0 { /i exch def y i 3 2 roll put x i 3 2 roll put } for } def /SSten { fgred fggreen fgblue setrgbcolor dup true exch 1 0 0 -1 0 6 -1 roll matrix astore } def /FSten { dup 3 -1 roll dup 4 1 roll exch newpath 0 0 moveto dup 0 exch lineto exch dup 3 1 roll exch lineto 0 lineto closepath bgred bggreen bgblue setrgbcolor eofill SSten } def /Rast { exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore } def %%EndProlog %%BeginIdrawPrologue /arrowhead { 0 begin transform originalCTM itransform /taily exch def /tailx exch def transform originalCTM itransform /tipy exch def /tipx exch def /dy tipy taily sub def /dx tipx tailx sub def /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def gsave originalCTM setmatrix tipx tipy translate angle rotate newpath arrowHeight neg arrowWidth 2 div moveto 0 0 lineto arrowHeight neg arrowWidth 2 div neg lineto patternNone not { originalCTM setmatrix /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul arrowWidth div def /padtail brushWidth 2 div def tipx tipy translate angle rotate padtip 0 translate arrowHeight padtip add padtail add arrowHeight div dup scale arrowheadpath ifill } if brushNone not { originalCTM setmatrix tipx tipy translate angle rotate arrowheadpath istroke } if grestore end } dup 0 9 dict put def /arrowheadpath { newpath arrowHeight neg arrowWidth 2 div moveto 0 0 lineto arrowHeight neg arrowWidth 2 div neg lineto } def /leftarrow { 0 begin y exch get /taily exch def x exch get /tailx exch def y exch get /tipy exch def x exch get /tipx exch def brushLeftArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /rightarrow { 0 begin y exch get /tipy exch def x exch get /tipx exch def y exch get /taily exch def x exch get /tailx exch def brushRightArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def %%EndIdrawPrologue %I Idraw 10 Grid 8 8 %%Page: 1 1 Begin %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.77233 0 0 0.77233 0 0 ] concat /originalCTM matrix currentmatrix def Begin %I Rect %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 30 112 ] concat %I 26 616 650 656 Rect End Begin %I Rect %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.5 SetP %I t [ 1 0 0 1 30 168 ] concat %I 610 560 650 600 Rect End Begin %I Rect %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.5 SetP %I t [ 1.21774 0 0 0.97619 -64.4976 181.333 ] concat %I 434 560 506 600 Rect End Begin %I Rect %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.5 SetP %I t [ 1 0 0 1 30 168 ] concat %I 26 560 346 600 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 624 795 ] concat %I [ (2) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 544 795 ] concat %I [ (5) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 456 795 ] concat %I [ (10) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 376 795 ] concat %I [ (15) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 391 707 ] concat %I [ (Pending) (Interrupts) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 567.5 707 ] concat %I [ (Exception) (Code) ] Text End End %I eop showpage %%Trailer end %%EndDocument endTexFig 1379 2216 a Fu(Figure)g(4:)41 b(The)30 b Fk(Cause)f Fu(register.)75 2491 y(the)h Fk(Status)e Fu(register)i(implemen)m(t)f (a)h(three-lev)m(el)h(stac)m(k)g(for)f(the)g Fk(kernel/user)d Fu(and)i Fk(interrupt)46 b(enable)75 2604 y Fu(bits.)59 b(The)37 b Fk(kernel/user)d Fu(bit)i(is)g(0)h(if)f(the)h(program)g(w)m (as)g(running)d(in)i(the)h(k)m(ernel)f(when)g(the)h(in)m(terrupt)75 2717 y(o)s(ccurred)27 b(and)h(1)g(if)f(it)g(w)m(as)h(in)f(user)g(mo)s (de.)40 b(If)27 b(the)h Fk(interrupt)45 b(enable)26 b Fu(bit)h(is)g(1,)i(in)m(terrupts)e(are)h(allo)m(w)m(ed.)75 2830 y(If)34 b(it)g(is)g(0,)i(they)f(are)g(disabled.)51 b(A)m(t)35 b(an)g(in)m(terrupt,)f(these)h(six)f(bits)f(are)i(shifted)e (left)i(b)m(y)f(t)m(w)m(o)i(bits,)f(so)g(the)75 2943 y(curren)m(t)f(bits)g(b)s(ecome)h(the)g(previous)e(bits)h(and)g(the)h (previous)e(bits)h(b)s(ecome)h(the)g(old)e(bits.)53 b(The)34 b(curren)m(t)75 3056 y(bits)29 b(are)i(b)s(oth)f(set)h(to)g(0)f (\(i.e.,)i(k)m(ernel)d(mo)s(de)h(with)f(in)m(terrupts)g(disabled\).)216 3169 y(Figure)j(4)g(describ)s(es)f(the)h(bits)f(in)g(the)i Fk(Cause)d Fu(registers.)46 b(The)32 b(\014v)m(e)h Fk(pending)45 b(interrupt)30 b Fu(bits)h(corre-)75 3282 y(sp)s(ond)g(to)i(the)f (\014v)m(e)h(in)m(terrupt)e(lev)m(els.)46 b(A)33 b(bit)e(b)s(ecomes)i (1)g(when)e(an)h(in)m(terrupt)f(at)j(its)d(lev)m(el)h(has)h(o)s (ccurred)75 3395 y(but)k(has)h(not)h(b)s(een)e(serviced.)63 b(The)38 b Fk(exception)45 b(code)37 b Fu(register)h(con)m(tains)h(a)f (co)s(de)g(from)g(the)g(follo)m(wing)75 3508 y(table)30 b(describing)e(the)j(cause)g(of)f(an)h(exception.)p 537 3612 2857 4 v 535 3711 4 100 v 586 3681 a Ff(Num)m(b)s(er)p 978 3711 V 99 w(Name)p 1458 3711 V 234 w(Description)p 3392 3711 V 537 3715 2857 4 v 537 3731 V 535 3831 4 100 v 586 3801 a Fx(0)p 978 3831 V 402 w(INT)p 1458 3831 V 328 w(External)26 b(in)n(terrupt)p 3392 3831 V 535 3930 V 586 3901 a(4)p 978 3930 V 402 w(ADDRL)p 1458 3930 V 179 w(Address)h(error)e(exception)j(\(load)f(or)g(instruction)g(fetc) n(h\))p 3392 3930 V 535 4030 V 586 4000 a(5)p 978 4030 V 402 w(ADDRS)p 1458 4030 V 185 w(Address)g(error)e(exception)j (\(store\))p 3392 4030 V 535 4130 V 586 4100 a(6)p 978 4130 V 402 w(IBUS)p 1458 4130 V 283 w(Bus)f(error)f(on)h(instruction)g (fetc)n(h)p 3392 4130 V 535 4229 V 586 4199 a(7)p 978 4229 V 402 w(DBUS)p 1458 4229 V 250 w(Bus)g(error)f(on)h(data)g(load)g (or)g(store)p 3392 4229 V 535 4329 V 586 4299 a(8)p 978 4329 V 402 w(SYSCALL)p 1458 4329 V 100 w(Syscall)g(exception)p 3392 4329 V 535 4429 V 586 4399 a(9)p 978 4429 V 402 w(BKPT)p 1458 4429 V 239 w(Breakp)r(oin)n(t)f(exception)p 3392 4429 V 535 4528 V 586 4498 a(10)p 978 4528 V 360 w(RI)p 1458 4528 V 389 w(Reserv)n(ed)g(instruction)h(exception)p 3392 4528 V 535 4628 V 586 4598 a(12)p 978 4628 V 360 w(O)n(VF)p 1458 4628 V 301 w(Arithmetic)h(o)n(v)n(er\015o)n(w)d (exception)p 3392 4628 V 537 4631 2857 4 v 75 4836 a Fm(2.2)112 b(Byte)37 b(Order)75 5007 y Fu(Pro)s(cessors)27 b(can)h(n)m(um)m(b)s(er)f(the)h(b)m(ytes)g(within)d(a)j(w)m(ord)f(to)i (mak)m(e)f(the)g(b)m(yte)g(with)f(the)h(lo)m(w)m(est)g(n)m(um)m(b)s(er) e(either)75 5120 y(the)42 b(leftmost)g(or)g(righ)m(tmost)g(one.)76 b(The)42 b(con)m(v)m(en)m(tion)h(used)e(b)m(y)h(a)g(mac)m(hine)g(is)f (its)g Fl(byte)i(or)-5 b(der)10 b Fu(.)77 b(MIPS)75 5233 y(pro)s(cessors)30 b(can)h(op)s(erate)g(with)e(either)g Fl(big-endian)38 b Fu(b)m(yte)31 b(order:)1920 5656 y(12)p eop %%Page: 13 13 13 12 bop 1795 86 a Fi(Byte)35 b(#)p 1675 123 581 4 v 1673 236 4 113 v 1725 202 a Fu(0)p 1818 236 V 100 w(1)p 1963 236 V 100 w(2)p 2108 236 V 100 w(3)p 2254 236 V 1675 240 581 4 v 75 380 a(or)30 b Fl(little-endian)39 b Fu(b)m(yte)31 b(order:)1795 555 y Fi(Byte)k(#)p 1675 592 V 1673 705 4 113 v 1725 671 a Fu(3)p 1818 705 V 100 w(2)p 1963 705 V 100 w(1)p 2108 705 V 100 w(0)p 2254 705 V 1675 708 581 4 v 75 849 a(SPIM)h(op)s(erates)h(with)e(b)s(oth)h (b)m(yte)h(orders.)59 b(SPIM's)36 b(b)m(yte)h(order)f(is)f(determined)h (b)m(y)g(the)h(b)m(yte)g(order)f(of)75 962 y(the)c(underlying)d(hardw)m (are)i(running)e(the)j(sim)m(ulator.)44 b(On)31 b(a)i(DECstation)f (3100,)i(SPIM)d(is)g(little-endian,)75 1075 y(while)d(on)j(a)f(HP)h (Bob)s(cat,)g(Sun)e(4)i(or)f(PC/R)-8 b(T,)31 b(SPIM)f(is)f(big-endian.) 75 1317 y Fm(2.3)112 b(Addressing)38 b(Mo)s(des)75 1489 y Fu(MIPS)h(is)g(a)h(load/store)h(arc)m(hitecture,)i(whic)m(h)38 b(means)i(that)g(only)f(load)g(and)h(store)g(instructions)e(access)75 1602 y(memory)-8 b(.)83 b(Computation)44 b(instructions)e(op)s(erate)j (only)e(on)i(v)-5 b(alues)43 b(in)h(registers.)82 b(The)44 b(bare)g(mac)m(hine)75 1715 y(pro)m(vides)g(only)g(one)h(memory)g (addressing)e(mo)s(de:)69 b Fk(c\(rx\))p Fu(,)48 b(whic)m(h)43 b(uses)i(the)g(sum)f(of)h(the)g(immediate)75 1828 y(\(in)m(teger\))39 b Fk(c)f Fu(and)g(the)g(con)m(ten)m(ts)i(of)e(register)g Fk(rx)g Fu(as)g(the)g(address.)64 b(The)37 b(virtual)g(mac)m(hine)h (pro)m(vides)f(the)75 1941 y(follo)m(wing)29 b(addressing)g(mo)s(des)g (for)h(load)g(and)g(store)h(instructions:)p 309 2039 3313 4 v 307 2139 4 100 v 657 2109 a Ff(F)-8 b(ormat)p 1305 2139 V 1305 2139 V 1045 w(Address)31 b(Computation)p 3620 2139 V 309 2142 3313 4 v 309 2159 V 307 2258 4 100 v 359 2228 a Fx(\(register\))p 1305 2258 V 664 w(con)n(ten)n(ts)c(of)g (register)p 3620 2258 V 307 2358 V 359 2328 a(imm)p 1305 2358 V 837 w(immediate)p 3620 2358 V 307 2458 V 359 2428 a(imm)h(\(register\))p 1305 2458 V 475 w(immediate)g(+)f(con)n(ten)n (ts)g(of)g(register)p 3620 2458 V 307 2557 V 359 2527 a(sym)n(b)r(ol)p 1305 2557 V 741 w(address)f(of)i(sym)n(b)r(ol)p 3620 2557 V 307 2657 V 359 2627 a(sym)n(b)r(ol)f Fc(\006)g Fx(imm)p 1305 2657 V 461 w(address)f(of)i(sym)n(b)r(ol)f(+)g(or)g Fc(\000)g Fx(immediate)p 3620 2657 V 307 2756 V 359 2727 a(sym)n(b)r(ol)g Fc(\006)g Fx(imm)h(\(register\))p 1305 2756 V 99 w(address)e(of)i(sym)n(b)r(ol)f(+)g(or)g Fc(\000)g Fx(\(immediate)h(+)f(con)n(ten)n(ts)g(of)h(register\))p 3620 2756 V 309 2760 3313 4 v 216 2901 a Fu(Most)35 b(load)f(and)f (store)i(instructions)c(op)s(erate)k(only)e(on)h(aligned)f(data.)52 b(A)34 b(quan)m(tit)m(y)g(is)f Fl(aligne)-5 b(d)45 b Fu(if)33 b(its)75 3013 y(memory)g(address)f(is)g(a)h(m)m(ultiple)d(of)j (its)f(size)h(in)f(b)m(ytes.)48 b(Therefore,)34 b(a)f(halfw)m(ord)e(ob) 5 b(ject)34 b(m)m(ust)f(b)s(e)f(stored)75 3126 y(at)i(ev)m(en)h (addresses)e(and)g(a)h(full)e(w)m(ord)h(ob)5 b(ject)34 b(m)m(ust)g(b)s(e)f(stored)h(at)g(addresses)g(that)g(are)g(a)g(m)m (ultiple)d(of)j(4.)75 3239 y(Ho)m(w)m(ev)m(er,)f(MIPS)d(pro)m(vides)f (some)i(instructions)d(for)i(manipulating)e(unaligned)g(data.)75 3482 y Fm(2.4)112 b(Arithmetic)34 b(and)39 b(Logical)d(Instructions)75 3653 y Fu(In)28 b(all)f(instructions)g(b)s(elo)m(w,)h Fk(Src2)g Fu(can)g(either)g(b)s(e)g(a)h(register)g(or)f(an)h(immediate) f(v)-5 b(alue)28 b(\(a)h(16)g(bit)f(in)m(teger\).)75 3766 y(The)38 b(immediate)h(forms)f(of)h(the)g(instructions)e(are)i (only)g(included)d(for)j(reference.)67 b(The)38 b(assem)m(bler)h(will) 75 3879 y(translate)j(the)g(more)g(general)g(form)g(of)g(an)g (instruction)d(\(e.g.,)47 b Fk(add)p Fu(\))42 b(in)m(to)f(the)i (immediate)e(form)g(\(e.g.,)75 3992 y Fk(addi)p Fu(\))30 b(if)f(the)h(second)h(argumen)m(t)g(is)e(constan)m(t.)75 4200 y Fk(abs)47 b(Rdest,)f(Rsrc)2407 b Fl(A)n(bsolute)32 b(V)-7 b(alue)3819 4167 y Fb(y)75 4313 y Fu(Put)30 b(the)h(absolute)f (v)-5 b(alue)30 b(of)g(the)h(in)m(teger)f(from)g(register)h Fk(Rsrc)e Fu(in)g(register)h Fk(Rdest)p Fu(.)75 4521 y Fk(add)47 b(Rdest,)f(Rsrc1,)g(Src2)1757 b Fl(A)-5 b(ddition)33 b(\(with)h(over\015ow\))75 4634 y Fk(addi)47 b(Rdest,)f(Rsrc1,)g(Imm) 1310 b Fl(A)-5 b(ddition)34 b(Imme)-5 b(diate)34 b(\(with)g (over\015ow\))75 4747 y Fk(addu)47 b(Rdest,)f(Rsrc1,)g(Src2)1583 b Fl(A)-5 b(ddition)34 b(\(without)g(over\015ow\))75 4860 y Fk(addiu)46 b(Rdest,)g(Rsrc1,)h(Imm)1137 b Fl(A)-5 b(ddition)34 b(Imme)-5 b(diate)34 b(\(without)g(over\015ow\))75 4973 y Fu(Put)c(the)h(sum)e(of)i(the)f(in)m(tegers)h(from)f(register)g Fk(Rsrc1)f Fu(and)h Fk(Src2)f Fu(\(or)i Fk(Imm)p Fu(\))e(in)m(to)i (register)f Fk(Rdest)p Fu(.)75 5181 y Fk(and)47 b(Rdest,)f(Rsrc1,)g (Src2)2525 b Fl(AND)75 5294 y Fk(andi)47 b(Rdest,)f(Rsrc1,)g(Imm)2079 b Fl(AND)31 b(Imme)-5 b(diate)75 5407 y Fu(Put)30 b(the)g(logical)g (AND)g(of)h(the)f(in)m(tegers)g(from)g(register)g Fk(Rsrc1)f Fu(and)g Fk(Src2)g Fu(\(or)i Fk(Imm)p Fu(\))e(in)m(to)h(register)g Fk(Rdest)p Fu(.)1920 5656 y(13)p eop %%Page: 14 14 14 13 bop 75 99 a Fk(div)47 b(Rsrc1,)f(Rsrc2)2412 b Fl(Divide)32 b(\(signe)-5 b(d\))75 211 y Fk(divu)47 b(Rsrc1,)f(Rsrc2)2264 b Fl(Divide)32 b(\(unsigne)-5 b(d\))75 324 y Fu(Divide)30 b(the)h(con)m(ten)m(ts)h(of)g(the)f(t)m(w)m(o)h(registers.)42 b Fk(divu)30 b Fu(treats)i(is)e(op)s(erands)f(as)i(unsigned)e(v)-5 b(alues.)42 b(Lea)m(v)m(e)33 b(the)75 437 y(quotien)m(t)i(in)f (register)i Fk(lo)e Fu(and)h(the)g(remainder)f(in)g(register)h Fk(hi)p Fu(.)55 b(Note)37 b(that)f(if)e(an)h(op)s(erand)f(is)g(negativ) m(e,)75 550 y(the)h(remainder)e(is)g(unsp)s(eci\014ed)f(b)m(y)j(the)f (MIPS)g(arc)m(hitecture)i(and)e(dep)s(ends)e(on)j(the)f(con)m(v)m(en)m (tions)i(of)f(the)75 663 y(mac)m(hine)30 b(on)g(whic)m(h)f(SPIM)h(is)g (run.)75 869 y Fk(div)47 b(Rdest,)f(Rsrc1,)g(Src2)1471 b Fl(Divide)32 b(\(signe)-5 b(d,)34 b(with)f(over\015ow\))3819 836 y Fb(y)75 981 y Fk(divu)47 b(Rdest,)f(Rsrc1,)g(Src2)1198 b Fl(Divide)32 b(\(unsigne)-5 b(d,)33 b(without)h(over\015ow\))3819 948 y Fb(y)75 1094 y Fu(Put)d(the)h(quotien)m(t)g(of)g(the)g(in)m (tegers)g(from)f(register)g Fk(Rsrc1)g Fu(and)g Fk(Src2)f Fu(in)m(to)i(register)f Fk(Rdest)p Fu(.)43 b Fk(divu)31 b Fu(treats)75 1207 y(is)e(op)s(erands)h(as)g(unsigned)e(v)-5 b(alues.)75 1413 y Fk(mul)47 b(Rdest,)f(Rsrc1,)g(Src2)1577 b Fl(Multiply)33 b(\(without)h(over\015ow\))3819 1380 y Fb(y)75 1526 y Fk(mulo)47 b(Rdest,)f(Rsrc1,)g(Src2)1654 b Fl(Multiply)33 b(\(with)h(over\015ow\))3819 1493 y Fb(y)75 1731 y Fk(mulou)46 b(Rdest,)g(Rsrc1,)h(Src2)1214 b Fl(Unsigne)-5 b(d)32 b(Multiply)h(\(with)h(over\015ow\))3819 1698 y Fb(y)75 1844 y Fu(Put)c(the)h(pro)s(duct)e(of)h(the)h(in)m (tegers)f(from)g(register)h Fk(Rsrc1)e Fu(and)g Fk(Src2)h Fu(in)m(to)g(register)g Fk(Rdest)p Fu(.)75 2049 y Fk(mult)47 b(Rsrc1,)f(Rsrc2)2642 b Fl(Multiply)75 2162 y Fk(multu)46 b(Rsrc1,)g(Rsrc2)2202 b Fl(Unsigne)-5 b(d)33 b(Multiply)75 2275 y Fu(Multiply)c(the)j(con)m(ten)m(ts)h(of)f(the)g(t)m(w)m(o)h (registers.)44 b(Lea)m(v)m(e)34 b(the)e(lo)m(w-order)f(w)m(ord)h(of)f (the)h(pro)s(duct)f(in)f(register)75 2388 y Fk(lo)g Fu(and)g(the)g (high-w)m(ord)f(in)g(register)h Fk(hi)p Fu(.)75 2594 y Fk(neg)47 b(Rdest,)f(Rsrc)1843 b Fl(Ne)-5 b(gate)33 b(V)-7 b(alue)32 b(\(with)i(over\015ow\))3819 2561 y Fb(y)75 2707 y Fk(negu)47 b(Rdest,)f(Rsrc)1670 b Fl(Ne)-5 b(gate)33 b(V)-7 b(alue)32 b(\(without)i(over\015ow\))3819 2674 y Fb(y)75 2819 y Fu(Put)c(the)h(negativ)m(e)g(of)g(the)f(in)m (teger)h(from)f(register)g Fk(Rsrc)f Fu(in)m(to)i(register)f Fk(Rdest)p Fu(.)75 3025 y Fk(nor)47 b(Rdest,)f(Rsrc1,)g(Src2)2525 b Fl(NOR)75 3138 y Fu(Put)30 b(the)h(logical)e(NOR)i(of)f(the)h(in)m (tegers)f(from)g(register)g Fk(Rsrc1)f Fu(and)h Fk(Src2)f Fu(in)m(to)i(register)f Fk(Rdest)p Fu(.)75 3343 y Fk(not)47 b(Rdest,)f(Rsrc)2793 b Fl(NOT)3819 3310 y Fb(y)75 3456 y Fu(Put)30 b(the)h(bit)m(wise)e(logical)g(negation)i(of)g(the)f(in)m (teger)h(from)f(register)g Fk(Rsrc)f Fu(in)m(to)i(register)f Fk(Rdest)p Fu(.)75 3662 y Fk(or)47 b(Rdest,)f(Rsrc1,)g(Src2)2641 b Fl(OR)75 3775 y Fk(ori)47 b(Rdest,)f(Rsrc1,)g(Imm)2195 b Fl(OR)32 b(Imme)-5 b(diate)75 3888 y Fu(Put)30 b(the)h(logical)e(OR)h (of)h(the)f(in)m(tegers)h(from)f(register)g Fk(Rsrc1)f Fu(and)h Fk(Src2)f Fu(\(or)i Fk(Imm)p Fu(\))f(in)m(to)g(register)g Fk(Rdest)p Fu(.)75 4093 y Fk(rem)47 b(Rdest,)f(Rsrc1,)g(Src2)2231 b Fl(R)-5 b(emainder)3819 4060 y Fb(y)75 4206 y Fk(remu)47 b(Rdest,)f(Rsrc1,)g(Src2)1790 b Fl(Unsigne)-5 b(d)33 b(R)-5 b(emainder)3819 4173 y Fb(y)75 4319 y Fu(Put)24 b(the)h(remainder)d(from)i(dividing)d(the)k(in)m(teger)g(in)e(register) h Fk(Rsrc1)f Fu(b)m(y)h(the)h(in)m(teger)f(in)g Fk(Src2)f Fu(in)m(to)h(register)75 4432 y Fk(Rdest)p Fu(.)36 b(Note)22 b(that)f(if)f(an)h(op)s(erand)e(is)h(negativ)m(e,)k(the)d(remainder)e (is)h(unsp)s(eci\014ed)e(b)m(y)i(the)h(MIPS)f(arc)m(hitecture)75 4545 y(and)30 b(dep)s(ends)e(on)j(the)f(con)m(v)m(en)m(tions)i(of)e (the)h(mac)m(hine)f(on)g(whic)m(h)f(SPIM)h(is)f(run.)75 4750 y Fk(rol)47 b(Rdest,)f(Rsrc1,)g(Src2)2219 b Fl(R)-5 b(otate)35 b(L)-5 b(eft)3819 4717 y Fb(y)75 4863 y Fk(ror)47 b(Rdest,)f(Rsrc1,)g(Src2)2161 b Fl(R)-5 b(otate)35 b(R)n(ight)3819 4830 y Fb(y)75 4976 y Fu(Rotate)30 b(the)f(con)m(ten)m(ts)h(of)f (register)g Fk(Rsrc1)e Fu(left)h(\(righ)m(t\))h(b)m(y)f(the)h(distance) f(indicated)f(b)m(y)i Fk(Src2)e Fu(and)h(put)g(the)75 5089 y(result)h(in)g(register)i Fk(Rdest)p Fu(.)75 5294 y Fk(sll)47 b(Rdest,)f(Rsrc1,)g(Src2)2057 b Fl(Shift)33 b(L)-5 b(eft)33 b(L)-5 b(o)g(gic)g(al)75 5407 y Fk(sllv)47 b(Rdest,)f(Rsrc1,)g(Rsrc2)1602 b Fl(Shift)33 b(L)-5 b(eft)33 b(L)-5 b(o)g(gic)g(al)34 b(V)-7 b(ariable)1920 5656 y Fu(14)p eop %%Page: 15 15 15 14 bop 75 99 a Fk(sra)47 b(Rdest,)f(Rsrc1,)g(Src2)1846 b Fl(Shift)33 b(R)n(ight)g(A)n(rithmetic)75 211 y Fk(srav)47 b(Rdest,)f(Rsrc1,)g(Rsrc2)1391 b Fl(Shift)33 b(R)n(ight)g(A)n (rithmetic)f(V)-7 b(ariable)75 324 y Fk(srl)47 b(Rdest,)f(Rsrc1,)g (Src2)1999 b Fl(Shift)33 b(R)n(ight)g(L)-5 b(o)g(gic)g(al)75 437 y Fk(srlv)47 b(Rdest,)f(Rsrc1,)g(Rsrc2)1544 b Fl(Shift)33 b(R)n(ight)g(L)-5 b(o)g(gic)g(al)34 b(V)-7 b(ariable)75 550 y Fu(Shift)31 b(the)i(con)m(ten)m(ts)h(of)f(register)f Fk(Rsrc1)g Fu(left)g(\(righ)m(t\))h(b)m(y)f(the)h(distance)f(indicated) g(b)m(y)g Fk(Src2)g Fu(\()p Fk(Rsrc2)p Fu(\))g(and)75 663 y(put)e(the)g(result)g(in)f(register)h Fk(Rdest)p Fu(.)75 852 y Fk(sub)47 b(Rdest,)f(Rsrc1,)g(Src2)1772 b Fl(Subtr)-5 b(act)33 b(\(with)h(over\015ow\))75 965 y Fk(subu)47 b(Rdest,)f(Rsrc1,)g(Src2)1598 b Fl(Subtr)-5 b(act)34 b(\(without)g(over\015ow\))75 1078 y Fu(Put)c(the)h (di\013erence)e(of)i(the)g(in)m(tegers)f(from)g(register)g Fk(Rsrc1)f Fu(and)h Fk(Src2)f Fu(in)m(to)i(register)f Fk(Rdest)p Fu(.)75 1267 y Fk(xor)47 b(Rdest,)f(Rsrc1,)g(Src2)2528 b Fl(X)n(OR)75 1380 y Fk(xori)47 b(Rdest,)f(Rsrc1,)g(Imm)2081 b Fl(X)n(OR)32 b(Imme)-5 b(diate)75 1493 y Fu(Put)30 b(the)g(logical)g(X)m(OR)h(of)f(the)g(in)m(tegers)h(from)f(register)g Fk(Rsrc1)f Fu(and)g Fk(Src2)g Fu(\(or)i Fk(Imm)p Fu(\))f(in)m(to)g (register)g Fk(Rdest)p Fu(.)75 1731 y Fm(2.5)112 b(Constan)m (t-Manipulating)38 b(Instructions)75 1979 y Fk(li)47 b(Rdest,)f(imm)2458 b Fl(L)-5 b(o)g(ad)34 b(Imme)-5 b(diate)3819 1946 y Fb(y)75 2092 y Fu(Mo)m(v)m(e)32 b(the)f(immediate)e Fk(imm)h Fu(in)m(to)g(register)h Fk(Rdest)p Fu(.)75 2281 y Fk(lui)47 b(Rdest,)f(imm)2209 b Fl(L)-5 b(o)g(ad)35 b(Upp)-5 b(er)33 b(Imme)-5 b(diate)75 2394 y Fu(Load)33 b(the)g(lo)m(w)m(er)g(halfw)m(ord)e(of)i(the)g(immediate)f Fk(imm)g Fu(in)m(to)h(the)g(upp)s(er)e(halfw)m(ord)g(of)i(register)g Fk(Rdest)p Fu(.)46 b(The)75 2507 y(lo)m(w)m(er)31 b(bits)e(of)h(the)h (register)f(are)h(set)g(to)g(0.)75 2745 y Fm(2.6)112 b(Comparison)37 b(Instructions)75 2917 y Fu(In)28 b(all)f(instructions) g(b)s(elo)m(w,)h Fk(Src2)g Fu(can)g(either)g(b)s(e)g(a)h(register)g(or) f(an)h(immediate)f(v)-5 b(alue)28 b(\(a)h(16)g(bit)f(in)m(teger\).)75 3106 y Fk(seq)47 b(Rdest,)f(Rsrc1,)g(Src2)2283 b Fl(Set)33 b(Equal)3819 3073 y Fb(y)75 3219 y Fu(Set)e(register)f Fk(Rdest)f Fu(to)i(1)g(if)e(register)h Fk(Rsrc1)f Fu(equals)h Fk(Src2)f Fu(and)h(to)h(b)s(e)f(0)g(otherwise.)75 3408 y Fk(sge)47 b(Rdest,)f(Rsrc1,)g(Src2)1711 b Fl(Set)33 b(Gr)-5 b(e)g(ater)34 b(Than)g(Equal)3819 3375 y Fb(y)75 3521 y Fk(sgeu)47 b(Rdest,)f(Rsrc1,)g(Src2)1270 b Fl(Set)33 b(Gr)-5 b(e)g(ater)35 b(Than)e(Equal)g(Unsigne)-5 b(d)3819 3488 y Fb(y)75 3634 y Fu(Set)31 b(register)f Fk(Rdest)f Fu(to)i(1)g(if)e(register)h Fk(Rsrc1)f Fu(is)h(greater)h(than)f(or)h (equal)f(to)h Fk(Src2)e Fu(and)h(to)h(0)f(otherwise.)75 3823 y Fk(sgt)47 b(Rdest,)f(Rsrc1,)g(Src2)1966 b Fl(Set)32 b(Gr)-5 b(e)g(ater)35 b(Than)3819 3790 y Fb(y)75 3936 y Fk(sgtu)47 b(Rdest,)f(Rsrc1,)g(Src2)1525 b Fl(Set)33 b(Gr)-5 b(e)g(ater)34 b(Than)g(Unsigne)-5 b(d)3819 3903 y Fb(y)75 4049 y Fu(Set)31 b(register)f Fk(Rdest)f Fu(to)i(1)g(if)e (register)h Fk(Rsrc1)f Fu(is)h(greater)h(than)f Fk(Src2)f Fu(and)h(to)h(0)g(otherwise.)75 4238 y Fk(sle)47 b(Rdest,)f(Rsrc1,)g (Src2)1841 b Fl(Set)32 b(L)-5 b(ess)33 b(Than)h(Equal)3819 4205 y Fb(y)75 4351 y Fk(sleu)47 b(Rdest,)f(Rsrc1,)g(Src2)1400 b Fl(Set)32 b(L)-5 b(ess)34 b(Than)f(Equal)g(Unsigne)-5 b(d)3819 4318 y Fb(y)75 4464 y Fu(Set)31 b(register)f Fk(Rdest)f Fu(to)i(1)g(if)e(register)h Fk(Rsrc1)f Fu(is)h(less)f(than)h (or)h(equal)f(to)h Fk(Src2)e Fu(and)h(to)h(0)g(otherwise.)75 4653 y Fk(slt)47 b(Rdest,)f(Rsrc1,)g(Src2)2163 b Fl(Set)33 b(L)-5 b(ess)33 b(Than)75 4766 y Fk(slti)47 b(Rdest,)f(Rsrc1,)g(Imm) 1717 b Fl(Set)33 b(L)-5 b(ess)33 b(Than)g(Imme)-5 b(diate)75 4879 y Fk(sltu)47 b(Rdest,)f(Rsrc1,)g(Src2)1722 b Fl(Set)33 b(L)-5 b(ess)33 b(Than)h(Unsigne)-5 b(d)75 4992 y Fk(sltiu)46 b(Rdest,)g(Rsrc1,)h(Imm)1276 b Fl(Set)33 b(L)-5 b(ess)33 b(Than)g(Unsigne)-5 b(d)33 b(Imme)-5 b(diate)75 5105 y Fu(Set)31 b(register)f Fk(Rdest)f Fu(to)i(1)g(if)e(register)h Fk(Rsrc1)f Fu(is)h(less)f(than)h Fk(Src2)g Fu(\(or)g Fk(Imm)p Fu(\))g(and)g(to)h(0)g(otherwise.)75 5294 y Fk(sne)47 b(Rdest,)f(Rsrc1,)g(Src2)2107 b Fl(Set)32 b(Not)h(Equal)3819 5261 y Fb(y)75 5407 y Fu(Set)e(register)f Fk(Rdest)f Fu(to)i(1)g(if)e(register)h Fk(Rsrc1)f Fu(is)h(not)g(equal)g(to)h Fk(Src2)e Fu(and)h(to)h(0)g(otherwise.)1920 5656 y(15)p eop %%Page: 16 16 16 15 bop 75 99 a Fm(2.7)112 b(Branc)m(h)38 b(and)g(Jump)f (Instructions)75 270 y Fu(In)28 b(all)h(instructions)e(b)s(elo)m(w,)i Fk(Src2)f Fu(can)h(either)g(b)s(e)f(a)i(register)f(or)g(an)g(immediate) g(v)-5 b(alue)28 b(\(in)m(teger\).)42 b(Branc)m(h)75 383 y(instructions)25 b(use)h(a)h(signed)f(16-bit)h(o\013set)h (\014eld;)e(hence)h(they)g(can)g(jump)f(2)2673 350 y Fr(15)2761 383 y Fj(\000)13 b Fu(1)26 b Fl(instructions)36 b Fu(\(not)27 b(b)m(ytes\))75 496 y(forw)m(ard)j(or)g(2)565 463 y Fr(15)671 496 y Fu(instructions)e(bac)m(kw)m(ards.)41 b(The)30 b Fl(jump)36 b Fu(instruction)29 b(con)m(tains)h(a)h(26)g(bit) f(address)f(\014eld.)75 708 y Fk(b)47 b(label)2630 b Fl(Br)-5 b(anch)34 b(instruction)3819 675 y Fb(y)75 821 y Fu(Unconditionally)28 b(branc)m(h)h(to)i(the)g(instruction)d(at)k (the)e(lab)s(el.)75 1034 y Fk(bc)p Fa(z)p Fk(t)47 b(label)2215 b Fl(Br)-5 b(anch)34 b(Copr)-5 b(o)g(c)g(essor)36 b Fg(z)h Fl(T)-7 b(rue)75 1147 y Fk(bc)p Fa(z)p Fk(f)47 b(label)2201 b Fl(Br)-5 b(anch)34 b(Copr)-5 b(o)g(c)g(essor)36 b Fg(z)h Fl(F)-7 b(alse)75 1260 y Fu(Conditionally)39 b(branc)m(h)j(to)h(the)f (instruction)f(at)i(the)f(lab)s(el)f(if)g(copro)s(cessor)i Fg(z)t Fu('s)f(condition)f(\015ag)i(is)e(true)75 1373 y(\(false\).)75 1585 y Fk(beq)47 b(Rsrc1,)f(Src2,)g(label)2061 b Fl(Br)-5 b(anch)34 b(on)f(Equal)75 1698 y Fu(Conditionally)21 b(branc)m(h)j(to)h(the)f(instruction)e(at)j(the)g(lab)s(el)d(if)h(the)i (con)m(ten)m(ts)h(of)e(register)g Fk(Rsrc1)f Fu(equals)h Fk(Src2)p Fu(.)75 1911 y Fk(beqz)47 b(Rsrc,)f(label)2069 b Fl(Br)-5 b(anch)34 b(on)f(Equal)f(Zer)-5 b(o)3819 1878 y Fb(y)75 2024 y Fu(Conditionally)27 b(branc)m(h)j(to)h(the)g (instruction)d(at)j(the)g(lab)s(el)d(if)i(the)g(con)m(ten)m(ts)i(of)f Fk(Rsrc)e Fu(equals)h(0.)75 2236 y Fk(bge)47 b(Rsrc1,)f(Src2,)g(label) 1421 b Fl(Br)-5 b(anch)34 b(on)f(Gr)-5 b(e)g(ater)34 b(Than)g(Equal)3819 2203 y Fb(y)75 2349 y Fk(bgeu)47 b(Rsrc1,)f(Src2,)g(label)1577 b Fl(Br)-5 b(anch)34 b(on)f(GTE)g (Unsigne)-5 b(d)3819 2316 y Fb(y)75 2462 y Fu(Conditionally)25 b(branc)m(h)j(to)h(the)g(instruction)d(at)j(the)g(lab)s(el)d(if)i(the)g (con)m(ten)m(ts)i(of)f(register)f Fk(Rsrc1)f Fu(are)i(greater)75 2575 y(than)h(or)g(equal)g(to)h Fk(Src2)p Fu(.)75 2787 y Fk(bgez)47 b(Rsrc,)f(label)1564 b Fl(Br)-5 b(anch)35 b(on)e(Gr)-5 b(e)g(ater)34 b(Than)g(Equal)e(Zer)-5 b(o)75 2900 y Fu(Conditionally)28 b(branc)m(h)j(to)h(the)g(instruction)e(at)i (the)g(lab)s(el)e(if)g(the)i(con)m(ten)m(ts)h(of)f Fk(Rsrc)e Fu(are)i(greater)h(than)e(or)75 3013 y(equal)f(to)h(0.)75 3226 y Fk(bgezal)46 b(Rsrc,)g(label)1064 b Fl(Br)-5 b(anch)34 b(on)f(Gr)-5 b(e)g(ater)34 b(Than)g(Equal)f(Zer)-5 b(o)33 b(A)n(nd)f(Link)75 3339 y Fu(Conditionally)c(branc)m(h)j(to)h(the)g (instruction)e(at)i(the)g(lab)s(el)e(if)g(the)i(con)m(ten)m(ts)h(of)f Fk(Rsrc)e Fu(are)i(greater)h(than)e(or)75 3452 y(equal)f(to)h(0.)41 b(Sa)m(v)m(e)32 b(the)e(address)g(of)g(the)h(next)f(instruction)f(in)g (register)h(31.)75 3664 y Fk(bgt)47 b(Rsrc1,)f(Src2,)g(label)1675 b Fl(Br)-5 b(anch)34 b(on)f(Gr)-5 b(e)g(ater)35 b(Than)3819 3631 y Fb(y)75 3777 y Fk(bgtu)47 b(Rsrc1,)f(Src2,)g(label)1234 b Fl(Br)-5 b(anch)34 b(on)g(Gr)-5 b(e)g(ater)34 b(Than)g(Unsigne)-5 b(d)3819 3744 y Fb(y)75 3890 y Fu(Conditionally)25 b(branc)m(h)j(to)h (the)g(instruction)d(at)j(the)g(lab)s(el)d(if)i(the)g(con)m(ten)m(ts)i (of)f(register)f Fk(Rsrc1)f Fu(are)i(greater)75 4003 y(than)h Fk(Src2)p Fu(.)75 4215 y Fk(bgtz)47 b(Rsrc,)f(label)1819 b Fl(Br)-5 b(anch)34 b(on)f(Gr)-5 b(e)g(ater)35 b(Than)e(Zer)-5 b(o)75 4328 y Fu(Conditionally)27 b(branc)m(h)j(to)h(the)g(instruction) d(at)j(the)g(lab)s(el)d(if)i(the)g(con)m(ten)m(ts)i(of)f Fk(Rsrc)e Fu(are)i(greater)g(than)g(0.)75 4541 y Fk(ble)47 b(Rsrc1,)f(Src2,)g(label)1550 b Fl(Br)-5 b(anch)34 b(on)f(L)-5 b(ess)33 b(Than)h(Equal)3819 4508 y Fb(y)75 4654 y Fk(bleu)47 b(Rsrc1,)f(Src2,)g(label)1597 b Fl(Br)-5 b(anch)34 b(on)f(L)-7 b(TE)33 b(Unsigne)-5 b(d)3819 4621 y Fb(y)75 4767 y Fu(Conditionally)35 b(branc)m(h)i(to)h(the)g(instruction)e(at)i(the)g(lab)s(el)e(if)h(the)h (con)m(ten)m(ts)i(of)e(register)f Fk(Rsrc1)f Fu(are)j(less)75 4880 y(than)30 b(or)g(equal)g(to)h Fk(Src2)p Fu(.)75 5092 y Fk(blez)47 b(Rsrc,)f(label)1694 b Fl(Br)-5 b(anch)34 b(on)f(L)-5 b(ess)33 b(Than)h(Equal)e(Zer)-5 b(o)75 5205 y Fu(Conditionally)22 b(branc)m(h)j(to)i(the)f(instruction)d(at)k(the)e (lab)s(el)f(if)h(the)h(con)m(ten)m(ts)h(of)f Fk(Rsrc)e Fu(are)i(less)f(than)h(or)f(equal)75 5318 y(to)31 b(0.)1920 5656 y(16)p eop %%Page: 17 17 17 16 bop 75 99 a Fk(bgezal)46 b(Rsrc,)g(label)1064 b Fl(Br)-5 b(anch)34 b(on)f(Gr)-5 b(e)g(ater)34 b(Than)g(Equal)f(Zer)-5 b(o)33 b(A)n(nd)f(Link)75 211 y Fk(bltzal)46 b(Rsrc,)g(label)1658 b Fl(Br)-5 b(anch)34 b(on)f(L)-5 b(ess)33 b(Than)h(A)n(nd)e(Link)75 324 y Fu(Conditionally)27 b(branc)m(h)i(to)h(the)g(instruction)e(at)j (the)f(lab)s(el)e(if)g(the)i(con)m(ten)m(ts)i(of)e Fk(Rsrc)e Fu(are)j(greater)g(or)e(equal)75 437 y(to)i(0)g(or)f(less)g(than)g(0,)h (resp)s(ectiv)m(ely)-8 b(.)41 b(Sa)m(v)m(e)31 b(the)g(address)e(of)i (the)f(next)h(instruction)d(in)h(register)h(31.)75 650 y Fk(blt)47 b(Rsrc1,)f(Src2,)g(label)1805 b Fl(Br)-5 b(anch)34 b(on)f(L)-5 b(ess)33 b(Than)3819 617 y Fb(y)75 763 y Fk(bltu)47 b(Rsrc1,)f(Src2,)g(label)1364 b Fl(Br)-5 b(anch)34 b(on)f(L)-5 b(ess)33 b(Than)h(Unsigne)-5 b(d)3819 730 y Fb(y)75 876 y Fu(Conditionally)35 b(branc)m(h)i(to)h(the)g (instruction)e(at)i(the)g(lab)s(el)e(if)h(the)h(con)m(ten)m(ts)i(of)e (register)f Fk(Rsrc1)f Fu(are)j(less)75 989 y(than)30 b Fk(Src2)p Fu(.)75 1201 y Fk(bltz)47 b(Rsrc,)f(label)1948 b Fl(Br)-5 b(anch)35 b(on)e(L)-5 b(ess)33 b(Than)g(Zer)-5 b(o)75 1314 y Fu(Conditionally)27 b(branc)m(h)j(to)h(the)g(instruction) d(at)j(the)g(lab)s(el)d(if)i(the)g(con)m(ten)m(ts)i(of)f Fk(Rsrc)e Fu(are)i(less)f(than)g(0.)75 1526 y Fk(bne)47 b(Rsrc1,)f(Src2,)g(label)1884 b Fl(Br)-5 b(anch)34 b(on)f(Not)g(Equal) 75 1639 y Fu(Conditionally)i(branc)m(h)j(to)g(the)h(instruction)d(at)j (the)f(lab)s(el)f(if)g(the)h(con)m(ten)m(ts)i(of)e(register)g Fk(Rsrc1)f Fu(are)i(not)75 1752 y(equal)30 b(to)h Fk(Src2)p Fu(.)75 1965 y Fk(bnez)47 b(Rsrc,)f(label)1892 b Fl(Br)-5 b(anch)34 b(on)f(Not)g(Equal)f(Zer)-5 b(o)3819 1932 y Fb(y)75 2078 y Fu(Conditionally)27 b(branc)m(h)j(to)h(the)g (instruction)d(at)j(the)g(lab)s(el)d(if)i(the)g(con)m(ten)m(ts)i(of)f Fk(Rsrc)e Fu(are)i(not)f(equal)g(to)h(0.)75 2290 y Fk(j)47 b(label)3228 b Fl(Jump)75 2403 y Fu(Unconditionally)28 b(jump)g(to)k(the)e(instruction)e(at)k(the)e(lab)s(el.)75 2616 y Fk(jal)47 b(label)2745 b Fl(Jump)33 b(and)g(Link)75 2729 y Fk(jalr)47 b(Rsrc)2396 b Fl(Jump)33 b(and)h(Link)e(R)-5 b(e)g(gister)75 2842 y Fu(Unconditionally)28 b(jump)h(to)j(the)f (instruction)d(at)k(the)f(lab)s(el)e(or)i(whose)f(address)g(is)g(in)f (register)i Fk(Rsrc)p Fu(.)41 b(Sa)m(v)m(e)75 2954 y(the)31 b(address)e(of)i(the)f(next)h(instruction)d(in)h(register)h(31.)75 3167 y Fk(jr)47 b(Rsrc)2879 b Fl(Jump)33 b(R)-5 b(e)g(gister)75 3280 y Fu(Unconditionally)28 b(jump)g(to)k(the)e(instruction)e(whose)j (address)e(is)h(in)f(register)h Fk(Rsrc)p Fu(.)75 3523 y Fm(2.8)112 b(Load)39 b(Instructions)75 3795 y Fk(la)47 b(Rdest,)f(address)2374 b Fl(L)-5 b(o)g(ad)34 b(A)-5 b(ddr)g(ess)3819 3762 y Fb(y)75 3908 y Fu(Load)31 b(computed)f Fl(addr)-5 b(ess)7 b Fu(,)33 b(not)e(the)f(con)m(ten)m(ts)i(of)f(the)f (lo)s(cation,)h(in)m(to)f(register)g Fk(Rdest)p Fu(.)75 4120 y Fk(lb)47 b(Rdest,)f(address)2567 b Fl(L)-5 b(o)g(ad)35 b(Byte)75 4233 y Fk(lbu)47 b(Rdest,)f(address)2126 b Fl(L)-5 b(o)g(ad)35 b(Unsigne)-5 b(d)33 b(Byte)75 4346 y Fu(Load)e(the)f(b)m(yte)h(at)g Fl(addr)-5 b(ess)40 b Fu(in)m(to)30 b(register)h Fk(Rdest)p Fu(.)39 b(The)30 b(b)m(yte)h(is)e(sign-extended)h(b)m(y)g(the)h Fk(lb)p Fu(,)f(but)f(not)i(the)75 4459 y Fk(lbu)p Fu(,)f(instruction.)75 4671 y Fk(ld)47 b(Rdest,)f(address)2159 b Fl(L)-5 b(o)g(ad)34 b(Double-Wor)-5 b(d)3819 4638 y Fb(y)75 4784 y Fu(Load)31 b(the)f(64-bit)h(quan)m(tit)m(y)f(at)h Fl(addr)-5 b(ess)40 b Fu(in)m(to)31 b(registers)f Fk(Rdest)f Fu(and)h Fk(Rdest)46 b(+)h(1)p Fu(.)75 4997 y Fk(lh)g(Rdest,)f(address)2395 b Fl(L)-5 b(o)g(ad)35 b(Halfwor)-5 b(d)75 5110 y Fk(lhu)47 b(Rdest,)f(address)1954 b Fl(L)-5 b(o)g(ad)35 b(Unsigne)-5 b(d)33 b(Halfwor)-5 b(d)75 5223 y Fu(Load)21 b(the)f(16-bit)h(quan)m (tit)m(y)g(\(halfw)m(ord\))e(at)i Fl(addr)-5 b(ess)31 b Fu(in)m(to)20 b(register)g Fk(Rdest)p Fu(.)36 b(The)20 b(halfw)m(ord)f(is)h(sign-extended)75 5335 y(b)m(y)30 b(the)h Fk(lh)p Fu(,)f(but)g(not)g(the)h Fi(lh)m(u)p Fu(,)g(instruction)1920 5656 y(17)p eop %%Page: 18 18 18 17 bop 75 99 a Fk(lw)47 b(Rdest,)f(address)2530 b Fl(L)-5 b(o)g(ad)35 b(Wor)-5 b(d)75 211 y Fu(Load)31 b(the)f(32-bit)h(quan)m(tit)m(y)f(\(w)m(ord\))h(at)g Fl(addr)-5 b(ess)40 b Fu(in)m(to)31 b(register)f Fk(Rdest)p Fu(.)75 424 y Fk(lwc)p Fa(z)62 b Fk(Rdest,)47 b(address)1914 b Fl(L)-5 b(o)g(ad)34 b(Wor)-5 b(d)34 b(Copr)-5 b(o)g(c)g(essor)75 537 y Fu(Load)31 b(the)f(w)m(ord)g(at)h Fl(addr)-5 b(ess)40 b Fu(in)m(to)31 b(register)f Fk(Rdest)f Fu(of)h(copro)s(cessor)h Fg(z)k Fu(\(0{3\).)75 749 y Fk(lwl)47 b(Rdest,)f(address)2297 b Fl(L)-5 b(o)g(ad)35 b(Wor)-5 b(d)34 b(L)-5 b(eft)75 862 y Fk(lwr)47 b(Rdest,)f(address)2239 b Fl(L)-5 b(o)g(ad)35 b(Wor)-5 b(d)34 b(R)n(ight)75 975 y Fu(Load)29 b(the)g(left)g(\(righ)m (t\))g(b)m(ytes)h(from)e(the)h(w)m(ord)g(at)g(the)h(p)s (ossibly-unaligned)24 b Fl(addr)-5 b(ess)38 b Fu(in)m(to)29 b(register)g Fk(Rdest)p Fu(.)75 1188 y Fk(ulh)47 b(Rdest,)f(address) 1854 b Fl(Unaligne)-5 b(d)33 b(L)-5 b(o)g(ad)35 b(Halfwor)-5 b(d)3819 1155 y Fb(y)75 1301 y Fk(ulhu)47 b(Rdest,)f(address)1413 b Fl(Unaligne)-5 b(d)33 b(L)-5 b(o)g(ad)35 b(Halfwor)-5 b(d)35 b(Unsigne)-5 b(d)3819 1268 y Fb(y)75 1414 y Fu(Load)30 b(the)g(16-bit)h(quan)m(tit)m(y)f(\(halfw)m(ord\))f(at)i(the)f(p)s (ossibly-unaligned)c Fl(addr)-5 b(ess)39 b Fu(in)m(to)30 b(register)g Fk(Rdest)p Fu(.)39 b(The)75 1526 y(halfw)m(ord)29 b(is)g(sign-extended)h(b)m(y)g(the)h Fk(ulh)p Fu(,)f(but)f(not)i(the)g Fi(ulh)m(u)p Fu(,)f(instruction)75 1739 y Fk(ulw)47 b(Rdest,)f(address) 1989 b Fl(Unaligne)-5 b(d)33 b(L)-5 b(o)g(ad)35 b(Wor)-5 b(d)3819 1706 y Fb(y)75 1852 y Fu(Load)31 b(the)f(32-bit)h(quan)m(tit)m (y)f(\(w)m(ord\))h(at)g(the)g(p)s(ossibly-unaligned)25 b Fl(addr)-5 b(ess)40 b Fu(in)m(to)31 b(register)f Fk(Rdest)p Fu(.)75 2095 y Fm(2.9)112 b(Store)37 b(Instructions)75 2367 y Fk(sb)47 b(Rsrc,)g(address)2598 b Fl(Stor)-5 b(e)34 b(Byte)75 2480 y Fu(Store)d(the)f(lo)m(w)g(b)m(yte)h(from)f(register)g Fk(Rsrc)g Fu(at)h Fl(addr)-5 b(ess)7 b Fu(.)75 2692 y Fk(sd)47 b(Rsrc,)g(address)2189 b Fl(Stor)-5 b(e)34 b(Double-Wor)-5 b(d)3819 2659 y Fb(y)75 2805 y Fu(Store)31 b(the)f(64-bit)h(quan)m(tit) m(y)f(in)g(registers)g Fk(Rsrc)f Fu(and)h Fk(Rsrc)46 b(+)i(1)30 b Fu(at)h Fl(addr)-5 b(ess)7 b Fu(.)75 3018 y Fk(sh)47 b(Rsrc,)g(address)2426 b Fl(Stor)-5 b(e)34 b(Halfwor)-5 b(d)75 3130 y Fu(Store)31 b(the)f(lo)m(w)g(halfw)m(ord)f (from)h(register)g Fk(Rsrc)g Fu(at)h Fl(addr)-5 b(ess)7 b Fu(.)75 3343 y Fk(sw)47 b(Rsrc,)g(address)2561 b Fl(Stor)-5 b(e)34 b(Wor)-5 b(d)75 3456 y Fu(Store)31 b(the)f(w)m(ord)g(from)g (register)g Fk(Rsrc)g Fu(at)h Fl(addr)-5 b(ess)7 b Fu(.)75 3668 y Fk(swc)p Fa(z)62 b Fk(Rsrc,)47 b(address)1946 b Fl(Stor)-5 b(e)33 b(Wor)-5 b(d)34 b(Copr)-5 b(o)g(c)g(essor)75 3781 y Fu(Store)31 b(the)f(w)m(ord)g(from)g(register)g Fk(Rsrc)g Fu(of)g(copro)s(cessor)h Fg(z)j Fu(at)e Fl(addr)-5 b(ess)7 b Fu(.)75 3994 y Fk(swl)47 b(Rsrc,)f(address)2329 b Fl(Stor)-5 b(e)34 b(Wor)-5 b(d)34 b(L)-5 b(eft)75 4107 y Fk(swr)47 b(Rsrc,)f(address)2271 b Fl(Stor)-5 b(e)34 b(Wor)-5 b(d)34 b(R)n(ight)75 4220 y Fu(Store)d(the)f(left)g(\(righ)m (t\))h(b)m(ytes)g(from)f(register)g Fk(Rsrc)f Fu(at)i(the)g(p)s (ossibly-unaligned)25 b Fl(addr)-5 b(ess)7 b Fu(.)75 4432 y Fk(ush)47 b(Rsrc,)f(address)1886 b Fl(Unaligne)-5 b(d)33 b(Stor)-5 b(e)34 b(Halfwor)-5 b(d)3819 4399 y Fb(y)75 4545 y Fu(Store)31 b(the)f(lo)m(w)g(halfw)m(ord)f(from)h (register)g Fk(Rsrc)g Fu(at)h(the)f(p)s(ossibly-unaligned)c Fl(addr)-5 b(ess)7 b Fu(.)75 4758 y Fk(usw)47 b(Rsrc,)f(address)2020 b Fl(Unaligne)-5 b(d)34 b(Stor)-5 b(e)34 b(Wor)-5 b(d)3819 4725 y Fb(y)75 4871 y Fu(Store)31 b(the)f(w)m(ord)g(from)g(register)g Fk(Rsrc)g Fu(at)h(the)f(p)s(ossibly-unaligned)c Fl(addr)-5 b(ess)7 b Fu(.)1920 5656 y(18)p eop %%Page: 19 19 19 18 bop 75 99 a Fm(2.10)112 b(Data)38 b(Mo)m(v)m(emen)m(t)f (Instructions)75 368 y Fk(move)47 b(Rdest,)f(Rsrc)2735 b Fl(Move)3819 335 y Fb(y)75 481 y Fu(Mo)m(v)m(e)32 b(the)f(con)m(ten)m (ts)h(of)f Fk(Rsrc)e Fu(to)i Fk(Rdest)p Fu(.)216 692 y(The)26 b(m)m(ultiply)e(and)h(divide)f(unit)h(pro)s(duces)g(its)h (result)f(in)g(t)m(w)m(o)j(additional)c(registers,)j(hi)e(and)h(lo.)39 b(These)75 805 y(instructions)k(mo)m(v)m(e)j(v)-5 b(alues)44 b(to)h(and)f(from)g(these)h(registers.)84 b(The)44 b(m)m(ultiply)-8 b(,)46 b(divide,)g(and)f(remainder)75 918 y(instructions)27 b(describ)s(ed)g(ab)s(o)m(v)m(e)j(are)f(pseudoinstructions)d(that)j (mak)m(e)h(it)f(app)s(ear)f(as)h(if)f(this)g(unit)f(op)s(erates)75 1031 y(on)j(the)h(general)f(registers)g(and)g(detect)i(error)e (conditions)f(suc)m(h)h(as)g(divide)f(b)m(y)h(zero)h(or)f(o)m(v)m (er\015o)m(w.)75 1242 y Fk(mfhi)47 b(Rdest)2743 b Fl(Move)32 b(F)-7 b(r)i(om)35 b(hi)75 1355 y Fk(mflo)47 b(Rdest)2748 b Fl(Move)32 b(F)-7 b(r)i(om)34 b(lo)75 1468 y Fu(Mo)m(v)m(e)e(the)f (con)m(ten)m(ts)h(of)f(the)f(hi)f(\(lo\))i(register)f(to)h(register)g Fk(Rdest)p Fu(.)75 1679 y Fk(mthi)47 b(Rdest)2845 b Fl(Move)33 b(T)-7 b(o)33 b(hi)75 1792 y Fk(mtlo)47 b(Rdest)2850 b Fl(Move)32 b(T)-7 b(o)33 b(lo)75 1905 y Fu(Mo)m(v)m(e)f(the)f(con)m (ten)m(ts)h(register)e Fk(Rdest)f Fu(to)i(the)g(hi)e(\(lo\))i (register.)216 2116 y(Copro)s(cessors)39 b(ha)m(v)m(e)i(their)e(o)m(wn) h(register)g(sets.)69 b(These)39 b(instructions)f(mo)m(v)m(e)j(v)-5 b(alues)39 b(b)s(et)m(w)m(een)h(these)75 2229 y(registers)30 b(and)g(the)g(CPU's)h(registers.)75 2440 y Fk(mfc)p Fa(z)62 b Fk(Rdest,)47 b(CPsrc)1917 b Fl(Move)32 b(F)-7 b(r)i(om)35 b(Copr)-5 b(o)g(c)g(essor)36 b Fg(z)75 2553 y Fu(Mo)m(v)m(e)c(the)f (con)m(ten)m(ts)h(of)f(copro)s(cessor)f Fg(z)t Fu('s)h(register)f Fk(CPsrc)f Fu(to)i(CPU)f(register)h Fk(Rdest)p Fu(.)75 2764 y Fk(mfc1.d)46 b(Rdest,)g(FRsrc1)1419 b Fl(Move)32 b(Double)g(F)-7 b(r)i(om)34 b(Copr)-5 b(o)g(c)g(essor)36 b(1)3819 2731 y Fb(y)75 2877 y Fu(Mo)m(v)m(e)h(the)e(con)m(ten)m(ts)h (of)f(\015oating)f(p)s(oin)m(t)g(registers)g Fk(FRsrc1)f Fu(and)h Fk(FRsrc1)47 b(+)g(1)34 b Fu(to)i(CPU)e(registers)g Fk(Rdest)75 2990 y Fu(and)c Fk(Rdest)46 b(+)i(1)p Fu(.)75 3201 y Fk(mtc)p Fa(z)62 b Fk(Rsrc,)47 b(CPdest)2019 b Fl(Move)33 b(T)-7 b(o)33 b(Copr)-5 b(o)g(c)g(essor)36 b Fg(z)75 3314 y Fu(Mo)m(v)m(e)c(the)f(con)m(ten)m(ts)h(of)f(CPU)f (register)g Fk(Rsrc)f Fu(to)i(copro)s(cessor)g Fg(z)t Fu('s)g(register)f Fk(CPdest)p Fu(.)75 3557 y Fm(2.11)112 b(Floating)37 b(P)m(oin)m(t)f(Instructions)75 3728 y Fu(The)30 b(MIPS)g(has)h(a)g(\015oating)f(p)s(oin)m(t)g(copro)s(cessor) h(\(n)m(um)m(b)s(ered)f(1\))h(that)h(op)s(erates)f(on)f(single)g (precision)e(\(32-)75 3841 y(bit\))c(and)g(double)f(precision)g (\(64-bit\))i(\015oating)g(p)s(oin)m(t)e(n)m(um)m(b)s(ers.)37 b(This)23 b(copro)s(cessor)i(has)f(its)g(o)m(wn)h(registers,)75 3954 y(whic)m(h)32 b(are)h(n)m(um)m(b)s(ered)f Fk($f0)p Fu({)p Fk($f31)p Fu(.)47 b(Because)35 b(these)e(registers)g(are)h(only) e(32-bits)h(wide,)g(t)m(w)m(o)h(of)f(them)h(are)75 4067 y(required)24 b(to)i(hold)e(doubles.)37 b(T)-8 b(o)26 b(simplify)c(matters,)28 b(\015oating)d(p)s(oin)m(t)g(op)s(erations)g (only)f(use)h(ev)m(en-n)m(um)m(b)s(ered)75 4180 y(registers|including)i (instructions)h(that)j(op)s(erate)g(on)f(single)f(\015oats.)216 4293 y(V)-8 b(alues)27 b(are)g(mo)m(v)m(ed)h(in)e(or)h(out)g(of)g (these)g(registers)g(a)g(w)m(ord)g(\(32-bits\))g(at)h(a)f(time)g(b)m(y) f Fk(lwc1)p Fu(,)h Fk(swc1)p Fu(,)g Fk(mtc1)p Fu(,)75 4406 y(and)40 b Fk(mfc1)g Fu(instructions)f(describ)s(ed)g(ab)s(o)m(v)m (e)j(or)f(b)m(y)g(the)g Fk(l.s)p Fu(,)i Fk(l.d)p Fu(,)g Fk(s.s)p Fu(,)g(and)e Fk(s.d)f Fu(pseudoinstructions)75 4519 y(describ)s(ed)28 b(b)s(elo)m(w.)39 b(The)29 b(\015ag)h(set)h(b)m (y)e(\015oating)h(p)s(oin)m(t)e(comparison)h(op)s(erations)g(is)g(read) h(b)m(y)f(the)h(CPU)f(with)75 4632 y(its)h Fk(bc1t)f Fu(and)h Fk(bc1f)f Fu(instructions.)216 4744 y(In)38 b(all)f(instructions)f(b)s(elo)m(w,)j Fk(FRdest)p Fu(,)g Fk(FRsrc1)p Fu(,)f Fk(FRsrc2)p Fu(,)h(and)f Fk(FRsrc)e Fu(are)j(\015oating)f(p)s(oin)m(t)f(registers)75 4857 y(\(e.g.,)32 b Fk($f2)p Fu(\).)75 5068 y Fk(abs.d)46 b(FRdest,)g(FRsrc)1376 b Fl(Flo)-5 b(ating)35 b(Point)e(A)n(bsolute)f (V)-7 b(alue)32 b(Double)75 5181 y Fk(abs.s)46 b(FRdest,)g(FRsrc)1410 b Fl(Flo)-5 b(ating)34 b(Point)f(A)n(bsolute)g(V)-7 b(alue)32 b(Single)75 5294 y Fu(Compute)f(the)g(absolute)g(v)-5 b(alue)31 b(of)g(the)h(\015oating)f(\015oat)h(double)e(\(single\))g(in) g(register)h Fk(FRsrc)f Fu(and)h(put)f(it)h(in)75 5407 y(register)f Fk(FRdest)p Fu(.)1920 5656 y(19)p eop %%Page: 20 20 20 19 bop 75 99 a Fk(add.d)46 b(FRdest,)g(FRsrc1,)g(FRsrc2)1195 b Fl(Flo)-5 b(ating)34 b(Point)f(A)-5 b(ddition)34 b(Double)75 211 y Fk(add.s)46 b(FRdest,)g(FRsrc1,)g(FRsrc2)1229 b Fl(Flo)-5 b(ating)34 b(Point)f(A)-5 b(ddition)34 b(Single)75 324 y Fu(Compute)28 b(the)g(sum)f(of)h(the)g(\015oating)g(\015oat)h (doubles)d(\(singles\))h(in)g(registers)g Fk(FRsrc1)g Fu(and)g Fk(FRsrc2)f Fu(and)i(put)75 437 y(it)i(in)f(register)h Fk(FRdest)p Fu(.)75 641 y Fk(c.eq.d)46 b(FRsrc1,)g(FRsrc2)1869 b Fl(Comp)-5 b(ar)g(e)35 b(Equal)d(Double)75 754 y Fk(c.eq.s)46 b(FRsrc1,)g(FRsrc2)1902 b Fl(Comp)-5 b(ar)g(e)36 b(Equal)c(Single)75 866 y Fu(Compare)38 b(the)h(\015oating)g(p)s(oin)m(t)e(double)h(in)f (register)i Fk(FRsrc1)d Fu(against)j(the)g(one)g(in)f Fk(FRsrc2)e Fu(and)j(set)g(the)75 979 y(\015oating)30 b(p)s(oin)m(t)g(condition)f(\015ag)h(true)h(if)e(they)h(are)h(equal.)75 1183 y Fk(c.le.d)46 b(FRsrc1,)g(FRsrc2)1426 b Fl(Comp)-5 b(ar)g(e)35 b(L)-5 b(ess)33 b(Than)h(Equal)e(Double)75 1296 y Fk(c.le.s)46 b(FRsrc1,)g(FRsrc2)1460 b Fl(Comp)-5 b(ar)g(e)35 b(L)-5 b(ess)33 b(Than)h(Equal)e(Single)75 1409 y Fu(Compare)38 b(the)h(\015oating)g(p)s(oin)m(t)e(double)h(in)f (register)i Fk(FRsrc1)d Fu(against)j(the)g(one)g(in)f Fk(FRsrc2)e Fu(and)j(set)g(the)75 1522 y(\015oating)30 b(p)s(oin)m(t)g(condition)f(\015ag)h(true)h(if)e(the)h(\014rst)g(is)f (less)h(than)g(or)h(equal)f(to)h(the)f(second.)75 1725 y Fk(c.lt.d)46 b(FRsrc1,)g(FRsrc2)1680 b Fl(Comp)-5 b(ar)g(e)36 b(L)-5 b(ess)33 b(Than)g(Double)75 1838 y Fk(c.lt.s)46 b(FRsrc1,)g(FRsrc2)1714 b Fl(Comp)-5 b(ar)g(e)35 b(L)-5 b(ess)33 b(Than)h(Single)75 1951 y Fu(Compare)k(the)h(\015oating)g(p)s (oin)m(t)e(double)h(in)f(register)i Fk(FRsrc1)d Fu(against)j(the)g(one) g(in)f Fk(FRsrc2)e Fu(and)j(set)g(the)75 2064 y(condition)29 b(\015ag)i(true)f(if)f(the)i(\014rst)e(is)h(less)f(than)i(the)f (second.)75 2267 y Fk(cvt.d.s)46 b(FRdest,)g(FRsrc)1779 b Fl(Convert)34 b(Single)e(to)h(Double)75 2380 y Fk(cvt.d.w)46 b(FRdest,)g(FRsrc)1741 b Fl(Convert)33 b(Inte)-5 b(ger)33 b(to)g(Double)75 2493 y Fu(Con)m(v)m(ert)45 b(the)f(single)e(precision) g(\015oating)h(p)s(oin)m(t)g(n)m(um)m(b)s(er)g(or)g(in)m(teger)h(in)f (register)g Fk(FRsrc)g Fu(to)h(a)g(double)75 2606 y(precision)29 b(n)m(um)m(b)s(er)g(and)g(put)h(it)g(in)f(register)h Fk(FRdest)p Fu(.)75 2809 y Fk(cvt.s.d)46 b(FRdest,)g(FRsrc)1779 b Fl(Convert)34 b(Double)e(to)h(Single)75 2922 y Fk(cvt.s.w)46 b(FRdest,)g(FRsrc)1774 b Fl(Convert)34 b(Inte)-5 b(ger)33 b(to)g(Single)75 3035 y Fu(Con)m(v)m(ert)45 b(the)f(double)e(precision) g(\015oating)h(p)s(oin)m(t)g(n)m(um)m(b)s(er)g(or)g(in)m(teger)h(in)f (register)g Fk(FRsrc)g Fu(to)h(a)g(single)75 3148 y(precision)29 b(n)m(um)m(b)s(er)g(and)g(put)h(it)g(in)f(register)h Fk(FRdest)p Fu(.)75 3351 y Fk(cvt.w.d)46 b(FRdest,)g(FRsrc)1741 b Fl(Convert)33 b(Double)f(to)h(Inte)-5 b(ger)75 3464 y Fk(cvt.w.s)46 b(FRdest,)g(FRsrc)1774 b Fl(Convert)34 b(Single)e(to)h(Inte)-5 b(ger)75 3577 y Fu(Con)m(v)m(ert)29 b(the)e(double)g(or)g(single)g(precision)f(\015oating)h(p)s(oin)m(t)g (n)m(um)m(b)s(er)f(in)h(register)g Fk(FRsrc)f Fu(to)j(an)e(in)m(teger)i (and)75 3690 y(put)h(it)g(in)f(register)h Fk(FRdest)p Fu(.)75 3894 y Fk(div.d)46 b(FRdest,)g(FRsrc1,)g(FRsrc2)1280 b Fl(Flo)-5 b(ating)34 b(Point)f(Divide)f(Double)75 4007 y Fk(div.s)46 b(FRdest,)g(FRsrc1,)g(FRsrc2)1314 b Fl(Flo)-5 b(ating)34 b(Point)f(Divide)f(Single)75 4119 y Fu(Compute)27 b(the)h(quotien)m(t)g(of)g(the)g(\015oating)g(\015oat)h(doubles)d (\(singles\))h(in)g(registers)g Fk(FRsrc1)f Fu(and)h Fk(FRsrc2)g Fu(and)75 4232 y(put)j(it)g(in)f(register)h Fk(FRdest)p Fu(.)75 4436 y Fk(l.d)47 b(FRdest,)f(address)1708 b Fl(L)-5 b(o)g(ad)35 b(Flo)-5 b(ating)34 b(Point)f(Double)3819 4403 y Fb(y)75 4549 y Fk(l.s)47 b(FRdest,)f(address)1742 b Fl(L)-5 b(o)g(ad)35 b(Flo)-5 b(ating)34 b(Point)f(Single)3819 4516 y Fb(y)75 4662 y Fu(Load)e(the)f(\015oating)g(\015oat)h(double)e (\(single\))h(at)h Fk(address)e Fu(in)m(to)h(register)g Fk(FRdest)p Fu(.)75 4865 y Fk(mov.d)46 b(FRdest,)g(FRsrc)1753 b Fl(Move)32 b(Flo)-5 b(ating)34 b(Point)f(Double)75 4978 y Fk(mov.s)46 b(FRdest,)g(FRsrc)1787 b Fl(Move)32 b(Flo)-5 b(ating)34 b(Point)f(Single)75 5091 y Fu(Mo)m(v)m(e)f(the)f (\015oating)f(\015oat)h(double)e(\(single\))h(from)g(register)g Fk(FRsrc)f Fu(to)i(register)f Fk(FRdest)p Fu(.)75 5294 y Fk(mul.d)46 b(FRdest,)g(FRsrc1,)g(FRsrc2)1209 b Fl(Flo)-5 b(ating)34 b(Point)f(Multiply)g(Double)75 5407 y Fk(mul.s)46 b(FRdest,)g(FRsrc1,)g(FRsrc2)1243 b Fl(Flo)-5 b(ating)34 b(Point)f(Multiply)g(Single)1920 5656 y Fu(20)p eop %%Page: 21 21 21 20 bop 75 99 a Fu(Compute)29 b(the)g(pro)s(duct)f(of)h(the)g (\015oating)g(\015oat)h(doubles)d(\(singles\))i(in)f(registers)g Fk(FRsrc1)g Fu(and)g Fk(FRsrc2)g Fu(and)75 211 y(put)i(it)g(in)f (register)h Fk(FRdest)p Fu(.)75 424 y Fk(neg.d)46 b(FRdest,)g(FRsrc) 2304 b Fl(Ne)-5 b(gate)32 b(Double)75 537 y Fk(neg.s)46 b(FRdest,)g(FRsrc)2337 b Fl(Ne)-5 b(gate)33 b(Single)75 650 y Fu(Negate)g(the)d(\015oating)g(p)s(oin)m(t)g(double)f(\(single\)) g(in)h(register)g Fk(FRsrc)f Fu(and)g(put)h(it)g(in)f(register)h Fk(FRdest)p Fu(.)75 862 y Fk(s.d)47 b(FRdest,)f(address)1692 b Fl(Stor)-5 b(e)34 b(Flo)-5 b(ating)34 b(Point)f(Double)3819 829 y Fb(y)75 975 y Fk(s.s)47 b(FRdest,)f(address)1726 b Fl(Stor)-5 b(e)34 b(Flo)-5 b(ating)34 b(Point)f(Single)3819 942 y Fb(y)75 1088 y Fu(Store)e(the)f(\015oating)g(\015oat)i(double)c (\(single\))i(in)f(register)i Fk(FRdest)d Fu(at)j Fk(address)p Fu(.)75 1301 y Fk(sub.d)46 b(FRdest,)g(FRsrc1,)g(FRsrc2)1210 b Fl(Flo)-5 b(ating)35 b(Point)e(Subtr)-5 b(act)33 b(Double)75 1414 y Fk(sub.s)46 b(FRdest,)g(FRsrc1,)g(FRsrc2)1244 b Fl(Flo)-5 b(ating)35 b(Point)d(Subtr)-5 b(act)34 b(Single)75 1526 y Fu(Compute)j(the)h(di\013erence)f(of)g(the)h(\015oating)g (\015oat)g(doubles)e(\(singles\))g(in)h(registers)g Fk(FRsrc1)f Fu(and)h Fk(FRsrc2)75 1639 y Fu(and)30 b(put)f(it)h(in)f(register)i Fk(FRdest)p Fu(.)75 1883 y Fm(2.12)112 b(Exception)37 b(and)h(T)-9 b(rap)38 b(Instructions)75 2154 y Fk(rfe)2707 b Fl(R)-5 b(eturn)34 b(F)-7 b(r)i(om)34 b(Exc)-5 b(eption)75 2267 y Fu(Restore)31 b(the)g(Status)f(register.)75 2480 y Fk(syscall)2970 b Fl(System)33 b(Cal)5 b(l)75 2592 y Fu(Register)31 b Fk($v0)e Fu(con)m(tains)i(the)f(n)m(um)m(b)s(er)f (of)i(the)f(system)h(call)f(\(see)h(T)-8 b(able)30 b(1\))h(pro)m(vided) e(b)m(y)h(SPIM.)75 2805 y Fk(break)46 b(n)3223 b Fl(Br)-5 b(e)g(ak)75 2918 y Fu(Cause)30 b(exception)h Fg(n)p Fu(.)40 b(Exception)30 b(1)h(is)e(reserv)m(ed)i(for)f(the)g(debugger.)75 3130 y Fk(nop)3124 b Fl(No)32 b(op)-5 b(er)g(ation)75 3243 y Fu(Do)31 b(nothing.)75 3530 y Fs(3)135 b(Memory)45 b(Usage)75 3733 y Fu(The)37 b(organization)h(of)g(memory)g(in)e(MIPS)i (systems)f(is)g(con)m(v)m(en)m(tional.)64 b(A)38 b(program's)g(address) f(space)h(is)75 3846 y(comp)s(osed)30 b(of)h(three)f(parts)g(\(see)i (Figure)e(5\).)216 3959 y(A)m(t)38 b(the)g(b)s(ottom)f(of)h(the)f(user) g(address)f(space)i(\(0x400000\))j(is)36 b(the)h(text)i(segmen)m(t,)h (whic)m(h)c(holds)g(the)75 4071 y(instructions)28 b(for)i(a)h(program.) 216 4184 y(Ab)s(o)m(v)m(e)g(the)f(text)h(segmen)m(t)g(is)e(the)i(data)f (segmen)m(t)h(\(starting)g(at)f(0x10000000\),)35 b(whic)m(h)29 b(is)g(divided)e(in)m(to)75 4297 y(t)m(w)m(o)37 b(parts.)56 b(The)36 b(static)g(data)g(p)s(ortion)f(con)m(tains)h(ob)5 b(jects)36 b(whose)g(size)f(and)g(address)g(are)h(kno)m(wn)f(to)i(the) 75 4410 y(compiler)29 b(and)h(link)m(er.)40 b(Immediately)29 b(ab)s(o)m(v)m(e)j(these)f(ob)5 b(jects)32 b(is)d(dynamic)h(data.)42 b(As)30 b(a)h(program)g(allo)s(cates)75 4523 y(space)c(dynamically)d (\(i.e.,)k(b)m(y)e Fk(malloc)p Fu(\),)g(the)g Fk(sbrk)g Fu(system)g(call)g(mo)m(v)m(es)h(the)g(top)f(of)h(the)f(data)h(segmen)m (t)h(up.)216 4636 y(The)23 b(program)h(stac)m(k)h(resides)e(at)h(the)g (top)g(of)g(the)g(address)f(space)h(\(0x7\013\013\013f)7 b(\).)40 b(It)24 b(gro)m(ws)g(do)m(wn,)h(to)m(w)m(ards)75 4749 y(the)31 b(data)g(segmen)m(t.)75 5035 y Fs(4)135 b(Calling)46 b(Con)l(v)l(en)l(tion)75 5238 y Fu(The)37 b(calling)f(con)m(v)m(en)m(tion)i(describ)s(ed)d(in)h(this)g(section)i (is)e(the)i(one)f(used)g(b)m(y)g Fl(gc)-5 b(c)5 b Fu(,)39 b(not)e(the)h(nativ)m(e)f(MIPS)75 5351 y(compiler,)29 b(whic)m(h)g(uses)h(a)h(more)g(complex)f(con)m(v)m(en)m(tion)h(that)g (is)e(sligh)m(tly)g(faster.)1920 5656 y(21)p eop %%Page: 22 22 22 21 bop 1101 7 a 13640500 18945146 7038648 16511221 25852231 42297671 startTexFig 1101 7 a %%BeginDocument: mem.id %!PS-Adobe-2.0 EPSF-1.2 %%DocumentFonts: Helvetica-Bold %%Pages: 1 %%BoundingBox: 107 251 393 643 %%EndComments /IdrawDict 51 dict def IdrawDict begin /reencodeISO { dup dup findfont dup length dict begin { 1 index /FID ne { def }{ pop pop } ifelse } forall /Encoding ISOLatin1Encoding def currentdict end definefont } def /ISOLatin1Encoding [ /.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/quoteright /parenleft/parenright/asterisk/plus/comma/minus/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/quoteleft/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/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine /guillemotright/onequarter/onehalf/threequarters/questiondown /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis /yacute/thorn/ydieresis ] def /Helvetica-Bold reencodeISO def /arrowHeight 8 def /arrowWidth 4 def /none null def /numGraphicParameters 17 def /stringLimit 65535 def /Begin { save numGraphicParameters dict begin } def /End { end restore } def /SetB { dup type /nulltype eq { pop false /brushRightArrow idef false /brushLeftArrow idef true /brushNone idef } { /brushDashOffset idef /brushDashArray idef 0 ne /brushRightArrow idef 0 ne /brushLeftArrow idef /brushWidth idef false /brushNone idef } ifelse } def /SetCFg { /fgblue idef /fggreen idef /fgred idef } def /SetCBg { /bgblue idef /bggreen idef /bgred idef } def /SetF { /printSize idef /printFont idef } def /SetP { dup type /nulltype eq { pop true /patternNone idef } { dup -1 eq { /patternGrayLevel idef /patternString idef } { /patternGrayLevel idef } ifelse false /patternNone idef } ifelse } def /BSpl { 0 begin storexyn newpath n 1 gt { 0 0 0 0 0 0 1 1 true subspline n 2 gt { 0 0 0 0 1 1 2 2 false subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline } if n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Circ { newpath 0 360 arc patternNone not { ifill } if brushNone not { istroke } if } def /CBSpl { 0 begin dup 2 gt { storexyn newpath n 1 sub dup 0 0 1 1 2 2 true subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline n 2 sub dup n 1 sub dup 0 0 1 1 false subspline patternNone not { ifill } if brushNone not { istroke } if } { Poly } ifelse end } dup 0 4 dict put def /Elli { 0 begin newpath 4 2 roll translate scale 0 0 1 0 360 arc patternNone not { ifill } if brushNone not { istroke } if end } dup 0 1 dict put def /Line { 0 begin 2 storexyn newpath x 0 get y 0 get moveto x 1 get y 1 get lineto brushNone not { istroke } if 0 0 1 1 leftarrow 0 0 1 1 rightarrow end } dup 0 4 dict put def /MLine { 0 begin storexyn newpath n 1 gt { x 0 get y 0 get moveto 1 1 n 1 sub { /i exch def x i get y i get lineto } for patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Poly { 3 1 roll newpath moveto -1 add { lineto } repeat closepath patternNone not { ifill } if brushNone not { istroke } if } def /Rect { 0 begin /t exch def /r exch def /b exch def /l exch def newpath l b moveto l t lineto r t lineto r b lineto closepath patternNone not { ifill } if brushNone not { istroke } if end } dup 0 4 dict put def /Text { ishow } def /idef { dup where { pop pop pop } { exch def } ifelse } def /ifill { 0 begin gsave patternGrayLevel -1 ne { fgred bgred fgred sub patternGrayLevel mul add fggreen bggreen fggreen sub patternGrayLevel mul add fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor eofill } { eoclip originalCTM setmatrix pathbbox /t exch def /r exch def /b exch def /l exch def /w r l sub ceiling cvi def /h t b sub ceiling cvi def /imageByteWidth w 8 div ceiling cvi def /imageHeight h def bgred bggreen bgblue setrgbcolor eofill fgred fggreen fgblue setrgbcolor w 0 gt h 0 gt and { l b translate w h scale w h true [w 0 0 h neg 0 h] { patternproc } imagemask } if } ifelse grestore end } dup 0 8 dict put def /istroke { gsave brushDashOffset -1 eq { [] 0 setdash 1 setgray } { brushDashArray brushDashOffset setdash fgred fggreen fgblue setrgbcolor } ifelse brushWidth setlinewidth originalCTM setmatrix stroke grestore } def /ishow { 0 begin gsave fgred fggreen fgblue setrgbcolor printFont printSize scalefont setfont /descender 0 printFont /FontBBox get 1 get printFont /FontMatrix get transform exch pop def /vertoffset 1 printSize sub descender sub def { 0 vertoffset moveto show /vertoffset vertoffset printSize sub def } forall grestore end } dup 0 2 dict put def /patternproc { 0 begin /patternByteLength patternString length def /patternHeight patternByteLength 8 mul sqrt cvi def /patternWidth patternHeight def /patternByteWidth patternWidth 8 idiv def /imageByteMaxLength imageByteWidth imageHeight mul stringLimit patternByteWidth sub min def /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv patternHeight mul patternHeight max def /imageHeight imageHeight imageMaxHeight sub store /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def 0 1 imageMaxHeight 1 sub { /y exch def /patternRow y patternByteWidth mul patternByteLength mod def /patternRowString patternString patternRow patternByteWidth getinterval def /imageRow y imageByteWidth mul def 0 patternByteWidth imageByteWidth 1 sub { /x exch def imageString imageRow x add patternRowString putinterval } for } for imageString end } dup 0 12 dict put def /min { dup 3 2 roll dup 4 3 roll lt { exch } if pop } def /max { dup 3 2 roll dup 4 3 roll gt { exch } if pop } def /arrowhead { 0 begin transform originalCTM itransform /taily exch def /tailx exch def transform originalCTM itransform /tipy exch def /tipx exch def /dy tipy taily sub def /dx tipx tailx sub def /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def gsave originalCTM setmatrix tipx tipy translate angle rotate newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath patternNone not { originalCTM setmatrix /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul arrowWidth div def /padtail brushWidth 2 div def tipx tipy translate angle rotate padtip 0 translate arrowHeight padtip add padtail add arrowHeight div dup scale arrowheadpath ifill } if brushNone not { originalCTM setmatrix tipx tipy translate angle rotate arrowheadpath istroke } if grestore end } dup 0 9 dict put def /arrowheadpath { newpath 0 0 moveto arrowHeight neg arrowWidth 2 div lineto arrowHeight neg arrowWidth 2 div neg lineto closepath } def /leftarrow { 0 begin y exch get /taily exch def x exch get /tailx exch def y exch get /tipy exch def x exch get /tipx exch def brushLeftArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /rightarrow { 0 begin y exch get /tipy exch def x exch get /tipx exch def y exch get /taily exch def x exch get /tailx exch def brushRightArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /midpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 x1 add 2 div y0 y1 add 2 div end } dup 0 4 dict put def /thirdpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 2 mul x1 add 3 div y0 2 mul y1 add 3 div end } dup 0 4 dict put def /subspline { 0 begin /movetoNeeded exch def y exch get /y3 exch def x exch get /x3 exch def y exch get /y2 exch def x exch get /x2 exch def y exch get /y1 exch def x exch get /x1 exch def y exch get /y0 exch def x exch get /x0 exch def x1 y1 x2 y2 thirdpoint /p1y exch def /p1x exch def x2 y2 x1 y1 thirdpoint /p2y exch def /p2x exch def x1 y1 x0 y0 thirdpoint p1x p1y midpoint /p0y exch def /p0x exch def x2 y2 x3 y3 thirdpoint p2x p2y midpoint /p3y exch def /p3x exch def movetoNeeded { p0x p0y moveto } if p1x p1y p2x p2y p3x p3y curveto end } dup 0 17 dict put def /storexyn { /n exch def /y n array def /x n array def n 1 sub -1 0 { /i exch def y i 3 2 roll put x i 3 2 roll put } for } def %%EndProlog %I Idraw 9 Grid 8 %%Page: 1 1 Begin %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.923077 0 0 0.923077 0 0 ] concat /originalCTM matrix currentmatrix def Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 97 131 ] concat %I 93 145 326 560 Rect End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 97 131 ] concat %I 93 491 326 491 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 97 131 ] concat %I 93 180 326 180 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 97 131 ] concat %I 93 249 326 249 Line End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 97 131 ] concat %I 93 318 326 318 Line End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.75 SetP %I t [ 1 0 0 1 97 131 ] concat %I 93 145 326 180 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 278 294 ] concat %I [ (Reserved) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 264.5 354 ] concat %I [ (Text Segment) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 264 414 ] concat %I [ (Data Segment) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 260.5 656 ] concat %I [ (Stack Segment) ] Text End Begin %I Line %I b 65535 2 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.75 SetP %I t [ 1 0 0 1 109.5 131 ] concat %I 197 491 197 439 Line End Begin %I Line %I b 65535 2 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.75 SetP %I t [ 1 0 0 1 101.5 131 ] concat %I 205 318 205 361 Line End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 120 328 ] concat %I [ (0x400000) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 120 691 ] concat %I [ (0x7fffffff) ] Text End End %I eop showpage %%Trailer end %%EndDocument endTexFig 1392 2603 a Fu(Figure)29 b(5:)41 b(La)m(y)m(out)32 b(of)f(memory)-8 b(.)216 2878 y(Figure)36 b(6)g(sho)m(ws)g(a)h(diagram)f(of)g(a)h(stac)m (k)g(frame.)59 b(A)36 b(frame)g(consists)g(of)g(the)h(memory)f(b)s(et)m (w)m(een)h(the)75 2991 y(frame)e(p)s(oin)m(ter)f(\()p Fk($fp)p Fu(\),)h(whic)m(h)f(p)s(oin)m(ts)g(to)h(the)g(w)m(ord)g (immediately)e(after)i(the)g(last)g(argumen)m(t)g(passed)f(on)75 3104 y(the)g(stac)m(k,)i(and)d(the)h(stac)m(k)h(p)s(oin)m(ter)d(\()p Fk($sp)p Fu(\),)j(whic)m(h)d(p)s(oin)m(ts)h(to)h(the)g(last)f(w)m(ord)g (in)g(the)g(frame.)51 b(As)33 b(t)m(ypical)75 3217 y(of)g(Unix)f (systems,)h(the)g(stac)m(k)i(gro)m(ws)e(do)m(wn)f(from)h(higher)e (memory)i(addresses,)g(so)g(the)g(frame)g(p)s(oin)m(ter)f(is)75 3330 y(ab)s(o)m(v)m(e)g(stac)m(k)f(p)s(oin)m(ter.)216 3443 y(The)f(follo)m(wing)f(steps)h(are)h(necessary)g(to)g(e\013ect)h (a)e(call:)186 3630 y(1.)46 b(P)m(ass)32 b(the)g(argumen)m(ts.)44 b(By)32 b(con)m(v)m(en)m(tion,)h(the)f(\014rst)f(four)f(argumen)m(ts)i (are)g(passed)f(in)f(registers)h Fk($a0)p Fu({)302 3743 y Fk($a3)22 b Fu(\(though)g(simpler)e(compilers)h(ma)m(y)i(c)m(ho)s (ose)h(to)f(ignore)f(this)g(con)m(v)m(en)m(tion)h(and)f(pass)g(all)g (argumen)m(ts)302 3856 y(via)30 b(the)h(stac)m(k\).)42 b(The)30 b(remaining)f(argumen)m(ts)h(are)h(pushed)e(on)h(the)h(stac)m (k.)186 4044 y(2.)46 b(Sa)m(v)m(e)30 b(the)f(caller-sa)m(v)m(ed)h (registers.)40 b(This)27 b(includes)g(registers)h Fk($t0)p Fu({)p Fk($t9)p Fu(,)g(if)g(they)h(con)m(tain)g(liv)m(e)g(v)-5 b(alues)302 4157 y(at)31 b(the)g(call)f(site.)186 4344 y(3.)46 b(Execute)31 b(a)g Fk(jal)f Fu(instruction.)216 4532 y(Within)f(the)h(called)g(routine,)g(the)g(follo)m(wing)f(steps)h (are)h(necessary:)186 4720 y(1.)46 b(Establish)28 b(the)j(stac)m(k)h (frame)e(b)m(y)g(subtracting)g(the)h(frame)f(size)g(from)g(the)h(stac)m (k)g(p)s(oin)m(ter.)186 4907 y(2.)46 b(Sa)m(v)m(e)37 b(the)f(callee-sa)m(v)m(ed)h(registers)e(in)g(the)h(frame.)56 b(Register)36 b Fk($fp)f Fu(is)f(alw)m(a)m(ys)i(sa)m(v)m(ed.)58 b(Register)36 b Fk($ra)302 5020 y Fu(needs)d(to)g(b)s(e)g(sa)m(v)m(ed)g (if)f(the)h(routine)f(itself)g(mak)m(es)i(calls.)47 b(An)m(y)33 b(of)g(the)g(registers)f Fk($s0)p Fu({)p Fk($s7)g Fu(that)i(are)302 5133 y(used)c(b)m(y)g(the)h(callee)f(need)g(to)h(b)s(e)f(sa)m(v)m(ed.) 186 5321 y(3.)46 b(Establish)28 b(the)j(frame)f(p)s(oin)m(ter)g(b)m(y)g (adding)f(the)i(stac)m(k)g(frame)g(size)f(-)h(4)f(to)h(the)g(address)e (in)g Fk($sp)p Fu(.)1920 5656 y(22)p eop %%Page: 23 23 23 22 bop 669 1344 a 20460754 18945146 6249267 17695293 31575244 40982036 startTexFig 669 1344 a %%BeginDocument: stack-frame.id %!PS-Adobe-2.0 EPSF-1.2 %%Creator: idraw %%DocumentFonts: Helvetica-Bold %%Pages: 1 %%BoundingBox: 95 269 480 623 %%EndComments %%BeginIdrawPrologue /arrowhead { 0 begin transform originalCTM itransform /taily exch def /tailx exch def transform originalCTM itransform /tipy exch def /tipx exch def /dy tipy taily sub def /dx tipx tailx sub def /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def gsave originalCTM setmatrix tipx tipy translate angle rotate newpath arrowHeight neg arrowWidth 2 div moveto 0 0 lineto arrowHeight neg arrowWidth 2 div neg lineto patternNone not { originalCTM setmatrix /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul arrowWidth div def /padtail brushWidth 2 div def tipx tipy translate angle rotate padtip 0 translate arrowHeight padtip add padtail add arrowHeight div dup scale arrowheadpath ifill } if brushNone not { originalCTM setmatrix tipx tipy translate angle rotate arrowheadpath istroke } if grestore end } dup 0 9 dict put def /arrowheadpath { newpath arrowHeight neg arrowWidth 2 div moveto 0 0 lineto arrowHeight neg arrowWidth 2 div neg lineto } def /leftarrow { 0 begin y exch get /taily exch def x exch get /tailx exch def y exch get /tipy exch def x exch get /tipx exch def brushLeftArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /rightarrow { 0 begin y exch get /tipy exch def x exch get /tipx exch def y exch get /taily exch def x exch get /tailx exch def brushRightArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def %%EndIdrawPrologue /arrowHeight 10 def /arrowWidth 5 def /IdrawDict 51 dict def IdrawDict begin /reencodeISO { dup dup findfont dup length dict begin { 1 index /FID ne { def }{ pop pop } ifelse } forall /Encoding ISOLatin1Encoding def currentdict end definefont } def /ISOLatin1Encoding [ /.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/quoteright /parenleft/parenright/asterisk/plus/comma/minus/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/quoteleft/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/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine /guillemotright/onequarter/onehalf/threequarters/questiondown /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis /yacute/thorn/ydieresis ] def /Helvetica-Bold reencodeISO def /none null def /numGraphicParameters 17 def /stringLimit 65535 def /Begin { save numGraphicParameters dict begin } def /End { end restore } def /SetB { dup type /nulltype eq { pop false /brushRightArrow idef false /brushLeftArrow idef true /brushNone idef } { /brushDashOffset idef /brushDashArray idef 0 ne /brushRightArrow idef 0 ne /brushLeftArrow idef /brushWidth idef false /brushNone idef } ifelse } def /SetCFg { /fgblue idef /fggreen idef /fgred idef } def /SetCBg { /bgblue idef /bggreen idef /bgred idef } def /SetF { /printSize idef /printFont idef } def /SetP { dup type /nulltype eq { pop true /patternNone idef } { dup -1 eq { /patternGrayLevel idef /patternString idef } { /patternGrayLevel idef } ifelse false /patternNone idef } ifelse } def /BSpl { 0 begin storexyn newpath n 1 gt { 0 0 0 0 0 0 1 1 true subspline n 2 gt { 0 0 0 0 1 1 2 2 false subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline } if n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Circ { newpath 0 360 arc patternNone not { ifill } if brushNone not { istroke } if } def /CBSpl { 0 begin dup 2 gt { storexyn newpath n 1 sub dup 0 0 1 1 2 2 true subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline n 2 sub dup n 1 sub dup 0 0 1 1 false subspline patternNone not { ifill } if brushNone not { istroke } if } { Poly } ifelse end } dup 0 4 dict put def /Elli { 0 begin newpath 4 2 roll translate scale 0 0 1 0 360 arc patternNone not { ifill } if brushNone not { istroke } if end } dup 0 1 dict put def /Line { 0 begin 2 storexyn newpath x 0 get y 0 get moveto x 1 get y 1 get lineto brushNone not { istroke } if 0 0 1 1 leftarrow 0 0 1 1 rightarrow end } dup 0 4 dict put def /MLine { 0 begin storexyn newpath n 1 gt { x 0 get y 0 get moveto 1 1 n 1 sub { /i exch def x i get y i get lineto } for patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Poly { 3 1 roll newpath moveto -1 add { lineto } repeat closepath patternNone not { ifill } if brushNone not { istroke } if } def /Rect { 0 begin /t exch def /r exch def /b exch def /l exch def newpath l b moveto l t lineto r t lineto r b lineto closepath patternNone not { ifill } if brushNone not { istroke } if end } dup 0 4 dict put def /Text { ishow } def /idef { dup where { pop pop pop } { exch def } ifelse } def /ifill { 0 begin gsave patternGrayLevel -1 ne { fgred bgred fgred sub patternGrayLevel mul add fggreen bggreen fggreen sub patternGrayLevel mul add fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor eofill } { eoclip originalCTM setmatrix pathbbox /t exch def /r exch def /b exch def /l exch def /w r l sub ceiling cvi def /h t b sub ceiling cvi def /imageByteWidth w 8 div ceiling cvi def /imageHeight h def bgred bggreen bgblue setrgbcolor eofill fgred fggreen fgblue setrgbcolor w 0 gt h 0 gt and { l w add b translate w neg h scale w h true [w 0 0 h neg 0 h] { patternproc } imagemask } if } ifelse grestore end } dup 0 8 dict put def /istroke { gsave brushDashOffset -1 eq { [] 0 setdash 1 setgray } { brushDashArray brushDashOffset setdash fgred fggreen fgblue setrgbcolor } ifelse brushWidth setlinewidth originalCTM setmatrix stroke grestore } def /ishow { 0 begin gsave fgred fggreen fgblue setrgbcolor /fontDict printFont printSize scalefont dup setfont def /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end transform exch pop def /vertoffset 1 printSize sub descender sub def { 0 vertoffset moveto show /vertoffset vertoffset printSize sub def } forall grestore end } dup 0 3 dict put def /patternproc { 0 begin /patternByteLength patternString length def /patternHeight patternByteLength 8 mul sqrt cvi def /patternWidth patternHeight def /patternByteWidth patternWidth 8 idiv def /imageByteMaxLength imageByteWidth imageHeight mul stringLimit patternByteWidth sub min def /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv patternHeight mul patternHeight max def /imageHeight imageHeight imageMaxHeight sub store /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def 0 1 imageMaxHeight 1 sub { /y exch def /patternRow y patternByteWidth mul patternByteLength mod def /patternRowString patternString patternRow patternByteWidth getinterval def /imageRow y imageByteWidth mul def 0 patternByteWidth imageByteWidth 1 sub { /x exch def imageString imageRow x add patternRowString putinterval } for } for imageString end } dup 0 12 dict put def /min { dup 3 2 roll dup 4 3 roll lt { exch } if pop } def /max { dup 3 2 roll dup 4 3 roll gt { exch } if pop } def /midpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 x1 add 2 div y0 y1 add 2 div end } dup 0 4 dict put def /thirdpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 2 mul x1 add 3 div y0 2 mul y1 add 3 div end } dup 0 4 dict put def /subspline { 0 begin /movetoNeeded exch def y exch get /y3 exch def x exch get /x3 exch def y exch get /y2 exch def x exch get /x2 exch def y exch get /y1 exch def x exch get /x1 exch def y exch get /y0 exch def x exch get /x0 exch def x1 y1 x2 y2 thirdpoint /p1y exch def /p1x exch def x2 y2 x1 y1 thirdpoint /p2y exch def /p2x exch def x1 y1 x0 y0 thirdpoint p1x p1y midpoint /p0y exch def /p0x exch def x2 y2 x3 y3 thirdpoint p2x p2y midpoint /p3y exch def /p3x exch def movetoNeeded { p0x p0y moveto } if p1x p1y p2x p2y p3x p3y curveto end } dup 0 17 dict put def /storexyn { /n exch def /y n array def /x n array def n 1 sub -1 0 { /i exch def y i 3 2 roll put x i 3 2 roll put } for } def /SSten { fgred fggreen fgblue setrgbcolor dup true exch 1 0 0 -1 0 6 -1 roll matrix astore } def /FSten { dup 3 -1 roll dup 4 1 roll exch newpath 0 0 moveto dup 0 exch lineto exch dup 3 1 roll exch lineto 0 lineto closepath bgred bggreen bgblue setrgbcolor eofill SSten } def /Rast { exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore } def %%EndProlog %I Idraw 10 Grid 8 8 %%Page: 1 1 Begin %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.923077 0 0 0.923077 0 0 ] concat /originalCTM matrix currentmatrix def Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 97 131 ] concat %I 136 163 300 542 Rect End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 97 131 ] concat %I 136 517 300 517 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 97 106 ] concat %I 136 517 300 517 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 97 81 ] concat %I 136 517 300 517 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 98 -30 ] concat %I 136 517 300 517 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 98 -116 ] concat %I 136 517 300 517 Line %I 1 End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 272.5 492 ] concat %I [ ( .) ( .) ( .) (local variables) ( .) ( .) ( .) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 275 397 ] concat %I [ ( .) ( .) ( .) (dynamic area) ( .) ( .) ( .) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 458 561 ] concat %I [ (memory) (addresses) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -2.58933 62.1439 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 111.267 576.807 ] concat %I [ ($fp) ] Text End Begin %I Line %I b 65535 2 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 95.2673 116.807 ] concat %I 50 456 136 456 Line %I 1 End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -6.04177 12.0835 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 112 294 ] concat %I [ ($sp) ] Text End Begin %I Line %I b 65535 2 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 97 136 ] concat %I 50 154 136 154 Line %I 1 End End %I eop Begin %I Line %I b 65535 2 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 97 131 ] concat %I 387 439 387 473 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 95.2673 53.277 ] concat %I 136 517 300 517 Line %I 1 End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -4.00479 0 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 286.005 615.618 ] concat %I [ (argument 5) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 286.005 639 ] concat %I [ (argument 6) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 313.505 664.981 ] concat %I [ (...) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 276.505 587.232 ] concat %I [ (arguments 1-4) ] Text End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--12-*-75-* Helvetica-Bold 12 SetF %I t [ 1 0 0 1 268.5 587 ] concat %I [ ( ) ( .) ( .) (saved registers) ( .) ( .) ( .) ] Text End End %I eop showpage %%Trailer end %%EndDocument endTexFig 75 3940 a Fu(Figure)24 b(6:)38 b(La)m(y)m(out)26 b(of)f(a)f(stac)m(k)i (frame.)39 b(The)24 b(frame)g(p)s(oin)m(ter)g(p)s(oin)m(ts)f(just)h(b)s (elo)m(w)g(the)g(last)h(argumen)m(t)f(passed)75 4053 y(on)30 b(the)h(stac)m(k.)42 b(The)30 b(stac)m(k)i(p)s(oin)m(ter)d(p)s (oin)m(ts)g(to)i(the)g(last)f(w)m(ord)g(in)f(the)i(frame.)1920 5656 y(23)p eop %%Page: 24 24 24 23 bop 216 99 a Fu(Finally)-8 b(,)27 b(to)h(return)f(from)g(a)h (call,)g(a)g(function)e(places)h(the)h(returned)f(v)-5 b(alue)27 b(in)m(to)g Fk($v0)g Fu(and)g(executes)i(the)75 211 y(follo)m(wing)g(steps:)186 399 y(1.)46 b(Restore)28 b(an)m(y)f(callee-sa)m(v)m(ed)h(registers)e(that)h(w)m(ere)g(sa)m(v)m (ed)h(up)s(on)d(en)m(try)h(\(including)e(the)i(frame)h(p)s(oin)m(ter) 302 512 y Fk($fp)p Fu(\).)186 700 y(2.)46 b(P)m(op)31 b(the)f(stac)m(k)i(frame)f(b)m(y)f(adding)f(the)h(frame)h(size)f(to)h Fk($sp)p Fu(.)186 887 y(3.)46 b(Return)30 b(b)m(y)g(jumping)e(to)j(the) g(address)e(in)g(register)i Fk($ra)p Fu(.)75 1174 y Fs(5)135 b(Input)44 b(and)h(Output)75 1377 y Fu(In)c(addition)e(to)j(sim)m (ulating)d(the)j(basic)f(op)s(eration)f(of)i(the)f(CPU)g(and)g(op)s (erating)g(system,)j(SPIM)d(also)75 1489 y(sim)m(ulates)24 b(a)i(memory-mapp)s(ed)e(terminal)g(connected)i(to)g(the)f(mac)m(hine.) 39 b(When)25 b(a)g(program)g(is)g(\\running,")75 1602 y(SPIM)j(connects)i(its)e(o)m(wn)h(terminal)e(\(or)i(a)h(separate)f (console)h(windo)m(w)d(in)g Fk(xspim)p Fu(\))h(to)i(the)f(pro)s (cessor.)39 b(The)75 1715 y(program)34 b(can)h(read)g(c)m(haracters)g (that)h(y)m(ou)e(t)m(yp)s(e)h(while)e(the)h(pro)s(cessor)h(is)e (running.)51 b(Similarly)-8 b(,)32 b(if)h(SPIM)75 1828 y(executes)f(instructions)d(to)j(write)f(c)m(haracters)i(to)e(the)h (terminal,)e(the)h(c)m(haracters)i(will)c(app)s(ear)h(on)h(SPIM's)75 1941 y(terminal)38 b(or)i(console)g(windo)m(w.)67 b(One)39 b(exception)h(to)g(this)f(rule)f(is)h(con)m(trol-C:)h(it)g(is)e(not)i (passed)f(to)i(the)75 2054 y(pro)s(cessor,)26 b(but)f(instead)g(causes) h(SPIM)f(to)h(stop)g(sim)m(ulating)d(and)i(return)f(to)j(command)e(mo)s (de.)38 b(When)26 b(the)75 2167 y(pro)s(cessor)g(stops)g(executing)h (\(for)g(example,)g(b)s(ecause)f(y)m(ou)h(t)m(yp)s(ed)f(con)m(trol-C)h (or)g(b)s(ecause)f(the)h(mac)m(hine)f(hit)75 2280 y(a)33 b(breakp)s(oin)m(t\),)h(the)f(terminal)e(is)h(reconnected)i(to)g(SPIM)e (so)h(y)m(ou)h(can)f(t)m(yp)s(e)g(SPIM)g(commands.)48 b(T)-8 b(o)33 b(use)75 2393 y(memory-mapp)s(ed)c(IO,)h Fk(spim)g Fu(or)g Fk(xspim)f Fu(m)m(ust)h(b)s(e)g(started)h(with)e(the) h Fk(-mapped)p 2896 2393 29 4 v 33 w(io)f Fu(\015ag.)216 2506 y(The)35 b(terminal)f(device)i(consists)f(of)g(t)m(w)m(o)i(indep)s (enden)m(t)d(units:)49 b(a)36 b Fl(r)-5 b(e)g(c)g(eiver)46 b Fu(and)35 b(a)h Fl(tr)-5 b(ansmitter)10 b Fu(.)58 b(The)75 2619 y(receiv)m(er)28 b(unit)e(reads)h(c)m(haracters)i(from)e(the)h(k)m (eyb)s(oard)f(as)h(they)g(are)f(t)m(yp)s(ed.)40 b(The)27 b(transmitter)g(unit)f(writes)75 2732 y(c)m(haracters)i(to)f(the)f (terminal's)f(displa)m(y)-8 b(.)38 b(The)26 b(t)m(w)m(o)h(units)e(are)h (completely)g(indep)s(enden)m(t.)38 b(This)24 b(means,)j(for)75 2844 y(example,)j(that)h(c)m(haracters)h(t)m(yp)s(ed)d(at)i(the)g(k)m (eyb)s(oard)f(are)g(not)h(automatically)f(\\ec)m(ho)s(ed")i(on)e(the)g (displa)m(y)-8 b(.)75 2957 y(Instead,)31 b(the)f(pro)s(cessor)h(m)m (ust)f(get)i(an)e(input)f(c)m(haracter)j(from)e(the)h(receiv)m(er)g (and)e(re-transmit)h(it)g(to)i(ec)m(ho)75 3070 y(it.)216 3183 y(The)i(pro)s(cessor)g(accesses)i(the)f(terminal)e(using)g(four)h (memory-mapp)s(ed)f(device)h(registers,)i(as)f(sho)m(wn)75 3296 y(in)26 b(Figure)h(7.)40 b(\\Memory-mapp)s(ed")28 b(means)f(that)h(eac)m(h)h(register)e(app)s(ears)g(as)h(a)g(sp)s(ecial) e(memory)h(lo)s(cation.)75 3409 y(The)35 b(Receiv)m(er)h(Con)m(trol)f (Register)g(is)g(at)h(lo)s(cation)f(0x\013\0130000;)40 b(only)35 b(t)m(w)m(o)h(of)g(its)f(bits)f(are)i(actually)e(used.)75 3522 y(Bit)29 b(0)h(is)e(called)h(\\ready":)41 b(if)28 b(it)h(is)f(one)h(it)g(means)g(that)h(a)g(c)m(haracter)h(has)e(arriv)m (ed)f(from)h(the)h(k)m(eyb)s(oard)f(but)75 3635 y(has)j(not)h(y)m(et)h (b)s(een)e(read)h(from)f(the)h(receiv)m(er)g(data)g(register.)48 b(The)32 b(ready)g(bit)g(is)g(read-only:)45 b(attempts)33 b(to)75 3748 y(write)i(it)g(are)i(ignored.)56 b(The)35 b(ready)h(bit)f(c)m(hanges)i(automatically)e(from)h(zero)h(to)f(one)g (when)f(a)h(c)m(haracter)75 3861 y(is)31 b(t)m(yp)s(ed)h(at)i(the)e(k)m (eyb)s(oard,)h(and)f(it)g(c)m(hanges)h(automatically)f(from)g(one)h(to) g(zero)g(when)e(the)i(c)m(haracter)h(is)75 3974 y(read)c(from)g(the)h (receiv)m(er)g(data)g(register.)216 4086 y(Bit)j(one)g(of)g(the)h (Receiv)m(er)f(Con)m(trol)g(Register)g(is)f(\\in)m(terrupt)g(enable".) 52 b(This)32 b(bit)h(ma)m(y)h(b)s(e)g(b)s(oth)f(read)75 4199 y(and)i(written)f(b)m(y)i(the)f(pro)s(cessor.)56 b(The)35 b(in)m(terrupt)f(enable)h(is)f(initially)e(zero.)57 b(If)35 b(it)g(is)f(set)i(to)h(one)e(b)m(y)h(the)75 4312 y(pro)s(cessor,)29 b(an)f(in)m(terrupt)f(is)h(requested)h(b)m(y)f(the)h (terminal)e(on)i(lev)m(el)f(zero)h(whenev)m(er)g(the)g(ready)f(bit)g (is)f(one.)75 4425 y(F)-8 b(or)38 b(the)f(in)m(terrupt)e(actually)i(to) h(b)s(e)e(receiv)m(ed)h(b)m(y)g(the)g(pro)s(cessor,)i(in)m(terrupts)c (m)m(ust)i(b)s(e)f(enabled)g(in)g(the)75 4538 y(status)31 b(register)f(of)g(the)h(system)g(copro)s(cessor)f(\(see)i(Section)e (2\).)216 4651 y(Other)h(bits)f(of)i(the)f(Receiv)m(er)h(Con)m(trol)f (Register)h(are)f(un)m(used:)42 b(they)31 b(alw)m(a)m(ys)h(read)f(as)h (zero)s(es)g(and)f(are)75 4764 y(ignored)e(in)h(writes.)216 4877 y(The)37 b(second)h(terminal)e(device)i(register)f(is)g(the)h (Receiv)m(er)g(Data)i(Register)e(\(at)g(address)f(0x\013\0130004\).)75 4990 y(The)32 b(lo)m(w-order)g(eigh)m(t)h(bits)f(of)h(this)e(register)h (con)m(tain)h(the)g(last)g(c)m(haracter)h(t)m(yp)s(ed)e(on)h(the)f(k)m (eyb)s(oard,)i(and)75 5103 y(all)c(the)h(other)h(bits)e(con)m(tain)h (zero)s(es.)44 b(This)29 b(register)i(is)f(read-only)g(and)h(only)f(c)m (hanges)i(v)-5 b(alue)31 b(when)f(a)h(new)75 5216 y(c)m(haracter)e(is)e (t)m(yp)s(ed)h(on)f(the)h(k)m(eyb)s(oard.)40 b(Reading)27 b(the)h(Receiv)m(er)h(Data)g(Register)f(causes)h(the)f(ready)f(bit)g (in)75 5328 y(the)k(Receiv)m(er)g(Con)m(trol)f(Register)g(to)h(b)s(e)f (reset)h(to)g(zero.)1920 5656 y(24)p eop %%Page: 25 25 25 24 bop 909 1287 a 16671720 18945146 6841303 17366384 25918013 38877020 startTexFig 909 1287 a %%BeginDocument: io_reg.id %!PS-Adobe-2.0 EPSF-1.2 %%Creator: idraw %%DocumentFonts: Helvetica-Bold %%Pages: 1 %%BoundingBox: 104 264 394 591 %%EndComments /arrowHeight 10 def /arrowWidth 5 def /IdrawDict 51 dict def IdrawDict begin /reencodeISO { dup dup findfont dup length dict begin { 1 index /FID ne { def }{ pop pop } ifelse } forall /Encoding ISOLatin1Encoding def currentdict end definefont } def /ISOLatin1Encoding [ /.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/quoteright /parenleft/parenright/asterisk/plus/comma/minus/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/quoteleft/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/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine /guillemotright/onequarter/onehalf/threequarters/questiondown /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis /yacute/thorn/ydieresis ] def /Helvetica-Bold reencodeISO def /none null def /numGraphicParameters 17 def /stringLimit 65535 def /Begin { save numGraphicParameters dict begin } def /End { end restore } def /SetB { dup type /nulltype eq { pop false /brushRightArrow idef false /brushLeftArrow idef true /brushNone idef } { /brushDashOffset idef /brushDashArray idef 0 ne /brushRightArrow idef 0 ne /brushLeftArrow idef /brushWidth idef false /brushNone idef } ifelse } def /SetCFg { /fgblue idef /fggreen idef /fgred idef } def /SetCBg { /bgblue idef /bggreen idef /bgred idef } def /SetF { /printSize idef /printFont idef } def /SetP { dup type /nulltype eq { pop true /patternNone idef } { dup -1 eq { /patternGrayLevel idef /patternString idef } { /patternGrayLevel idef } ifelse false /patternNone idef } ifelse } def /BSpl { 0 begin storexyn newpath n 1 gt { 0 0 0 0 0 0 1 1 true subspline n 2 gt { 0 0 0 0 1 1 2 2 false subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline } if n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Circ { newpath 0 360 arc patternNone not { ifill } if brushNone not { istroke } if } def /CBSpl { 0 begin dup 2 gt { storexyn newpath n 1 sub dup 0 0 1 1 2 2 true subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline n 2 sub dup n 1 sub dup 0 0 1 1 false subspline patternNone not { ifill } if brushNone not { istroke } if } { Poly } ifelse end } dup 0 4 dict put def /Elli { 0 begin newpath 4 2 roll translate scale 0 0 1 0 360 arc patternNone not { ifill } if brushNone not { istroke } if end } dup 0 1 dict put def /Line { 0 begin 2 storexyn newpath x 0 get y 0 get moveto x 1 get y 1 get lineto brushNone not { istroke } if 0 0 1 1 leftarrow 0 0 1 1 rightarrow end } dup 0 4 dict put def /MLine { 0 begin storexyn newpath n 1 gt { x 0 get y 0 get moveto 1 1 n 1 sub { /i exch def x i get y i get lineto } for patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Poly { 3 1 roll newpath moveto -1 add { lineto } repeat closepath patternNone not { ifill } if brushNone not { istroke } if } def /Rect { 0 begin /t exch def /r exch def /b exch def /l exch def newpath l b moveto l t lineto r t lineto r b lineto closepath patternNone not { ifill } if brushNone not { istroke } if end } dup 0 4 dict put def /Text { ishow } def /idef { dup where { pop pop pop } { exch def } ifelse } def /ifill { 0 begin gsave patternGrayLevel -1 ne { fgred bgred fgred sub patternGrayLevel mul add fggreen bggreen fggreen sub patternGrayLevel mul add fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor eofill } { eoclip originalCTM setmatrix pathbbox /t exch def /r exch def /b exch def /l exch def /w r l sub ceiling cvi def /h t b sub ceiling cvi def /imageByteWidth w 8 div ceiling cvi def /imageHeight h def bgred bggreen bgblue setrgbcolor eofill fgred fggreen fgblue setrgbcolor w 0 gt h 0 gt and { l b translate w h scale w h true [w 0 0 h neg 0 h] { patternproc } imagemask } if } ifelse grestore end } dup 0 8 dict put def /istroke { gsave brushDashOffset -1 eq { [] 0 setdash 1 setgray } { brushDashArray brushDashOffset setdash fgred fggreen fgblue setrgbcolor } ifelse brushWidth setlinewidth originalCTM setmatrix stroke grestore } def /ishow { 0 begin gsave fgred fggreen fgblue setrgbcolor /fontDict printFont printSize scalefont dup setfont def /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end transform exch pop def /vertoffset 1 printSize sub descender sub def { 0 vertoffset moveto show /vertoffset vertoffset printSize sub def } forall grestore end } dup 0 3 dict put def /patternproc { 0 begin /patternByteLength patternString length def /patternHeight patternByteLength 8 mul sqrt cvi def /patternWidth patternHeight def /patternByteWidth patternWidth 8 idiv def /imageByteMaxLength imageByteWidth imageHeight mul stringLimit patternByteWidth sub min def /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv patternHeight mul patternHeight max def /imageHeight imageHeight imageMaxHeight sub store /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def 0 1 imageMaxHeight 1 sub { /y exch def /patternRow y patternByteWidth mul patternByteLength mod def /patternRowString patternString patternRow patternByteWidth getinterval def /imageRow y imageByteWidth mul def 0 patternByteWidth imageByteWidth 1 sub { /x exch def imageString imageRow x add patternRowString putinterval } for } for imageString end } dup 0 12 dict put def /min { dup 3 2 roll dup 4 3 roll lt { exch } if pop } def /max { dup 3 2 roll dup 4 3 roll gt { exch } if pop } def /midpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 x1 add 2 div y0 y1 add 2 div end } dup 0 4 dict put def /thirdpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 2 mul x1 add 3 div y0 2 mul y1 add 3 div end } dup 0 4 dict put def /subspline { 0 begin /movetoNeeded exch def y exch get /y3 exch def x exch get /x3 exch def y exch get /y2 exch def x exch get /x2 exch def y exch get /y1 exch def x exch get /x1 exch def y exch get /y0 exch def x exch get /x0 exch def x1 y1 x2 y2 thirdpoint /p1y exch def /p1x exch def x2 y2 x1 y1 thirdpoint /p2y exch def /p2x exch def x1 y1 x0 y0 thirdpoint p1x p1y midpoint /p0y exch def /p0x exch def x2 y2 x3 y3 thirdpoint p2x p2y midpoint /p3y exch def /p3x exch def movetoNeeded { p0x p0y moveto } if p1x p1y p2x p2y p3x p3y curveto end } dup 0 17 dict put def /storexyn { /n exch def /y n array def /x n array def n 1 sub -1 0 { /i exch def y i 3 2 roll put x i 3 2 roll put } for } def /SSten { fgred fggreen fgblue setrgbcolor dup true exch 1 0 0 -1 0 6 -1 roll matrix astore } def /FSten { dup 3 -1 roll dup 4 1 roll exch newpath 0 0 moveto dup 0 exch lineto exch dup 3 1 roll exch lineto 0 lineto closepath bgred bggreen bgblue setrgbcolor eofill SSten } def /Rast { exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore } def %%EndProlog %%BeginIdrawPrologue /arrowhead { 0 begin transform originalCTM itransform /taily exch def /tailx exch def transform originalCTM itransform /tipy exch def /tipx exch def /dy tipy taily sub def /dx tipx tailx sub def /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def gsave originalCTM setmatrix tipx tipy translate angle rotate newpath arrowHeight neg arrowWidth 2 div moveto 0 0 lineto arrowHeight neg arrowWidth 2 div neg lineto patternNone not { originalCTM setmatrix /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul arrowWidth div def /padtail brushWidth 2 div def tipx tipy translate angle rotate padtip 0 translate arrowHeight padtip add padtail add arrowHeight div dup scale arrowheadpath ifill } if brushNone not { originalCTM setmatrix tipx tipy translate angle rotate arrowheadpath istroke } if grestore end } dup 0 9 dict put def /arrowheadpath { newpath arrowHeight neg arrowWidth 2 div moveto 0 0 lineto arrowHeight neg arrowWidth 2 div neg lineto } def /leftarrow { 0 begin y exch get /taily exch def x exch get /tailx exch def y exch get /tipy exch def x exch get /tipx exch def brushLeftArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /rightarrow { 0 begin y exch get /tipy exch def x exch get /tipx exch def y exch get /taily exch def x exch get /tailx exch def brushRightArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def %%EndIdrawPrologue %I Idraw 10 Grid 8 8 %%Page: 1 1 Begin %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.77233 0 0 0.77233 0 0 ] concat /originalCTM matrix currentmatrix def Begin %I Rect %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 138 217 ] concat %I 102 503 350 527 Rect End Begin %I Line %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 138 217 ] concat %I 302 527 302 503 Line %I 1 End Begin %I Line %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 138 217 ] concat %I 326 527 326 503 Line %I 1 End Begin %I Rect %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.5 SetP %I t [ 1 0 0 1 138 217 ] concat %I 102 503 302 527 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--10-*-75-* Helvetica-Bold 10 SetF %I t [ 1 0 0 1 448 761 ] concat %I [ (1) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--10-*-75-* Helvetica-Bold 10 SetF %I t [ 1 0 0 1 472 761 ] concat %I [ (1) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--10-*-75-* Helvetica-Bold 10 SetF %I t [ 1 0 0 1 416 697 ] concat %I [ (Interrupt) (Enable) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--10-*-75-* Helvetica-Bold 10 SetF %I t [ 1 0 0 1 480 697 ] concat %I [ (Ready) ] Text End Begin %I Line %I b 65535 0 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 138 217 ] concat %I 294 487 310 503 Line %I 1 End Begin %I Line %I b 65535 0 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 138 217 ] concat %I 350 487 334 503 Line %I 1 End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--10-*-75-* Helvetica-Bold 10 SetF %I t [ 1 0 0 1 136 740 ] concat %I [ (Receiver Control) (\(0xffff0000\)) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 138 -15 ] concat %I 102 503 350 527 Rect End Begin %I Line %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 138 -15 ] concat %I 302 527 302 503 Line %I 1 End Begin %I Line %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 138 -15 ] concat %I 326 527 326 503 Line %I 1 End Begin %I Rect %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.5 SetP %I t [ 1 0 0 1 138 -15 ] concat %I 102 503 302 527 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--10-*-75-* Helvetica-Bold 10 SetF %I t [ 1 0 0 1 448 529 ] concat %I [ (1) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--10-*-75-* Helvetica-Bold 10 SetF %I t [ 1 0 0 1 472 529 ] concat %I [ (1) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--10-*-75-* Helvetica-Bold 10 SetF %I t [ 1 0 0 1 416 465 ] concat %I [ (Interrupt) (Enable) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--10-*-75-* Helvetica-Bold 10 SetF %I t [ 1 0 0 1 480 465 ] concat %I [ (Ready) ] Text End Begin %I Line %I b 65535 0 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 138 -15 ] concat %I 294 487 310 503 Line %I 1 End Begin %I Line %I b 65535 0 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0 SetP %I t [ 1 0 0 1 138 -15 ] concat %I 350 487 334 503 Line %I 1 End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--10-*-75-* Helvetica-Bold 10 SetF %I t [ 1 0 0 1 136 508 ] concat %I [ (Transmitter Control) (\(0xffff0008\)) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--10-*-75-* Helvetica-Bold 10 SetF %I t [ 1 0 0 1 136 636 ] concat %I [ (Receiver Data) (\(0xffff0004\)) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Rect %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 138 113 ] concat %I 102 503 350 527 Rect End Begin %I Rect %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.5 SetP %I t [ 1 0 0 1 130 217 ] concat %I 110 399 286 423 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--10-*-75-* Helvetica-Bold 10 SetF %I t [ 1 0 0 1 449.5 657 ] concat %I [ (8) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--10-*-75-* Helvetica-Bold 10 SetF %I t [ 1 0 0 1 417 601 ] concat %I [ (Received Byte) ] Text End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--10-*-75-* Helvetica-Bold 10 SetF %I t [ 1 0 0 1 136 388 ] concat %I [ (Transmitter Data) (\(0xffff000c\)) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -8 0 ] concat Begin %I Rect %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 146 -135 ] concat %I 102 503 350 527 Rect End Begin %I Rect %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.5 SetP %I t [ 1 0 0 1 138 -31 ] concat %I 110 399 286 423 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--10-*-75-* Helvetica-Bold 10 SetF %I t [ 1 0 0 1 457.5 409 ] concat %I [ (8) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--10-*-75-* Helvetica-Bold 10 SetF %I t [ 1 0 0 1 425 353 ] concat %I [ (Transmitted Byte) ] Text End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--10-*-75-* Helvetica-Bold 10 SetF %I t [ 1 0 0 1 322 761 ] concat %I [ (Unused) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--10-*-75-* Helvetica-Bold 10 SetF %I t [ 1 0 0 1 322 657 ] concat %I [ (Unused) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--10-*-75-* Helvetica-Bold 10 SetF %I t [ 1 0 0 1 322 529 ] concat %I [ (Unused) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-normal--10-*-75-* Helvetica-Bold 10 SetF %I t [ 1 0 0 1 322 409 ] concat %I [ (Unused) ] Text End End %I eop showpage %%Trailer end %%EndDocument endTexFig 75 3883 a Fu(Figure)29 b(7:)40 b(The)29 b(terminal)f(is)g(con)m (trolled)h(b)m(y)g(four)g(device)g(registers,)h(eac)m(h)g(of)g(whic)m (h)e(app)s(ears)g(as)i(a)f(sp)s(ecial)75 3996 y(memory)35 b(lo)s(cation)g(at)g(the)h(giv)m(en)f(address.)54 b(Only)33 b(a)i(few)g(bits)f(of)h(the)h(registers)e(are)i(actually)e(used:)50 b(the)75 4109 y(others)30 b(alw)m(a)m(ys)h(read)g(as)f(zero)s(es)h(and) f(are)h(ignored)e(on)i(writes.)1920 5656 y(25)p eop %%Page: 26 26 26 25 bop 216 99 a Fu(The)23 b(third)e(terminal)g(device)i(register)f (is)g(the)h(T)-8 b(ransmitter)22 b(Con)m(trol)h(Register)g(\(at)h (address)e(0x\013\0130008\).)75 211 y(Only)e(the)h(lo)m(w-order)g(t)m (w)m(o)h(bits)e(of)h(this)f(register)h(are)h(used,)g(and)f(they)g(b)s (eha)m(v)m(e)h(m)m(uc)m(h)f(lik)m(e)g(the)g(corresp)s(onding)75 324 y(bits)35 b(of)i(the)g(Receiv)m(er)g(Con)m(trol)g(Register.)59 b(Bit)36 b(0)h(is)f(called)g(\\ready")h(and)f(is)g(read-only)-8 b(.)59 b(If)36 b(it)g(is)g(one)g(it)75 437 y(means)c(the)g(transmitter) g(is)f(ready)h(to)h(accept)h(a)e(new)g(c)m(haracter)i(for)e(output.)45 b(If)32 b(it)g(is)f(zero)i(it)f(means)g(the)75 550 y(transmitter)40 b(is)f(still)f(busy)g(outputting)i(the)g(previous)f(c)m(haracter)i(giv) m(en)f(to)h(it.)69 b(Bit)40 b(one)h(is)e(\\in)m(terrupt)75 663 y(enable";)d(it)e(is)f(readable)g(and)h(writable.)50 b(If)34 b(it)g(is)f(set)h(to)h(one,)h(then)e(an)g(in)m(terrupt)e(will)g (b)s(e)h(requested)h(on)75 776 y(lev)m(el)c(one)h(whenev)m(er)f(the)h (ready)f(bit)f(is)h(one.)216 889 y(The)c(\014nal)g(device)g(register)h (is)f(the)h(T)-8 b(ransmitter)26 b(Data)i(Register)f(\(at)h(address)e (0x\013\013000c\).)42 b(When)27 b(it)f(is)75 1002 y(written,)f(the)g (lo)m(w-order)f(eigh)m(t)h(bits)e(are)i(tak)m(en)g(as)g(an)g(ASCI)s(I)d (c)m(haracter)27 b(to)e(output)f(to)h(the)g(displa)m(y)-8 b(.)37 b(When)75 1115 y(the)28 b(T)-8 b(ransmitter)26 b(Data)k(Register)d(is)g(written,)g(the)h(ready)f(bit)g(in)f(the)i(T)-8 b(ransmitter)27 b(Con)m(trol)g(Register)h(will)75 1228 y(b)s(e)h(reset)i(to)g(zero.)41 b(The)30 b(bit)f(will)f(sta)m(y)j(zero) g(un)m(til)d(enough)i(time)g(has)g(elapsed)f(to)i(transmit)e(the)h(c)m (haracter)75 1341 y(to)c(the)g(terminal;)g(then)f(the)g(ready)h(bit)e (will)f(b)s(e)i(set)h(bac)m(k)g(to)g(one)g(again.)39 b(The)25 b(T)-8 b(ransmitter)25 b(Data)i(Register)75 1453 y(should)36 b(only)h(b)s(e)g(written)f(when)h(the)h(ready)g(bit)e (of)i(the)g(T)-8 b(ransmitter)37 b(Con)m(trol)g(Register)h(is)f(one;)42 b(if)37 b(the)75 1566 y(transmitter)k(isn't)g(ready)h(then)f(writes)g (to)i(the)f(T)-8 b(ransmitter)41 b(Data)i(Register)f(are)g(ignored)f (\(the)i(write)75 1679 y(app)s(ears)30 b(to)h(succeed)g(but)e(the)i(c)m (haracter)h(will)27 b(not)k(b)s(e)f(output\).)216 1792 y(In)25 b(real)g(computers)h(it)f(tak)m(es)i(time)e(to)i(send)e(c)m (haracters)i(o)m(v)m(er)g(the)e(serial)g(lines)f(that)i(connect)h (terminals)75 1905 y(to)g(computers.)39 b(These)26 b(time)g(lags)g(are) h(sim)m(ulated)e(b)m(y)h(SPIM.)g(F)-8 b(or)27 b(example,)g(after)g(the) g(transmitter)f(starts)75 2018 y(transmitting)19 b(a)i(c)m(haracter,)j (the)d(transmitter's)f(ready)g(bit)g(will)e(b)s(ecome)i(zero)i(for)e(a) h(while.)35 b(SPIM)20 b(measures)75 2131 y(this)30 b(time)h(in)f (instructions)f(executed,)j(not)g(in)d(real)i(clo)s(c)m(k)h(time.)43 b(This)29 b(means)i(that)h(the)f(transmitter)g(will)75 2244 y(not)36 b(b)s(ecome)g(ready)g(again)g(un)m(til)e(the)i(pro)s (cessor)f(has)h(executed)g(a)g(certain)g(n)m(um)m(b)s(er)f(of)h (instructions.)54 b(If)75 2357 y(y)m(ou)29 b(stop)f(the)h(mac)m(hine)f (and)g(lo)s(ok)g(at)h(the)g(ready)f(bit)f(using)g(SPIM,)h(it)g(will)e (not)j(c)m(hange.)41 b(Ho)m(w)m(ev)m(er,)31 b(if)d(y)m(ou)75 2470 y(let)i(the)h(mac)m(hine)f(run)f(then)h(the)g(bit)g(will)e(ev)m (en)m(tually)i(c)m(hange)h(bac)m(k)h(to)f(one.)1920 5656 y(26)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF