%!PS (but not EPSF; comments have been disabled) %DVIPSCommandLine: dvips -f synpaper %DVIPSParameters: dpi=600, compressed, comments removed %DVIPSSource: TeX output 1995.10.27:1542 /TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}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{dup dup 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 /IE 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 IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /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 dup definefont setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{ 128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup 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 /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 sub]/id ch-image N /rw ch-width 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 dup 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 dup gp add /gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{ dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1 adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 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}]dup{bind pop}forall N /D{/cc X dup type /stringtype ne{] }if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 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 dup 1 get dup mul exch 0 get dup 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 /IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for 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 /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V {}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false} ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail {dup /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 TeXDict begin 40258431 52099146 1000 600 600 (synpaper.dvi) @start /Fa 30 123 df<1530157815F8A215F01401A215E01403A215C01407A2158014 0FA215005CA2143EA2143C147CA2147814F8A25C1301A25C1303A25C1307A2495AA291C7 FC5BA2131E133EA2133C137CA2137813F8A25B1201A25B1203A2485AA25B120FA290C8FC 5AA2121E123EA2123C127CA2127812F8A25A12601D4B7CB726>47 DI<13075B5B137FEA07FF B5FC13BFEAF83F1200B3B3A2497E007FB51280A319327AB126>II52 D<000C14C0380FC00F90B5128015005C5C14F014C0D80C18C7FC90C8FCA9EB0FC0EB7FF8 EBF07C380FC03F9038001F80EC0FC0120E000CEB07E0A2C713F01403A215F8A41218127E 12FEA315F0140712F8006014E01270EC0FC06C131F003C14806CEB7F00380F80FE3807FF F8000113E038003F801D347CB126>I<14FE903807FF80011F13E090383F00F0017C1370 3901F801F8EBF003EA03E01207EA0FC0EC01F04848C7FCA248C8FCA35A127EEB07F0EB1F FC38FE381F9038700F809038E007C039FFC003E0018013F0EC01F8130015FC1400A24814 FEA5127EA4127F6C14FCA26C1301018013F8000F14F0EBC0030007EB07E03903E00FC039 01F81F806CB51200EB3FFCEB0FE01F347DB126>I<1230123C003FB6FCA34814FEA215FC 0070C7123800601430157015E04814C01401EC0380C7EA07001406140E5C141814385CA2 5CA2495A1303A3495AA2130FA3131F91C7FCA25BA55BA9131C20347CB126>III67 DI77 D80 DI< 007FB712FEA390398007F001D87C00EC003E0078161E0070160EA20060160600E01607A3 481603A6C71500B3AB4A7E011FB512FCA330337DB237>84 DI<267FFFFC90B512C0A3000101E090381FF80026007F80EB0FC0013F6E5A6E91C7FC 6D6C130E010F140C6E5B6D6C133801035C6E13606D6C13E06D6C485A5EDA7F83C8FCEC3F C715C6EC1FECEC0FFC5D14076E7EA26E7E815C6F7E9138063FC0140E4A6C7E9138180FF0 EC380702707F91386003FCECC0010101804A6C7E49C77E4981010E6E7E010C6E7E131C49 6E7E01786E7E13FCD807FEEC1FFEB56C90B512F8A335337EB23A>88 D97 D<153FEC0FFFA3EC007F81AEEB07F0EB3FFCEBFC0F3901F003BF3907E001FF48487E4848 7F8148C7FCA25A127E12FEAA127E127FA27E6C6C5BA26C6C5B6C6C4813803A03F007BFFC 3900F81E3FEB3FFCD90FE0130026357DB32B>100 DI104 DI<2703F01FE013FF00FF90267FF80313C0903BF1E07C0F03E0903BF3 803E1C01F02807F7003F387FD803FE1470496D486C7EA2495CA2495CB3486C496C487EB5 3BC7FFFE3FFFF0A33C217EA041>109 D<3903F01FC000FFEB7FF09038F1E0FC9038F380 7C3907F7007EEA03FE497FA25BA25BB3486CEB7F80B538C7FFFCA326217EA02B>I<3803 E07C38FFE1FF9038E38F809038E71FC0EA07EEEA03ECA29038FC0F8049C7FCA35BB2487E B512E0A31A217FA01E>114 D I<1330A51370A313F0A21201A212031207381FFFFEB5FCA23803F000AF1403A814073801 F806A23800FC0EEB7E1CEB1FF8EB07E0182F7FAD1E>II<003FB512F0A2EB000F003C14E00038EB1FC00030EB3F800070137F1500 006013FE495A13035CC6485A495AA2495A495A49C7FC153013FE485A12035B4848137048 5A001F14604913E0485A387F000348130F90B5FCA21C207E9F22>122 D E /Fb 1 16 df15 D E /Fc 70 126 df<003C131E007F137F481480A66C1400A6007E7FA600 3E133EA3003C131E001C131C191977B32C>34 D<010F133C90381F807EA8013F13FE4A5A A4007FB612F0B712F8A4003F15F03A007E01F800A5EBFE0301FC5BA6003FB612F0B712F8 A46C15F03A01F807E000A30003130F01F05BA86C486C5A25337DB22C>IIIII<143814FC13011303 EB07F8EB0FF0EB1FC0EB3F80EB7F0013FE485A485A5B12075B120F5B485AA2123F90C7FC A25A127EA312FE5AAC7E127EA3127F7EA27F121FA26C7E7F12077F12037F6C7E6C7E137F EB3F80EB1FC0EB0FF0EB07F8EB03FC130113001438164272B92C>I<127012FC7E7E6C7E 6C7EEA0FE06C7E6C7E6C7E6C7E137F7F1480131F14C0130FEB07E0A214F01303A214F813 01A314FC1300AC130114F8A3130314F0A2130714E0A2EB0FC0131F1480133F14005B13FE 485A485A485A485AEA3FC0485A48C7FC5A5A1270164279B92C>II44 D<007FB6FCB71280A46C150021067B9B2C>I<121FEA3F80EA7FC0EAFFE0A5EA7F C0EA3F80EA1F000B0B708A2C>I48 D<1307497EA2131FA2133F137F13FF5A1207127FB5FC13DF139FEA7C1F1200B3AE007FB5 12E0B612F0A36C14E01C3477B32C>IIII<000FB512FE4880A35D0180C8FCADEB83FE90389FFF8090B512E015F8819038 FE03FE9038F000FF01C07F49EB3F8090C7121F6C15C0C8120FA2ED07E0A4123C127EB4FC 150F16C0A248141F007EEC3F80007FEC7F006C6C5B6D485A391FF80FFC6CB55A6C5C0001 14C06C6C90C7FCEB0FF823347CB22C>II<1278B712C016E0A316C000FCC7EA3F80ED7F0015FE00785CC712014A5A4A5A 5D140F5D4A5A143F92C7FC5C147E14FE5C13015CA2495AA213075CA3495AA4495AA5133F 91C8FCAA131E23357CB32C>II<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F00C7FC AE121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F000B2470A32C>58 DI<1507ED1F80153F15FF14034A1300EC1FFC4A5AECFFE0491380010790C7FCEB 0FFCEB3FF8EB7FE048485A4890C8FCEA0FFEEA1FF8EA7FF0EAFFC05BA27FEA7FF0EA1FF8 EA0FFEEA03FF6C13C06C6C7EEB3FF8EB0FFC6DB4FC01017F6D13E0EC3FF86E7EEC07FF6E 13801400153F151FED0700212A7BAD2C>I<127012FC7E6C7E13E06C7EEA1FFC6C7E3803 FF80C67FEB7FF0EB1FF8EB0FFEEB03FF6D13C06D6C7EEC3FF8EC0FFC6EB4FC0201138080 A25C02071300EC0FFCEC3FF8EC7FE049485A4990C7FCEB0FFEEB1FF8EB7FF0EBFFC00003 5BD80FFEC8FC485AEA7FF0485A138048C9FC5A1270212A7BAD2C>62 D64 D<14FE497EA4497FA214EFA2130781A214C7A2010F7FA314C3 90381F83F0A590383F01F8A490387E00FCA549137E90B512FEA34880A29038F8003FA348 48EB1F80A4000715C049130FD87FFEEBFFFC6D5AB514FE6C15FC497E27347EB32C>I<02 FF13700107EBE0F84913F9013F13FD4913FFEBFF813901FE007F4848131FD807F0130F15 07485A491303485A150148C7FCA25A007EEC00F01600A212FE5AAB7E127EA3007F15F06C EC01F8A26C7EA26C6C13036D14F06C6C130716E0D803FC131F6C6CEB3FC03A00FF81FF80 6DB512006D5B010F5B6D13F00100138025357DB32C>67 D<007FB5FCB612C015F0816C80 3907E003FEEC00FFED7F80153FED1FC0ED0FE0A2150716F0150316F81501A4ED00FCACED 01F8A3150316F0A2150716E0150FED1FC0153FED7F80EDFF00EC03FE007FB55AB65A5D15 C06C91C7FC26337EB22C>I<007FB612F0B712F8A37E3903F00001A7ED00F01600A4EC01 E04A7EA490B5FCA5EBF003A46E5A91C8FCA5163C167EA8007FB612FEB7FCA36C15FC2733 7EB22C>I<903901FC038090390FFF87C04913EF017F13FF90B6FC4813073803FC01497E 4848137F4848133F49131F121F5B003F140F90C7FCA2127EED078092C7FCA212FE5AA891 3803FFF84A13FCA27E007E6D13F89138000FC0A36C141FA27F121F6D133F120F6D137F6C 7E6C6C13FF6D5A3801FF076C90B5FC6D13EF011F13CF6DEB0780D901FCC7FC26357DB32C >71 D<007FB512F8B612FCA36C14F839000FC000B3B3A5007FB512F8B612FCA36C14F81E 3379B22C>73 D78 DI<007FB512C0B612F88115FF6C1580 2603F00013C0153FED0FE0ED07F0A2150316F81501A6150316F01507A2ED0FE0ED3FC015 FF90B61280160015FC5D15C001F0C8FCB0387FFF80B57EA36C5B25337EB22C>I<387FFF FCB67E15E015F86C803907E007FE1401EC007F6F7E151FA26F7EA64B5AA2153F4BC7FCEC 01FE140790B55A5D15E081819038E007FCEC01FE1400157F81A8160FEE1F80A5D87FFEEB 1FBFB5ECFF00815E6C486D5AC8EA01F029347EB22C>82 D<90381FF80790B5EA0F804814 CF000714FF5A381FF01F383FC003497E48C7FC007E147F00FE143F5A151FA46CEC0F0000 7E91C7FC127F7FEA3FE0EA1FFCEBFFC06C13FC0003EBFFC06C14F06C6C7F01077F903800 7FFEEC07FF02001380153FED1FC0A2ED0FE0A20078140712FCA56CEC0FC0A26CEC1F806D 133F01E0EB7F009038FE01FF90B55A5D00F914F0D8F83F13C0D8700790C7FC23357CB32C >I<007FB612FCB712FEA43AFC007E007EA70078153CC71400B3AF90383FFFFCA2497F6D 5BA227337EB22C>I<3B7FFF803FFFC0B56C4813E0A36C496C13C03B03F00001F800B3AF 6D130300015DA26D130700005D6D130F017F495A6D6C485AECE0FF6DB5C7FC6D5B010313 F86D5B9038003F802B3480B22C>I87 D<3A3FFF03FFE0484913F0148714076C6D13E03A01F800FE00 7F0000495A13FE017E5BEB7F03013F5B1487011F5B14CF010F5B14FF6D5BA26D90C7FCA2 6D5AA26D5AA2497EA2497EA2497F81EB0FCF81EB1FC7EC87F0EB3F83EC03F8EB7F01017E 7FEBFE00497F0001147E49137F000380491480151FD87FFEEBFFFC6D5AB514FE6C15FC49 7E27337EB22C>I<003FB612C04815E0A4007EC7EA1FC0ED3F80A2ED7F00157E15FE4A5A 003C5CC712034A5AA24A5A4A5AA24A5A4AC7FCA214FE495AA2495A495AA2495A495AA249 5A49C8FCA213FE485AA24848EB03C049EB07E01207485A5B121F485AA248C7FCB7FCA46C 15C023337CB22C>90 D<007FB6FCB71280A46C150021067B7D2C>95 D<3801FFF0000713FE001F6D7E15E048809038C01FF81407EC01FC381F80000006C77EC8 127EA3ECFFFE131F90B5FC1203120F48EB807E383FF800EA7FC090C7FC12FE5AA47E007F 14FEEB8003383FE01F6CB612FC6C15FE6C14BF0001EBFE1F3A003FF007FC27247CA32C> 97 DI<903803FFE0011F13F8017F13FE48B5FC48804848C6FCEA0FF0485A49137E 4848131890C9FC5A127EA25AA8127EA2127F6C140F6DEB1F806C7E6D133F6C6CEB7F0039 07FE03FF6CB55A6C5C6C6C5B011F13E0010390C7FC21247AA32C>IIII II< 1307EB1FC0A2497EA36D5AA20107C7FC90C8FCA7387FFFC080B5FC7EA2EA0007B3A8007F B512FCB612FEA36C14FC1F3479B32C>I<140EEC3F80A2EC7FC0A3EC3F80A2EC0E0091C7 FCA748B512804814C0A37EC7120FB3B3A2141F003C1480007E133FB414005CEB01FEEBFF FC6C5B5C001F5B000790C7FC1A467CB32C>II<387FFFE0B57EA37EEA0003B3B3A5007F B61280B712C0A36C158022337BB22C>I<3A7F83F007E09039CFFC1FF83AFFDFFE3FFCD8 7FFF13FF91B57E3A07FE1FFC3E01FCEBF83F496C487E01F013E001E013C0A301C01380B3 3B7FFC3FF87FF0027F13FFD8FFFE6D13F8D87FFC4913F0023F137F2D2481A32C>I<397F F01FE039FFF87FFC9038F9FFFE01FB7F6CB6FC00019038F03F80ECC01F02807FEC000F5B 5BA25BB3267FFFE0B5FCB500F11480A36C01E0140029247FA32C>II<397FF01FE0 39FFF8FFF801FB13FE90B6FC6C158000019038F07FC09138801FE091380007F049EB03F8 5BED01FC491300A216FE167EA816FE6D14FCA2ED01F86D13036DEB07F0150F9138801FE0 9138E07FC091B51280160001FB5B01F813F8EC3FC091C8FCAD387FFFE0B57EA36C5B2736 7FA32C>I<903903FC078090391FFF0FC0017F13CF48B512EF4814FF3807FE07380FF001 48487E49137F4848133F90C7FC48141F127E150F5AA87E007E141FA26C143F7F6C6C137F 6D13FF380FF0033807FC0F6CB6FC6C14EF6C6C138F6D130FEB07F890C7FCAD0203B5FC4A 1480A36E140029367DA32C>II<90387FF8700003B512F8120F5A5A387FC00F387E00034813015AA36CEB 00F0007F140013F0383FFFC06C13FE6CEBFF80000314E0C66C13F8010113FCEB0007EC00 FE0078147F00FC143F151F7EA26C143F6D133E6D13FE9038F007FC90B5FC15F815E000F8 148039701FFC0020247AA32C>I<131E133FA9007FB6FCB71280A36C1500D8003FC8FCB1 ED03C0ED07E0A5EC800F011FEB1FC0ECE07F6DB51280160001035B6D13F89038003FE023 2E7EAD2C>I<3A7FF003FF80486C487FA3007F7F0001EB000FB3A3151FA2153F6D137F39 00FE03FF90B7FC6D15807F6D13CF902603FE07130029247FA32C>I<3A7FFF01FFFCB514 FE148314016C15FC3A03E0000F80A26D131F00011500A26D5B0000143EA26D137E017C13 7CA2017E13FC013E5BA2EB3F01011F5BA21483010F5BA214C701075BA214EF01035BA214 FF6D90C7FCA26D5A147C27247EA32C>II<3A3FFF03FFF048018713F8A36C010313F03A00FC007E005D90387E01F8013F5BEB1F 83EC87E090380FCFC0903807EF80EB03FF6D90C7FC5C6D5A147C14FE130180903803EF80 903807CFC0EB0FC7EC83E090381F01F0013F7FEB7E00017C137C49137E0001803A7FFF01 FFFC1483B514FE6C15FC140127247EA32C>I<3A7FFF01FFFCB5008113FE148314816C01 0113FC3A03E0000F806C7E151F6D140012005D6D133E137C017E137E013E137CA2013F13 FC6D5BA2EB0F815DA2EB07C1ECC3E0A2EB03E3ECE7C0130114F75DEB00FFA292C7FC80A2 143EA2147E147CA214FC5CA2EA0C01003F5BEA7F83EB87E0EA7E0F495A387FFF806C90C8 FC6C5A6C5AEA07E027367EA32C>I<15FF02071380141F147F91B512004913C04AC7FCEB 03F85CB31307EB1FE013FF007F5BB55A49C8FC6D7E6C7FC67F131FEB07F01303B380EB01 FEECFFC06D13FF6E1380141F14070200130021417BB92C>123 D 125 D E /Fd 72 123 df11 DIII<001C131C007F137F39FF80FF80A26D13C0A3007F137F001C 131C00001300A40001130101801380A20003130301001300485B00061306000E130E485B 485B485B006013601A197DB92A>34 D<121C127FEAFF80A213C0A3127F121C1200A41201 1380A2120313005A1206120E5A5A5A12600A1979B917>39 D<146014E0EB01C0EB0380EB 0700130E131E5B5BA25B485AA2485AA212075B120F90C7FCA25A121EA2123EA35AA65AB2 127CA67EA3121EA2121F7EA27F12077F1203A26C7EA26C7E1378A27F7F130E7FEB0380EB 01C0EB00E01460135278BD20>I<12C07E12707E7E7E120F6C7E6C7EA26C7E6C7EA21378 A2137C133C133E131EA2131F7FA21480A3EB07C0A6EB03E0B2EB07C0A6EB0F80A31400A2 5B131EA2133E133C137C1378A25BA2485A485AA2485A48C7FC120E5A5A5A5A5A13527CBD 20>I<121C127FEAFF80A213C0A3127F121C1200A412011380A2120313005A1206120E5A 5A5A12600A19798817>44 DI<121C127FEAFF80A5EA7F00121C 0909798817>I<150C151E153EA2153C157CA2157815F8A215F01401A215E01403A215C0 1407A21580140FA215005CA2141E143EA2143C147CA2147814F8A25C1301A25C1303A249 5AA25C130FA291C7FC5BA2131E133EA2133C137CA2137813F8A25B1201A25B1203A25B12 07A25B120FA290C8FC5AA2121E123EA2123C127CA2127812F8A25A12601F537BBD2A>I< EB03F8EB1FFF90387E0FC09038F803E03901E000F0484813780007147C48487FA248C77E A2481580A3007EEC0FC0A600FE15E0B3007E15C0A4007F141F6C1580A36C15006D5B000F 143EA26C6C5B6C6C5B6C6C485A6C6C485A90387E0FC0D91FFFC7FCEB03F8233A7DB72A> I III<1538A2157815F8 A2140114031407A2140F141F141B14331473146314C313011483EB030313071306130C13 1C131813301370136013C01201EA038013005A120E120C5A123812305A12E0B712F8A3C7 3803F800AB4A7E0103B512F8A325397EB82A>I<0006140CD80780133C9038F003F890B5 FC5D5D158092C7FC14FC38067FE090C9FCABEB07F8EB3FFE9038780F803907E007E09038 8003F0496C7E12066E7EC87EA28181A21680A4123E127F487EA490C71300485C12E00060 5C12700030495A00385C6C1303001E495A6C6C485A3907E03F800001B5C7FC38007FFCEB 1FE0213A7CB72A>II<12301238123E003FB612E0A3 16C05A168016000070C712060060140E5D151800E01438485C5D5DC712014A5A92C7FC5C 140E140C141C5CA25CA214F0495AA21303A25C1307A2130FA3495AA3133FA5137FA96DC8 FC131E233B7BB82A>III<121C12 7FEAFF80A5EA7F00121CC7FCB2121C127FEAFF80A5EA7F00121C092479A317>I<121C12 7FEAFF80A5EA7F00121CC7FCB2121C127F5A1380A4127F121D1201A412031300A25A1206 A2120E5A121812385A1260093479A317>I63 D<1538A3157CA315FEA34A7EA34A6C7EA202077F EC063FA2020E7FEC0C1FA2021C7FEC180FA202387FEC3007A202707FEC6003A202C07F15 01A2D901807F81A249C77F167FA20106810107B6FCA24981010CC7121FA2496E7EA3496E 7EA3496E7EA213E0707E1201486C81D80FFC02071380B56C90B512FEA3373C7DBB3E>65 DI<913A01FF800180020FEBE003027F13F8903A01FF807E07903A03 FC000F0FD90FF0EB039F4948EB01DFD93F80EB00FF49C8127F01FE153F12014848151F48 48150FA248481507A2485A1703123F5B007F1601A35B00FF93C7FCAD127F6DED0180A312 3F7F001F160318006C7E5F6C7E17066C6C150E6C6C5D00001618017F15386D6C5CD91FE0 5C6D6CEB03C0D903FCEB0F80902701FF803FC7FC9039007FFFFC020F13F002011380313D 7BBA3C>III< B812F8A30001903880001F6C90C71201EE00FC177C173C171CA2170CA4170E1706A2ED01 80A21700A41503A21507151F91B5FCA3EC001F15071503A21501A692C8FCAD4813C0B612 C0A32F397DB836>I72 DI76 DIIIIIII<003FB812E0A3D9C003EB001F273E0001FE130348 EE01F00078160000701770A300601730A400E01738481718A4C71600B3B0913807FF8001 1FB612E0A335397DB83C>II87 D<007FB590383FFFFCA3C601F801071380D9 7FE0D903FCC7FC013FEC01F06D6C5C5F6D6C5C6D6C13034CC8FC6D6C1306160E6D6C5B6D EB8018163891387FC0306E6C5A16E06E6C5A91380FF18015FB6EB4C9FC5D14036E7EA26E 7F6F7EA24B7E15DF9138019FF09138038FF8150F91380607FC91380E03FE140C4A6C7EEC 38000230804A6D7E14E04A6D7E49486D7E130391C76C7E01066E7E130E010C6E7E011C14 01013C8101FE822607FF80010713E0B500E0013FEBFF80A339397EB83E>I<3901800180 000313033907000700000E130E485B0018131800381338003013300070137000601360A2 00E013E0485BA400CE13CE39FF80FF806D13C0A3007F137FA2393F803F80390E000E001A 1974B92A>92 D97 DIIII<147E903803FF8090380F C1E0EB1F8790383F0FF0137EA213FCA23901F803C091C7FCADB512FCA3D801F8C7FCB3AB 487E387FFFF8A31C3B7FBA19>III< EA0380EA0FE0487EA56C5AEA0380C8FCAAEA03F012FFA312071203B3AA487EB512C0A312 387EB717>IIII<2703F00FF0EB1FE000FFD93FFCEB7FF8 913AF03F01E07E903BF1C01F83803F3D0FF3800FC7001F802603F70013CE01FE14DC49D9 07F8EB0FC0A2495CA3495CB3A3486C496CEB1FE0B500C1B50083B5FCA340257EA445>I< 3903F00FF000FFEB3FFCECF03F9039F1C01F803A0FF3800FC03803F70013FE496D7EA25B A35BB3A3486C497EB500C1B51280A329257EA42E>II<3903F01FE000 FFEB7FF89038F1E07E9039F3801F803A07F7000FC0D803FEEB07E049EB03F04914F84913 0116FC150016FEA3167FAA16FEA3ED01FCA26DEB03F816F06D13076DEB0FE001F614C090 39F7803F009038F1E07E9038F0FFF8EC1FC091C8FCAB487EB512C0A328357EA42E>I I<3807E01F00FFEB7FC09038E1E3E09038E387F0380FE707EA03E613EE9038EC03E09038 FC0080491300A45BB3A2487EB512F0A31C257EA421>II<1318A51338A31378A313F8120112031207 001FB5FCB6FCA2D801F8C7FCB215C0A93800FC011580EB7C03017E13006D5AEB0FFEEB01 F81A347FB220>IIIIII<003FB512FCA2EB8003D83E0013F8003CEB07F00038EB0FE012 300070EB1FC0EC3F800060137F150014FE495AA2C6485A495AA2495A495A495AA290387F 000613FEA2485A485A0007140E5B4848130C4848131CA24848133C48C7127C48EB03FC90 B5FCA21F247EA325>I E /Fe 43 123 df45 D<913803FFC0023F13FC91B6FC010315C0010F018113F0903A1FFC003FF849486D7E4948 6D7E49486D7E48496D138048496D13C0A24817E04890C813F0A34817F8A24817FC49157F A3007F17FEA600FF17FFB3A5007F17FEA6003F17FCA26D15FFA26C17F8A36C17F0A26C6D 4913E0A26C6D4913C06C17806E5B6C6D4913006D6C495AD91FFCEB3FF8903A0FFF81FFF0 6D90B55A01011580D9003F01FCC7FC020313C0384F7BCD43>48 D<157815FC1403140714 1F14FF130F0007B5FCB6FCA2147F13F0EAF800C7FCB3B3B3A6007FB712FEA52F4E76CD43 >II<91380FFFC091B512FC0107ECFF80011F15E090 263FF8077F9026FF800113FC4848C76C7ED803F86E7E491680D807FC8048B416C080486D 15E0A4805CA36C17C06C5B6C90C75AD801FC1680C9FC4C13005FA24C5A4B5B4B5B4B13C0 4B5BDBFFFEC7FC91B512F816E016FCEEFF80DA000713E0030113F89238007FFE707E7013 807013C018E07013F0A218F8A27013FCA218FEA2EA03E0EA0FF8487E487E487EB57EA318 FCA25E18F891C7FC6C17F0495C6C4816E001F04A13C06C484A1380D80FF84A13006CB44A 5A6CD9F0075BC690B612F06D5D011F1580010302FCC7FCD9001F1380374F7ACD43>I<17 7C17FEA2160116031607160FA2161F163F167FA216FF5D5DA25D5DED1FBFED3F3F153E15 7C15FCEC01F815F0EC03E01407EC0FC01580EC1F005C147E147C5C1301495A495A5C495A 131F49C7FC133E5B13FC485A5B485A1207485A485A90C8FC123E127E5ABA12C0A5C96C48 C7FCAF020FB712C0A53A4F7CCE43>III<121F7F7F EBFF8091B81280A45A1900606060A2606060485F0180C86CC7FC007EC95A4C5A007C4B5A 5F4C5A160F4C5A484B5A4C5A94C8FC16FEC812014B5A5E4B5A150F4B5AA24B5AA24B5A15 FFA24A90C9FCA25C5D1407A2140FA25D141FA2143FA4147F5DA314FFA55BAC6D5BA2EC3F C06E5A395279D043>I<913807FFC0027F13FC0103B67E010F15E090261FFC0113F8903A 3FE0003FFCD97F80EB0FFE49C76C7E48488048486E1380000717C04980120F18E0177FA2 121F7FA27F7F6E14FF02E015C014F802FE4913806C7FDBC00313009238F007FE6C02F85B 9238FE1FF86C9138FFBFF06CEDFFE017806C4BC7FC6D806D81010F15E06D81010115FC01 0781011F81491680EBFFE748018115C048D9007F14E04848011F14F048487F4848130303 0014F8484880161F4848020713FC1601824848157F173FA2171FA2170FA218F8A27F007F 17F06D151FA26C6CED3FE0001F17C06D157F6C6CEDFF806C6C6C010313006C01E0EB0FFE 6C01FCEBFFFC6C6CB612F06D5D010F1580010102FCC7FCD9000F13C0364F7ACD43>I<91 380FFF8091B512F8010314FE010F6E7E4901037F90267FF8007F4948EB3FF048496D7E48 4980486F7E484980824817805A91C714C05A7013E0A218F0B5FCA318F8A618FCA46C5DA3 7EA25E6C7F6C5DA26C5D6C7F6C6D137B6C6D13F390387FF803011FB512E36D14C3010302 8313F89039007FFE03EC00401500A218F05EA3D801F816E0487E486C16C0487E486D4913 80A218005E5F4C5A91C7FC6C484A5A494A5A49495B6C48495BD803FC010F5B9027FF807F FEC7FC6C90B55A6C6C14F06D14C0010F49C8FC010013F0364F7ACD43>I66 D<932601FFFCEC01C0047FD9FFC0130303 07B600F81307033F03FE131F92B8EA803F0203DAE003EBC07F020F01FCC7383FF0FF023F 01E0EC0FF94A01800203B5FC494848C9FC4901F8824949824949824949824949824990CA 7E494883A2484983485B1B7F485B481A3FA24849181FA3485B1B0FA25AA298C7FC5CA2B5 FCAE7EA280A2F307C07EA36C7FA21B0F6C6D1980A26C1A1F6C7F1C006C6D606C6D187EA2 6D6C606D6D4C5A6D6D16036D6D4C5A6D6D4C5A6D01FC4C5A6D6DEE7F806D6C6C6C4BC7FC 6E01E0EC07FE020F01FEEC1FF80203903AFFE001FFF0020091B612C0033F93C8FC030715 FCDB007F14E0040101FCC9FC525479D261>I70 D73 D78 D<93380FFFC00303B6FC031F15E092B712FC0203D9FC0013FF020F01C0010F13C0023F90 C7000313F0DA7FFC02007F494848ED7FFE4901E0ED1FFF49496F7F49496F7F4990C96C7F 49854948707F4948707FA24849717E48864A83481B804A83481BC0A2481BE04A83A2481B F0A348497113F8A5B51AFCAF6C1BF86E5FA46C1BF0A26E5F6C1BE0A36C6D4D13C0A26C6D 4D1380A26C1B006C6D4D5A6E5E6C626D6C4C5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D4B5B6D 6D4B90C7FC6D6D4B5A6D01FF02035B023F01E0011F13F0020F01FC90B512C0020390B7C8 FC020016FC031F15E0030392C9FCDB001F13E0565479D265>I82 D<91260FFF80130791B500F85B010702FF5B011FED C03F49EDF07F9026FFFC006D5A4801E0EB0FFD4801800101B5FC4848C87E48488149150F 001F824981123F4981007F82A28412FF84A27FA26D82A27F7F6D93C7FC14C06C13F014FF 15F86CECFF8016FC6CEDFFC017F06C16FC6C16FF6C17C06C836C836D826D82010F821303 010082021F16801400030F15C0ED007F040714E01600173F050F13F08383A200788200F8 82A3187FA27EA219E07EA26CEFFFC0A27F6D4B13806D17006D5D01FC4B5A01FF4B5A02C0 4A5A02F8EC7FF0903B1FFFC003FFE0486C90B65AD8FC0393C7FC48C66C14FC48010F14F0 48D9007F90C8FC3C5479D24B>I<003FBC1280A59126C0003F9038C0007F49C71607D87F F8060113C001E08449197F49193F90C8171FA2007E1A0FA3007C1A07A500FC1BE0481A03 A6C994C7FCB3B3AC91B912F0A553517BD05E>I97 D<913801FFF8021FEBFF8091B612F0010315FC010F90 38C00FFE903A1FFE0001FFD97FFC491380D9FFF05B4817C048495B5C5A485BA2486F1380 91C7FC486F1300705A4892C8FC5BA312FFAD127F7FA27EA2EF03E06C7F17076C6D15C07E 6E140F6CEE1F806C6DEC3F006C6D147ED97FFE5C6D6CEB03F8010F9038E01FF0010390B5 5A01001580023F49C7FC020113E033387CB63C>99 D<4DB47E0407B5FCA5EE001F1707B3 A4913801FFE0021F13FC91B6FC010315C7010F9038E03FE74990380007F7D97FFC0101B5 FC49487F4849143F484980485B83485B5A91C8FC5AA3485AA412FFAC127FA36C7EA37EA2 6C7F5F6C6D5C7E6C6D5C6C6D49B5FC6D6C4914E0D93FFED90FEFEBFF80903A0FFFC07FCF 6D90B5128F0101ECFE0FD9003F13F8020301C049C7FC41547CD24B>I<913803FFC0023F 13FC49B6FC010715C04901817F903A3FFC007FF849486D7E49486D7E4849130F48496D7E 48178048497F18C0488191C7FC4817E0A248815B18F0A212FFA490B8FCA318E049CAFCA6 127FA27F7EA218E06CEE01F06E14037E6C6DEC07E0A26C6DEC0FC06C6D141F6C6DEC3F80 6D6CECFF00D91FFEEB03FE903A0FFFC03FF8010390B55A010015C0021F49C7FC020113F0 34387CB63D>IIII<137F497E000313E0487FA2487FA76C5BA26C5BC613806DC7FC90C8FCAD EB3FF0B5FCA512017EB3B3A6B612E0A51B547BD325>I107 D III<913801FFE0021F13FE91B6 12C0010315F0010F9038807FFC903A1FFC000FFED97FF86D6C7E49486D7F48496D7F4849 6D7F4A147F48834890C86C7EA24883A248486F7EA3007F1880A400FF18C0AC007F1880A3 003F18006D5DA26C5FA26C5F6E147F6C5F6C6D4A5A6C6D495B6C6D495B6D6C495BD93FFE 011F90C7FC903A0FFF807FFC6D90B55A010015C0023F91C8FC020113E03A387CB643>I< 903A3FF001FFE0B5010F13FE033FEBFFC092B612F002F301017F913AF7F8007FFE0003D9 FFE0EB1FFFC602806D7F92C76C7F4A824A6E7F4A6E7FA2717FA285187F85A4721380AC1A 0060A36118FFA2615F616E4A5BA26E4A5B6E4A5B6F495B6F4990C7FC03F0EBFFFC9126FB FE075B02F8B612E06F1480031F01FCC8FC030313C092CBFCB1B612F8A5414D7BB54B>I< 90397FE003FEB590380FFF80033F13E04B13F09238FE1FF89139E1F83FFC0003D9E3E013 FEC6ECC07FECE78014EF150014EE02FEEB3FFC5CEE1FF8EE0FF04A90C7FCA55CB3AAB612 FCA52F367CB537>114 D<903903FFF00F013FEBFE1F90B7FC120348EB003FD80FF81307 D81FE0130148487F4980127F90C87EA24881A27FA27F01F091C7FC13FCEBFFC06C13FF15 F86C14FF16C06C15F06C816C816C81C681013F1580010F15C01300020714E0EC003F0307 13F015010078EC007F00F8153F161F7E160FA27E17E07E6D141F17C07F6DEC3F8001F8EC 7F0001FEEB01FE9039FFC00FFC6DB55AD8FC1F14E0D8F807148048C601F8C7FC2C387CB6 35>I<143EA6147EA414FEA21301A313031307A2130F131F133F13FF5A000F90B6FCB8FC A426003FFEC8FCB3A9EE07C0AB011FEC0F8080A26DEC1F0015806DEBC03E6DEBF0FC6DEB FFF86D6C5B021F5B020313802A4D7ECB34>IIII<007FB500F090387FFFFEA5C66C48C7000F90C7FC6D6CEC07F86D6D5C6D6D 495A6D4B5A6F495A6D6D91C8FC6D6D137E6D6D5B91387FFE014C5A6E6C485A6EEB8FE06E EBCFC06EEBFF806E91C9FCA26E5B6E5B6F7E6F7EA26F7F834B7F4B7F92B5FCDA01FD7F03 F87F4A486C7E4A486C7E020F7FDA1FC0804A486C7F4A486C7F02FE6D7F4A6D7F495A4948 6D7F01076F7E49486E7E49486E7FEBFFF0B500FE49B612C0A542357EB447>II<001FB8FC1880A3912680007F130001FCC7B5FC01F0495B495D49495B 495B4B5B48C75C5D4B5B5F003E4A90C7FC92B5FC4A5B5E4A5B5CC7485B5E4A5B5C4A5B93 C8FC91B5FC495B5D4949EB0F805B495B5D495B49151F4949140092C7FC495A485E485B5C 485E485B4A5C48495B4815074849495A91C712FFB8FCA37E31357CB43C>I E /Ff 12 117 df<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F000B0B6C8A33>46 D<1608163E16FF5D15075DED3FFEED7FFC913801FFF0020713E04A1380023F1300EC7FFC 49485A4913E0010F13804990C7FCEB7FFC495A000313E0485B001F90C8FCEA7FFE13F848 5A13C013F06C7E13FEEA1FFF000713C06C7FC613F86D7EEB1FFF6D7F010313E06D13F86D 6C7E6EB4FC020F13806E13E0020113F09138007FFCED3FFEED0FFF81150181163E160828 337BB733>60 D<1210127CB4FC7F13E07FEA7FFC6C7E380FFF806C13E000017F6C13FCEB 3FFE6D6C7E01077F010113F06D7FEC3FFE6E7E020713C06E13E0020013F8ED7FFE151FED 0FFF1503150FED1FFE157FEDFFF8020313E04A13C0021F13004A5AECFFF8495B010713C0 011F5B4948C7FCEBFFFC4813F000075B481380D83FFEC8FC485AEAFFF05B138090C9FC12 7C121028337BB733>62 D64 D97 D99 DI<14E0EB03F8A2497EA36D5AA2EB00E091C8FCAA38 3FFFF8487FA47EEA0001B3AD007FB612C0B712E016F0A216E06C15C0243E78BD33>105 D<02FC137E3B7FC3FF01FF80D8FFEF01877F90B500CF7F15DF92B57E6C010F13872607FE 07130301FC01FE7F9039F803FC01A201F013F8A401E013F0B3A53C7FFE0FFF07FF80B548 018F13C0A46C486C01071380322C80AB33>109 D111 D114 D116 D E /Fg 17 117 df<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A31201138012 0313005A1206120E5A5A5A12600B1D78891B>44 D<143014F013011303131F13FFB5FC13 E713071200B3B3B0497E497E007FB6FCA3204278C131>49 DI<000615C0D807C0130701FCEB7F8090B612005D5D5D15E0158026 063FFCC7FC90C9FCAE14FF010713C090381F01F090383800FC01F0137ED807C07F49EB1F 8016C090C7120F000615E0C8EA07F0A316F81503A216FCA5123E127F487EA416F890C712 075A006015F0A20070140F003015E00038EC1FC07E001EEC3F806CEC7F006C6C13FE6C6C 485A3901F807F039007FFFE0011F90C7FCEB07F826447BC131>53 D<121CA2EA1F8090B712C0A3481680A217005E0038C8120C0030151C00705D0060153016 705E5E4814014B5A4BC7FCC81206150E5D151815385D156015E04A5AA24A5A140792C8FC 5CA25C141E143EA2147E147CA214FCA21301A3495AA41307A6130FAA6D5AEB01C02A457B C231>55 D<14FF010713E0011F13F890387F80FC9038FC007E48487F4848EB1F804848EB 0FC0000FEC07E0485AED03F0485A16F8007F140190C713FCA25AA216FE1500A516FFA46C 5CA36C7E5D121F7F000F5C6C6C1306150E6C6C5B6C6C5BD8007C5B90383F01E090390FFF 80FE903801FE0090C8FC150116FCA4ED03F8A216F0D80F801307486C14E0486C130F16C0 ED1F80A249EB3F0049137E001EC75A001C495A000F495A3907E01FE06CB51280C649C7FC EB1FF028447CC131>57 D72 D77 D79 D97 DII101 D111 D<3903F803F000FFEB1FFCEC3C3EEC 707F0007EBE0FF3803F9C000015B13FBEC007E153C01FF13005BA45BB3A748B4FCB512FE A3202C7DAB26>114 D<90383FE0183901FFFC383907E01F78390F0003F8001E13014813 00007C1478127800F81438A21518A27EA27E6C6C13006C7E13FC383FFFE06C13FC6C13FF 6C14C06C14E0C614F0011F13F81300EC0FFC140300C0EB01FE1400157E7E153EA27EA36C 143C6C147C15786C14F86CEB01F039F38003E039F1F00F8039E07FFE0038C00FF01F2E7D AC26>I<1306A5130EA4131EA3133E137EA213FE12011207001FB512F0B6FCA2C648C7FC B3A4150CAA017E131C017F1318A26D133890381F8030ECC070903807E0E0903801FFC090 38007F001E3E7EBC26>I E /Fh 27 122 df<120FEA3FC0EA7FE0EAFFF0A213F8A313FC 127FEA3FDCEA0F1C1200A7133C1338A31378A2137013F0A213E01201EA03C0A2EA078013 005A121E5A5AA212300E2874E324>39 D<4AB4FC021F13F0027F13FC903901FF01FF903A 03F8003F80D90FE0EB0FE049486D7E49486D7E49C76C7E017E140049157E0001167F4981 0003178049151F000717C049150F000F17E0A3001F17F0491507A2003F17F8A54848ED03 FCA700FF17FEB3A8007F17FCA56D1507A3003F17F8A4001F17F06D150FA2000F17E0A36C 6CED1FC0A2000317806D153F000117006D5D6C6C15FE017E5D017F14016D6C495A6D6C49 5A6D6C495AD903F8EB3F806DB448B4C7FC9039007FFFFC021F13F0020190C8FC37607BDD 42>48 D<1778A217F81601A216031607A2160F161FA2163FA2167F16FF16EF1501ED03CF 168F1507160F150E151E151C153C1578157015F015E0EC01C0140315801407EC0F00140E 141E141C5C1478147014F0495A5C13035C49C7FC5B130E131E5B133813785B5B12015B12 03485A90C8FC5A121E121C123C12385A12F0BA12E0A4C9D80FF8C7FCB34C7EEE7FFF4AB7 12C0A43B5F7DDE42>52 D54 D<913803FF80021F13F891B512FE01036E7E4948C613E0D91FE0EB1FF0D93F80EB07 FC017EC7EA01FE496E7E48488149ED3F804848ED1FC00007160F4916E0000F1607A24916 F0001F1603A57FA26D150718E07F6C6C150F6D16C07F6C6CED1F8002C0143F6C6D150002 F8147E6C6D5C6C6D495A6E6C485A6D9038C00FE06D9038F01F80010F6D48C7FC6DEBFEFC 0101EBFFF06D5C143F6E13F86E7F4A7F027F6D7E902601F87F7F49486C13F090260FC00F 7F49486C7F90263F000113FF017E6D148049143F48486E13C048486E13E04848020313F0 4848809338007FF84848153F003F161F90C9EA0FFC481607007E160318FE170100FE1600 5AA2187EA66C177C007E17FCA2007F17F86C16016D16F0001F16036D16E06C6C15076C6C ED0FC06DED1F806C6CED3F006C6C15FE26007F80495AD93FE0EB0FF0D90FFEEB7FE06DB6 128001014AC7FCD9003F13F80203138037607BDD42>56 D<170FA34D7EA24D7EA34D7EA3 4D7EA34C7F17DFA29338039FFC178FA29338070FFE1707040F7FEE0E03A2041E80EE1C01 A2043C80EE3800A24C80187FA24C80183FA24B4880181F0303814C130FA203078193C712 07A24B81030E80A24B8284A24B8284A24B82197F03F0824B153FA20201834B151FA20203 8392B8FCA24A83A292C91207020E8385A24A8485023C84023882A20278840270177FA202 F0844A173FA24948841A1FA24948841A0FA249CB7F1A074985865B496C85497E48486C4D 7F000F01F8051F13F0B60407B612F0A45C657DE463>65 D67 DI73 D76 D82 D97 D<4AB47E020F13F8023F13FE9139FF007F80D903FCEB07E0D907F0EB01F0D91FE0EB0078 49488049488049C87E48485D4915FF00034B138048485CA2485AA2485AA2003F6F130049 EC007C94C7FC127FA35B12FFAD127F7FA4123F7FA2001FEE01C07F000F16036D16801207 6C6C15076D160000015E6C6C151E6D6C5C6D6C5C6D6C5CD90FF8495AD903FCEB07C0903A 00FF803F8091263FFFFEC7FC020F13F80201138032417CBF3A>99 D<181EEF3FFEEE07FFA4EE000F1703A21701B3AAEDFF80020F13F8023F13FE9139FF803F 81903A03FC0007C14948EB01E1D91FE0EB00F94948147D4948143D49C8121F4848150F49 1507120348481503491501120F121F5BA2123F5B127FA45B12FFAD127F7FA3123FA27F12 1FA26C6C1503A26C6C150712036D150F6C6C151F0000163D137F6D6CECF9FF6D6CEB01F1 D90FF0D903C113C06D6CD90F81EBFF80D901FFEB7F019039007FFFFC021F13E002010100 91C7FC41657CE349>II103 D<133C13FF487F487FA66C5B6C90C7FC133C90C8FCB3A2EB03C0EA07FF127FA41201EA00 7FA2133FB3B3AC497E497EB612E0A41B5F7DDE23>105 D108 DIIII<9039078003F8D807FFEB0FFFB5013F13 C092387C0FE0913881F01F9238E03FF00001EB838039007F8700148FEB3F8E029CEB1FE0 EE0FC00298EB030002B890C7FCA214B014F0A25CA55CB3B0497EEBFFF8B612FCA42C3F7C BE33>114 D<9139FFE00180010FEBFC03017FEBFF073A01FF001FCFD803F8EB03EFD807 E0EB01FF48487F4848147F48C8123F003E151F007E150F127CA200FC1507A316037EA27E 7F6C7E6D91C7FC13F8EA3FFE381FFFF06CEBFF806C14F86C14FF6C15C06C6C14F0011F80 010714FED9007F7F02031480DA003F13C01503030013E0167F00E0ED1FF0160F17F86C15 071603A36C1501A37EA26C16F016037E17E06D14076DEC0FC06D1580D8FDF0141FD8F8F8 EC7F00013E14FC3AF01FC00FF80107B512E0D8E001148027C0003FF8C7FC2D417DBF34> I<1438A71478A414F8A31301A31303A21307130F131FA2137F13FF1203000F90B6FCB8FC A3260007F8C8FCB3AE17E0AE6D6CEB01C0A316036D6C148016076D6C14006E6C5A91383F C01E91381FF07C6EB45A020313E09138007F802B597FD733>II121 D E /Fi 6 122 df54 D 56 D83 D107 D110 D121 D E end TeXDict begin 1 0 bop 1705 963 a Fi(Syn68k)523 1146 y Fh(ARDI's)42 b(dynamically)i(compiling)g(68LC040)d(em)l(ulator)1276 1386 y Fg(Mat)33 b(Hostetter)g Ff()1591 1582 y Fg(Octob)s(er)f(27,)h(1995)523 1939 y Fe(1)135 b(Ov)l(erview)523 2121 y Fd(This)36 b(do)r(cumen)n(t)h(is)f(mean)n(t)h (to)f(giv)n(e)f(a)h(concise)g(tec)n(hnical)g(summary)g(of)g(ho)n(w)g (syn68k)523 2221 y(w)n(orks.)648 2321 y(\\Syn68k,")22 b(ARDI's)j(68LC040)c(em)n(ulator,)j(is)g(b)r(oth)g(highly)g(p)r (ortable)f(and)h(fast.)35 b(The)523 2420 y(p)r(ortable)23 b(core)g(of)h(syn68k,)g(whic)n(h)g(w)n(orks)e(b)n(y)i(dynamically)f (compiling)h(680x0)e(co)r(de)i(in)n(to)523 2520 y(an)39 b(e\016cien)n(t)h(in)n(terpreted)e(form,)k(w)n(as)d(designed)f(to)i (run)f(on)g(all)g(ma)5 b(jor)38 b(CPU's.)72 b(On)523 2619 y(supp)r(orted)28 b(arc)n(hitectures,)f(syn68k)g(can)h(also)f (translate)g(680x0)f(co)r(de)i(in)n(to)g(nativ)n(e)g(co)r(de)523 2719 y(that)g(the)g(host)f(pro)r(cessor)f(can)h(run)g(directly)-7 b(.)523 2994 y Fe(2)135 b(Syngen)523 3175 y Fd(ARDI's)25 b(\\syngen")e(system)h(analyzes)f(a)h(lisp-lik)n(e)g(\014le)h (describing)f(the)g(bit)h(patterns)g(and)523 3275 y(seman)n(tics)19 b(of)h(the)g(680x0)e(instruction)i(set)g(and)f(pro)r(duces)h(lo)r(okup) f(tables)h(and)f(C)h(co)r(de)g(for)523 3375 y(the)g(run)n(time)g (system)g(to)f(use.)35 b(This)19 b(pro)r(cess)g(tak)n(es)g(place)g (only)h(when)g(syn68k)e(is)i(built,)i(so)523 3474 y(w)n(e)i(can)g (a\013ord)g(extensiv)n(e)g(analysis)f(here.)35 b(The)25 b(co)r(de)f(and)g(tables)h(generated)e(b)n(y)h(syngen)523 3574 y(dep)r(end)30 b(somewhat)e(on)h(the)h(c)n(haracteristics)d(of)i (the)h(host)f(pro)r(cessor;)f(for)g(example,)i(on)523 3674 y(a)h(little)i(endian)e(mac)n(hine)g(it)i(is)e(adv)-5 b(an)n(tageous)30 b(to)h(b)n(yte)h(sw)n(ap)e(some)h(extracted)g(680x0) 523 3773 y(op)r(erands)c(at)g(compile)g(time)i(instead)e(of)h(at)f(run) n(time.)648 3873 y(The)d(680x0)e(description)i(\014le)g(can)g(describ)r (e)g(m)n(ultiple)h(w)n(a)n(ys)e(to)h(em)n(ulate)g(an)n(y)f(partic-)523 3972 y(ular)g(680x0)f(op)r(co)r(de.)36 b(The)24 b(run)n(time)f(system)h (lo)r(oks)f(at)h(what)g(CC)g(bits)g(are)f(liv)n(e)g(after)h(the)523 4072 y(instruction)32 b(and)f(c)n(ho)r(oses)g(the)h(fastest)g(v)-5 b(arian)n(t)30 b(it)j(can)e(legally)g(use.)49 b(In)32 b(the)g(follo)n(wing)523 4172 y(example,)f(w)n(e)f(ha)n(v)n(e)f(t)n(w)n (o)h(CC)h(v)-5 b(arian)n(ts)29 b(of)h(lsrw;)i(one)e(computes)g(no)h(CC) f(bits,)i(and)e(the)523 4271 y(other)d(computes)g(all)h(of)f(them:)523 4454 y Fc(\(defopcode)39 b(lsrw_ea)610 4554 y(\(list)j(68000)f (amode_alterable_m)o(em)o(ory)c(\(\))42 b(\(list)g("1110001011mmmmm)o (m"\))o(\))610 4653 y(\(list)g("-----")e("-----")h(dont_expand)523 4753 y(\(assign)g($1.muw)g(\(>>)h($1.muw)f(1\)\)\))610 4852 y(\(list)h("CN0XZ")e("-----")h(dont_expand)1934 5147 y Fd(1)p eop 2 1 bop 523 614 a Fc(\(list)567 714 y(\(assign)40 b(ccx)j(\(assign)d (ccc)j(\(&)f($1.muw)g(1\)\)\))567 814 y(\(ASSIGN_NNZ_WOR)o(D)c (\(assign)i($1.muw)h(\(>>)i($1.muw)e(1\)\)\)\)\)\))648 977 y Fd(The)27 b(680x0)f(description)h(\014le)h(can)g(also)e(sp)r (ecify)i(whic)n(h)g(680x0)e(op)r(erands)g(should)i(b)r(e)523 1076 y(\\expanded")21 b(to)h(b)r(ecome)g(implicitly)h(kno)n(wn)f(b)n(y) g(the)h(corresp)r(onding)d(syn)n(thetic)j(op)r(co)r(de.)523 1176 y(F)-7 b(or)25 b(example,)h(fully)h(expanding)e(out)h(\\addl)g (dx,dy")f(w)n(ould)h(result)g(in)g(64)f(syn)n(thetic)h(op-)523 1275 y(co)r(des,)20 b(one)f(for)f(eac)n(h)g(com)n(bination)g(of)h(data) g(register)e(op)r(erands.)33 b(This)19 b(results)f(in)h(smaller)523 1375 y(and)32 b(faster)g(syn)n(thetic)g(op)r(co)r(des)g(at)g(the)h(exp) r(ense)f(of)h(increasing)e(the)h(total)g(n)n(um)n(b)r(er)g(of)523 1475 y(syn)n(thetic)e(op)r(co)r(des.)45 b(T)-7 b(o)30 b(conserv)n(e)f(space,)h(w)n(e)g(only)g(expand)g(out)h(common)f(680x0)e (op-)523 1574 y(co)r(des.)58 b(On)34 b(host)h(arc)n(hitectures)e(where) h(w)n(e)h(can)f(compile)h(to)f(nativ)n(e)g(co)r(de,)j(w)n(e)d(don't)523 1674 y(w)n(aste)27 b(space)g(b)n(y)g(\\expanding)f(out")i(common)f(syn) n(thetic)g(op)r(co)r(des.)523 1945 y Fe(3)135 b(T)-11 b(est)45 b(suites)523 2127 y Fd(ARDI)29 b(has)f(a)g(large)f(set)i(of)f (test)h(suites)f(that)h(try)f(thousands)g(up)r(on)g(thousands)g(of)g(v) -5 b(ari-)523 2227 y(ations)31 b(of)h(680x0)e(op)r(co)r(des)i(and)f (compare)g(the)h(results)g(to)g(those)f(generated)g(b)n(y)h(a)f(real) 523 2326 y(68040.)39 b(These)29 b(test)h(suites)f(ha)n(v)n(e)f(pro)n(v) n(en)g(to)h(b)r(e)h(an)f(in)n(v)-5 b(aluable)28 b(debugging)g(to)r(ol,) i(b)r(oth)523 2426 y(as)d(new)g(features)f(are)g(added)h(and)g(as)g(w)n (e)g(ha)n(v)n(e)f(p)r(orted)h(syn68k)e(to)i(other)g(arc)n(hitectures) 523 2525 y(\(notably)j(80x86,)f(680x0,)g(i860)f(and)i(Alpha\).)45 b(Our)30 b(nativ)n(e)f(co)r(de)h(supp)r(ort)g(is)g(so)g(recen)n(t)523 2625 y(that)k(our)e(test)i(suites)g(do)f(not)g(y)n(et)g(adequately)g (test)h(all)f(of)g(the)h(situations)f(that)h(arise)523 2725 y(when)28 b(generating)e(nativ)n(e)h(co)r(de,)g(but)i(w)n(e)e (plan)g(to)h(extend)g(them)g(in)g(the)g(near)e(future.)523 2996 y Fe(4)135 b(In)l(terpreted)46 b(co)t(de)523 3178 y Fd(Our)34 b(in)n(terpreted)g(co)r(de)h(consists)f(of)h(con)n(tiguous) e(sequences)h(of)h(\\syn)n(thetic)f(op)r(co)r(des")523 3277 y(and)j(their)g(op)r(erands.)65 b(Syngen)37 b(can)g(generate)f (ANSI)i(C,)f(but)h(when)g(compiled)f(with)523 3377 y(gcc)29 b(it)h(uses)g(C)g(language)e(extensions)h(that)h(mak)n(e)f(syn)n (thetic)h(op)r(co)r(des)f(p)r(oin)n(ters)g(to)h(the)523 3477 y(C)h(co)r(de)g(resp)r(onsible)f(for)g(in)n(terpreting)g(that)h (op)r(co)r(de.)47 b(This)31 b(\\threaded)f(in)n(terpreting")523 3576 y(en)n(tirely)d(eliminates)h(switc)n(h)f(dispatc)n(h)g(and)h(lo)r (op)f(o)n(v)n(erhead.)648 3676 y(T)-7 b(o)30 b(illustrate)g(the)h(ab)r (o)n(v)n(e)e(p)r(oin)n(ts,)j(here)e(is)g(the)h(assem)n(bly)f(language)e (generated)i(for)523 3775 y(the)25 b(syn)n(thetic)g(op)r(co)r(de)g (that)g(w)n(ould)f(handle)h(a)g(fully)g(expanded)g(\\addl)f(d0,d1")g (when)h(no)523 3875 y(CC)30 b(bit)h(v)-5 b(alues)29 b(are)g(required.) 43 b(This)30 b(is)g(what)g(gcc's)f(80x86)f(output)j(lo)r(oks)e(lik)n(e) h(\(edited)523 3975 y(for)j(readabilit)n(y\))f(after)g(w)n(e)h(run)g (our)f(in)n(terpreter)g(through)g(ARDI's)i(P)n(en)n(tium-sp)r(eci\014c) 523 4074 y(instruction)27 b(sc)n(heduling)g(P)n(erl)g(script:)523 4237 y Fc(movl)173 b(_d0,\045eax)345 b(;)43 b(fetch)f(d0)523 4337 y(movl)173 b(\(\045esi\),\045edi)213 b(;)43 b(fetch)f(next)g (synthetic)e(opcode)523 4436 y(addl)173 b(\045eax,_d1)345 b(;)43 b(do)g(the)f(add)523 4536 y(addl)173 b($4,\045esi)389 b(;)43 b(increment)d(synthetic)g(PC)523 4636 y(jmp)217 b(*\045edi)477 b(;)43 b(jump)f(to)h(next)f(synthetic)e(opcode)h (handler)648 4799 y Fd(W)-7 b(e)23 b(m)n(ust)g(emphasize)g(that)g(the)g (preceding)g(example)f(is)h(not)g(nativ)n(e)g(co)r(de)g(generated)523 4898 y(b)n(y)h(our)e(em)n(ulator,)i(but)g(merely)g(a)f(snipp)r(et)h(of) g(what)g(gcc)f(generates)f(for)h(our)g(in)n(terpreter.)1934 5147 y(2)p eop 3 2 bop 523 614 a Fd(This)38 b(giv)n(es)e(y)n(ou)h(some)g(idea)g(of)g (the)h(e\016ciency)g(of)f(the)h(p)r(ortable)f(comp)r(onen)n(t)h(of)f (our)523 714 y(em)n(ulator.)523 989 y Fe(5)135 b(Nativ)l(e)46 b(co)t(de)523 1170 y Fd(Syn68k)28 b(supp)r(orts)h(optional)f(arc)n (hitecture-sp)r(eci\014c)g(nativ)n(e)g(co)r(de)h(extensions.)40 b(On)29 b(sys-)523 1270 y(tems)h(where)f(they)h(are)f(presen)n(t,)h (the)g(run)n(time)f(system)h(tries)f(to)h(generate)e(nativ)n(e)i(co)r (de)523 1370 y(whenev)n(er)g(p)r(ossible.)48 b(In)32 b(those)f(rare)f(cases)g(when)i(it)g(cannot,)f(it)h(rev)n(erts)e(to)h (our)g(in)n(ter-)523 1469 y(preted)22 b(co)r(de.)35 b(Since)22 b(syn68k)f(supp)r(orts)h(b)r(oth)g(nativ)n(e)g(and)g(syn)n(thetic)g(co) r(de,)h(the)f(run)n(time)523 1569 y(system)e(automatically)f(inserts)h (gatew)n(a)n(ys)d(b)r(et)n(w)n(een)j(the)h(t)n(w)n(o)e(whenev)n(er)h (there)f(is)h(a)g(tran-)523 1669 y(sition.)44 b(This)31 b(approac)n(h)d(allo)n(ws)g(us)j(to)f(gradually)e(phase)i(in)g(nativ)n (e)g(co)r(de)g(handlers)f(for)523 1768 y(most)e(680x0)e(instructions)i (while)h(lea)n(ving)e(tric)n(ky)g(and)h(unimp)r(ortan)n(t)g(rare)f (cases)g(alone.)648 1868 y(Although)h(our)g(nativ)n(e)g(co)r(de)g (compilation)g(engine)g(is)g(not)g(arc)n(hitecture-sp)r(eci\014c,)f(to) 523 1967 y(date)37 b(w)n(e)f(ha)n(v)n(e)f(only)h(implemen)n(ted)i(an)e (80x86)e(bac)n(k)i(end.)64 b(The)37 b(80x86)e(arc)n(hitecture)523 2067 y(has)c(ac)n(hiev)n(ed)g(suc)n(h)g(imp)r(ortan)n(t)h(status)g(in)g (the)g(industry)g(that)g(it)g(mak)n(es)f(sense)g(for)g(us)523 2167 y(to)40 b(describ)r(e)g(ho)n(w)f(w)n(e)h(generate)e(nativ)n(e)i (co)r(de)g(for)f(it,)44 b(ev)n(en)39 b(though)h(man)n(y)f(of)h(these) 523 2266 y(tec)n(hniques)27 b(w)n(ould)h(not)f(b)r(e)h(necessary)e(on)h (RISC)h(arc)n(hitectures.)648 2366 y(W)-7 b(e)39 b(are)g(glad)f(that)i (w)n(e)f(implemen)n(ted)h(the)g(most)f(di\016cult)h(bac)n(k)e(end)i (\014rst.)72 b(W)-7 b(e)523 2466 y(b)r(eliev)n(e)35 b(that,)j(w)n(ere)c (w)n(e)h(to)h(ha)n(v)n(e)e(started)h(with)h(a)f(RISC)g(bac)n(k)g(end,)j (w)n(e)d(w)n(ould)g(ha)n(v)n(e)523 2565 y(quite)i(p)r(ossibly)f(arc)n (hitected)g(a)g(system)h(where)f(retro\014tting)g(the)h(exotic)f(mec)n (hanisms)523 2665 y(necessary)26 b(for)h(e\016cien)n(t)h(80x86)d(supp)r (ort)j(w)n(as)e(di\016cult.)648 2764 y(Three)h(ma)5 b(jor)26 b(problems)h(mak)n(e)g(translating)f(680x0)g(co)r(de)h(to)g(80x86)f(co) r(de)h(di\016cult:)625 2947 y(1.)41 b(The)27 b(80x86)f(has)h(only)g(8)g (registers,)f(while)i(the)g(680x0)d(has)i(16.)625 3113 y(2.)41 b(The)27 b(80x86)f(is)h(little)i(endian,)e(while)h(the)g(680x0) d(is)j(big)f(endian.)625 3279 y(3.)41 b(The)19 b(80x86)f(do)r(es)h(not) g(ha)n(v)n(e)g(general-purp)r(ose)e(p)r(ostincremen)n(t)i(and)g (predecremen)n(t)731 3379 y(op)r(erators,)25 b(whic)n(h)j(are)e(used)i (frequen)n(tly)f(in)h(680x0)e(co)r(de.)648 3561 y(On)h(the)h(other)f (hand,)h(sev)n(eral)d(factors)i(mak)n(e)g(the)h(job)f(easier:)625 3744 y(1.)41 b(The)24 b(80x86)f(has)h(all)h(of)f(the)h(CISC)g (addressing)e(mo)r(des)i(commonly)f(used)g(in)h(680x0)731 3844 y(co)r(de.)625 4010 y(2.)41 b(The)e(80x86)f(has)h(CC)g(bits)h (that)g(map)f(directly)h(to)f(their)h(680x0)d(coun)n(terparts)731 4109 y(\(except)27 b(for)h(the)g(680x0's)d(X)j(bit\).)625 4275 y(3.)41 b(The)32 b(80x86)e(supp)r(orts)i(8-,)h(16-)e(and)h(32-bit) f(op)r(erations,)h(\(although)g(it)h(can)f(only)731 4375 y(supp)r(ort)27 b(8)g(bit)h(op)r(erations)f(on)g(four)g(of)h(its)f (registers\).)625 4541 y(4.)41 b(The)27 b(80x86)f(and)h(680x0)f(ha)n(v) n(e)g(analogous)f(conditional)i(branc)n(h)g(instructions.)625 4707 y(5.)41 b(The)c(80x86)e(allo)n(ws)h(unaligned)h(memory)f(accesses) g(without)i(substan)n(tial)e(o)n(v)n(er-)731 4807 y(head.)1934 5147 y(3)p eop 4 3 bop 648 614 a Fd(The)25 b(toughest)f(problem)h(is)g(the)h(lac)n(k)e (of)h(registers.)34 b(On)25 b(32-register)d(RISC)k(arc)n(hitec-)523 714 y(tures)h(it's)h(easy)f(to)g(allo)r(cate)g(one)g(RISC)h(register)e (for)h(eac)n(h)g(680x0)e(register,)i(but)h(on)f(the)523 814 y(80x86)i(a)i(di\013eren)n(t)g(approac)n(h)f(is)h(needed.)47 b(The)32 b(ob)n(vious)d(solution)i(is)g(to)g(p)r(erform)g(full-)523 913 y(blo)n(wn)22 b(in)n(ter-blo)r(c)n(k)g(register)f(allo)r(cation,)h (but)i(w)n(e)e(fear)g(that)h(using)f(traditional)g(compiler)523 1013 y(tec)n(hniques)27 b(w)n(ould)h(b)r(e)g(unacceptably)f(slo)n(w.) 648 1112 y(F)-7 b(or)36 b(no)n(w,)j(w)n(e)e(ha)n(v)n(e)f(adopted)h(a)g (simple)h(constrain)n(t:)55 b(b)r(et)n(w)n(een)37 b(basic)g(blo)r(c)n (ks,)i(all)523 1212 y(registers)17 b(and)i(liv)n(e)f(CC)h(bits)g(m)n (ust)f(reside)g(in)h(their)g(canonical)f(home)g(in)h(memory)-7 b(.)33 b(Within)523 1312 y(a)27 b(blo)r(c)n(k,)g(an)n(ything)g(go)r (es.)36 b(So)28 b(what)f(lib)r(erties)h(do)r(es)f(syn68k)f(tak)n(e)h (within)h(a)g(blo)r(c)n(k?)648 1411 y(The)23 b(80x86)f(register)g(set)i (is)f(treated)h(as)f(a)g(cac)n(he)g(for)g(recen)n(tly)g(used)g(680x0)f (registers,)523 1511 y(and)38 b(the)h(80x86)d(CC)i(bits)h(are)e(used)h (as)g(a)f(cac)n(he)h(for)g(the)g(680x0)e(CC)j(bits.)69 b(A)n(t)38 b(an)n(y)523 1611 y(particular)18 b(p)r(oin)n(t)h(within)h (a)e(blo)r(c)n(k,)j(eac)n(h)d(680x0)f(register)h(is)h(either)f(sitting) i(in)f(its)g(memory)523 1710 y(home)35 b(or)f(is)h(cac)n(hed)f(in)h(an) g(80x86)e(register,)i(and)g(eac)n(h)g(liv)n(e)f(680x0)f(CC)i(bit)h(is)f (either)523 1810 y(cac)n(hed)28 b(in)h(its)g(80x86)e(equiv)-5 b(alen)n(t)29 b(or)e(stored)h(in)i(its)f(memory)f(home.)40 b(Cac)n(hed)28 b(registers)523 1910 y(ma)n(y)g(b)r(e)i(in)f(canonical)f (form,)h(ma)n(y)g(b)r(e)g(b)n(yte)g(sw)n(app)r(ed,)h(ma)n(y)e(ha)n(v)n (e)g(only)h(their)g(lo)n(w)f(t)n(w)n(o)523 2009 y(b)n(ytes)f(sw)n(app)r (ed,)h(or)e(ma)n(y)h(b)r(e)h(o\013set)g(b)n(y)f(a)g(kno)n(wn)g(constan) n(t)g(from)g(their)h(actual)f(v)-5 b(alue.)648 2109 y(Eac)n(h)24 b(680x0)f(instruction)j(can)f(require)f(that)i(680x0)e(registers)g(b)r (e)i(cac)n(hed)e(in)i(partic-)523 2208 y(ular)f(w)n(a)n(ys;)h(the)g (compilation)g(engine)f(generates)g(the)h(minimal)h(co)r(de)f(needed)g (to)g(satisfy)523 2308 y(those)33 b(constrain)n(ts)e(and)i(then)g (calls)f(a)h(sequence)f(of)h(routines)f(to)h(generate)f(the)h(nativ)n (e)523 2408 y(co)r(de.)j(As)25 b(eac)n(h)g(680x0)e(instruction)i(is)g (pro)r(cessed,)g(eac)n(h)f(680x0)g(register's)f(cac)n(he)i(status)523 2507 y(is)g(up)r(dated.)37 b(Dirt)n(y)25 b(registers)f(are)g (canonicalized)h(and)g(spilled)g(bac)n(k)g(to)g(memory)g(at)g(the)523 2607 y(end)j(of)g(eac)n(h)f(blo)r(c)n(k)h(\(or)f(when)h(w)n(e)g(run)f (out)h(of)g(80x86)e(registers)g(and)i(w)n(e)f(need)h(to)g(mak)n(e)523 2707 y(ro)r(om\).)648 2806 y(W)-7 b(e)22 b(allo)n(w)e(680x0)g (registers)g(to)i(b)r(e)g(cac)n(hed)f(with)h(v)-5 b(arying)21 b(b)n(yte)h(orders)e(and)i(o\013sets)f(so)523 2906 y(that)26 b(w)n(e)g(can)f(p)r(erform)h(the)g(optimizations)f(of)h(lazy)f(b)n(yte) h(sw)n(apping)f(and)h(lazy)f(constan)n(t)523 3005 y(o\013setting.)51 b(If)33 b(the)f(680x0)f(program)f(loads)h(a)h(register)f(from)h(memory) f(and)i(then)f(ends)523 3105 y(up)k(writing)f(it)h(out)g(later,)h(w)n (e)e(a)n(v)n(oid)g(unnecessary)f(b)n(yte)h(sw)n(aps)g(b)n(y)g(not)h (canonicaliz-)523 3205 y(ing)c(the)g(v)-5 b(alue)32 b(immediately)-7 b(.)50 b(Lazy)31 b(constan)n(t)h(o\013setting)g(mitigates)f(the)i(o)n (v)n(erhead)c(of)523 3304 y(p)r(ostincremen)n(t)e(and)h(predecremen)n (t)f(side)g(e\013ects.)37 b(F)-7 b(or)27 b(example,)g(this)h(680x0)e (co)r(de:)523 3487 y Fc(pea)260 b(0x1)523 3587 y(pea)g(0x2)523 3686 y(pea)g(0x3)523 3786 y(pea)g(0x4)523 3885 y(...)648 4068 y Fd(b)r(ecomes)27 b(this)h(80x86)d(co)r(de:)523 4251 y Fc(movl)173 b(_a7,\045edi)523 4350 y(movl)g ($0x01000000,-4\(\045)o(ed)o(i\))168 b(;)43 b("push")e(big-endian)f (constant)523 4450 y(movl)173 b($0x02000000,-8\(\045)o(ed)o(i\))523 4550 y(movl)g($0x03000000,-12\()o(\045e)o(di)o(\))523 4649 y(movl)g($0x04000000,-16\()o(\045e)o(di)o(\))523 4749 y(...)42 b()523 4848 y(subl)173 b($16,\045edi)1934 5147 y Fd(4)p eop 5 4 bop 523 614 a Fc(movl)173 b($edi,_a7)523 714 y(...)648 897 y Fd(As)24 b(men)n(tioned)g(ab)r(o)n(v)n(e,)g(w)n(e)g(use)g(the)g (80x86)f(condition)h(co)r(de)g(bits)g(as)g(a)g(cac)n(he)f(for)h(the)523 996 y(real)j(680x0)e(CC)j(bits.)37 b(Although)28 b(liv)n(e)f(cac)n(hed) g(CC)g(bits)h(are)f(o)r(ccasionally)f(spilled)h(bac)n(k)523 1096 y(to)g(memory)f(b)r(ecause)g(some)g(80x86)f(instruction)h(is)h(ab) r(out)g(to)f(clobb)r(er)g(them,)i(this)f(tric)n(k)523 1196 y(almost)33 b(alw)n(a)n(ys)f(w)n(orks.)53 b(Using)33 b(80x86)f(CC)h(bits,)i(w)n(e)f(can)f(frequen)n(tly)g(get)g(a)n(w)n(a)n (y)f(with)523 1295 y(extremely)20 b(concise)f(co)r(de)h(sequences;)i (for)e(example,)i(a)e(680x0)e(compare)h(and)h(conditional)523 1395 y(branc)n(h)27 b(b)r(ecomes)g(an)g(80x86)f(compare)g(and)i (conditional)e(branc)n(h.)523 1669 y Fe(6)135 b(Self-mo)t(difying)46 b(co)t(de)523 1851 y Fd(Lik)n(e)18 b(most)g(dynamically)g(compiling)g (em)n(ulators,)h(syn68k)e(do)r(esn't)h(detect)h(self-mo)r(difying)523 1951 y(co)r(de;)24 b(the)e(o)n(v)n(erhead)f(is)h(to)r(o)g(high.)35 b(F)-7 b(ortunately)g(,)22 b(self-mo)r(difying)h(programs)c(don't)k(w)n (ork)523 2050 y(on)29 b(the)h(real)e(68040)f(either.)42 b(W)-7 b(e)29 b(rely)g(on)g(the)h(program)d(making)h(explicit)i(system) f(calls)523 2150 y(to)34 b(\015ush)g(the)g(cac)n(hes)f(whenev)n(er)g (680x0)f(co)r(de)i(ma)n(y)f(ha)n(v)n(e)g(b)r(een)i(mo)r(di\014ed)f(or)f (created.)523 2250 y(Some)d(programs)e(\(lik)n(e)j(Hyp)r(erCard\))e (\015ush)i(the)g(cac)n(hes)e(v)n(ery)g(often,)j(whic)n(h)e(can)g(cause) 523 2349 y(real)c(p)r(erformance)g(headac)n(hes)g(if)h(co)r(de)g(is)g (con)n(tin)n(uously)f(recompiled.)36 b(W)-7 b(e)28 b(ha)n(v)n(e)d(solv) n(ed)523 2449 y(this)i(problem)f(b)n(y)h(c)n(hec)n(ksumming)f(680x0)f (blo)r(c)n(ks)h(as)g(they)h(are)f(compiled)h(and)f(only)h(de-)523 2549 y(compiling)k(blo)r(c)n(ks)g(whic)n(h)g(fail)h(their)f(c)n(hec)n (ksums.)47 b(This)32 b(optimization)f(alone)f(sp)r(ed)i(up)523 2648 y(some)27 b(Hyp)r(erCard)g(stac)n(ks)f(b)n(y)h(a)h(factor)e(of)i (three)f(or)g(so.)523 2923 y Fe(7)135 b(Resp)t(onsiv)l(eness)523 3105 y Fd(Resp)r(onsiv)n(eness)30 b(is)h(a)f(concern)g(for)h(an)n(y)f (dynamic)h(compiler.)46 b(F)-7 b(ortunately)g(,)32 b(syn68k)d(is)523 3204 y(largely)j(driv)n(en)h(b)n(y)h(automatically)f(generated)f(lo)r (okup)h(tables)h(so)f(compilation)g(sp)r(eed)523 3304 y(is)e(go)r(o)r(d.)47 b(Lik)n(e)31 b(other)f(dynamic)h(compilers,)g (syn68k)f(only)h(b)r(others)f(to)h(compile)g(680x0)523 3403 y(co)r(de)c(when)h(it)g(encoun)n(ters)f(it)h(for)f(the)h(\014rst)f (time.)648 3503 y(When)e(syn68k)f(encoun)n(ters)f(new)i(co)r(de,)h(it)f (compiles)f(other)h(680x0)e(co)r(de)h(that)h(it)h(can)523 3603 y(reac)n(h)c(from)h(there)g(but)h(do)r(es)f(not)h(compile)f (through)f(jsr's.)35 b(Only)23 b(when)h(a)f(jsr)g(is)g(actually)523 3702 y(executed)33 b(do)r(es)f(syn68k)g(compile)g(the)h(target)f (routine.)52 b(Once)32 b(that)h(target)f(routine)g(is)523 3802 y(compiled,)25 b(syn68k)d(mo)r(di\014es)j(the)f(jsr)g(handler)f (to)h(p)r(oin)n(t)g(directly)g(to)g(the)h(target)e(routine)523 3902 y(so)e(that)h(the)g(jsr)g(will)g(b)r(e)g(extremely)f(fast)h(the)g (second)f(time)i(it)f(is)f(executed.)35 b(W)-7 b(e'v)n(e)22 b(found)523 4001 y(that)29 b(lazily)g(compiling)f(through)h(jsr's)f(do) r(es)h(a)f(go)r(o)r(d)h(job)g(of)g(a)n(v)n(oiding)e(compilation)h(lag) 523 4101 y(that)g(migh)n(t)f(anno)n(y)g(the)h(user.)648 4200 y(Syn68k)22 b(do)r(es)i(not)g(attempt)g(to)g(generate)e(nativ)n(e) h(co)r(de)h(for)f(a)g(basic)h(blo)r(c)n(k)f(un)n(til)h(that)523 4300 y(blo)r(c)n(k)32 b(\(or)g(a)h(nearb)n(y)e(one\))i(has)f(b)r(een)h (executed)g(50)f(times.)53 b(This)33 b(sa)n(v)n(es)e(memory)h(and)523 4400 y(some)23 b(compilation)g(time,)i(although)e(w)n(e)g(ha)n(v)n (en't)g(noticed)h(an)n(y)f(particular)f(sluggishness)523 4499 y(when)28 b(compiling)f(to)h(nativ)n(e)f(co)r(de.)1934 5147 y(5)p eop 6 5 bop 523 614 a Fe(8)135 b(Other)45 b(optimizations)523 796 y Fd(Syn68k)20 b(main)n(tains)f(an)i(in)n(ternal)f(\\jsr)f(stac)n (k")g(to)i(sp)r(eed)g(up)f(the)h(common)f(case)g(of)h(jsr/rts.)523 896 y(W)-7 b(e)26 b(realize)e(that)h(the)h(rts)f(address)e(migh)n(t)j (ha)n(v)n(e)e(b)r(een)h(\014ddled)h(with,)g(so)f(the)g(rts)g(handler) 523 995 y(v)n(eri\014es)h(at)h(run)n(time)h(that)f(the)h(rts)f(address) f(matc)n(hes)h(the)g(tag)g(on)g(top)g(of)h(the)f(jsr)g(stac)n(k.)523 1095 y(If)i(it)g(matc)n(hes,)g(syn68k)e(do)r(es)i(a)f(fast)h(jump.)41 b(If)29 b(it)g(do)r(esn't,)g(syn68k)f(lo)r(oks)f(up)i(the)h(co)r(de)523 1195 y(corresp)r(onding)c(to)h(the)h(rts)f(address)g(in)h(a)f(hash)g (table.)523 1469 y Fe(9)135 b(Neat)46 b(hac)l(ks)523 1651 y Fd(The)25 b(lo)n(w-lev)n(el)e(co)r(de)h(generation)f(routines)h (for)g(the)h(80x86)e(bac)n(k)g(end)i(are)f(mac)n(hine)g(gen-)523 1751 y(erated)i(from)f(assem)n(bly)g(language)g(templates.)36 b(Thousands)25 b(of)i(op)r(erand)e(p)r(erm)n(utations)523 1850 y(for)c(80x86)d(instructions)j(of)g(in)n(terest)g(are)f(run)g (through)h(the)g(system's)g(assem)n(bler)e(and)i(an-)523 1950 y(alyzed)k(to)h(deriv)n(e)g(the)g(rules)f(the)i(assem)n(bler)d (uses)i(to)g(create)f(binaries.)36 b(Those)25 b(rules)g(are)523 2050 y(encapsulated)g(in)n(to)g(C)h(co)r(de)f(and)g(compiled)h(in)n(to) f(syn68k)f(so)h(w)n(e)g(can)g(generate)f(binaries)523 2149 y(on)j(the)h(\015y)-7 b(.)37 b(Here)28 b(is)f(a)g(sample)g (template:)610 2332 y Fc({)43 b("i386_leal_indoff)o(",)37 b("",)42 b("",)h("",)f("",)g("-",)785 2432 y("leal)f (\0450\(\0451\),\0452",)785 2531 y({)i("offset",)d("base",)g("dst")i (},)785 2631 y({)h({)g(SIZE_32,)d(CONSTANT,)g(IN)j(},)g({)g(SIZE_32,)d (REGISTER,)g(IN)j(},)697 2730 y({)h(SIZE_32,)c(REGISTER,)g(OUT)i(})h(}) g(},)648 2913 y Fd(This)37 b(approac)n(h)f(has)i(sa)n(v)n(ed)e(us)i (coun)n(tless)f(hours)g(of)h(debugging)f(and)h(allo)n(ws)e(our)523 3013 y(system)d(to)f(automatically)g(p)r(erform)h(the)g(same)f (optimizations)h(as)f(the)h(host)g(system's)523 3112 y(assem)n(bler.)648 3212 y(W)-7 b(e'v)n(e)37 b(annotated)g(our)f(80x86) f(descriptions)i(with)h(information)e(ab)r(out)i(P)n(en)n(tium)523 3312 y(pairabilit)n(y)c(so)g(that)h(future)g(v)n(ersions)e(of)i(syn68k) f(can)g(sc)n(hedule)h(the)g(nativ)n(e)f(co)r(de)h(w)n(e)523 3411 y(generate)26 b(\(w)n(e)i(already)e(sc)n(hedule)h(our)g(main)h(in) n(terpreter)e(when)i(w)n(e)f(build)h(syn68k\).)523 3686 y Fe(10)135 b(F)-11 b(uture)44 b(optimizations)523 3868 y Fd(W)-7 b(e)28 b(are)f(w)n(orking)e(on)j(a)f(simple)h(in)n(ter-blo)r (c)n(k)e(register)g(allo)r(cation)h(algorithm.)648 3967 y(By)20 b(relo)r(cating)f(most)h(680x0)e(register)h(to)h(80x86)e (register)h(mo)n(v)n(es)g(to)h(the)h(b)r(eginning)f(of)523 4067 y(eac)n(h)25 b(blo)r(c)n(k,)h(w)n(e)g(can)f(impro)n(v)n(e)g(P)n (en)n(tium)h(pairabilit)n(y)f(and)h(reduce)f(80486)f(and)i(P)n(en)n (tium)523 4166 y(address)g(generation)g(pip)r(eline)j(stalls.)648 4266 y(No)n(w)g(that)g(w)n(e)h(compile)f(to)g(nativ)n(e)g(co)r(de,)h (A-line)g(trap)f(o)n(v)n(erhead)f(is)h(b)r(ecoming)g(sig-)523 4366 y(ni\014can)n(t.)35 b(W)-7 b(e)22 b(ma)n(y)g(so)r(on)f(compile)h (A-line)g(traps)f(to)h(nativ)n(e)g(co)r(de)g(that)g(directly)g(calls)f (the)523 4465 y(appropriate)27 b(R)n(OMlib)h(routine)f(with)i(the)g (appropriate)d(argumen)n(ts)h(\(c)n(hec)n(king)h(at)g(run-)523 4565 y(time)f(to)f(mak)n(e)f(sure)h(that)h(neither)f(the)h(trap)f(nor)f (the)i(A-line)f(v)n(ector)f(has)h(b)r(een)h(patc)n(hed)523 4665 y(out,)h(of)f(course\).)1934 5147 y(6)p eop 7 6 bop 523 614 a Fe(11)135 b(Co)t(de)45 b(examples)523 796 y Fd(Here)22 b(are)e(t)n(w)n(o)i(sample)f(680x0)f(co)r(de)i (sequences)f(from)g(real)g(applications,)h(and)g(the)g(80x86)523 896 y(co)r(de)g(that)g(syn68k)f(generates)g(for)g(them.)36 b(W)-7 b(e)22 b(c)n(hose)f(these)i(co)r(de)e(sequences)h(sp)r (eci\014cally)523 995 y(to)39 b(sho)n(w)n(case)e(sev)n(eral)g(of)i(the) h(tec)n(hniques)f(w)n(e)f(use,)k(so)d(y)n(ou)f(shouldn't)h(use)g(them)h (as)523 1095 y(a)d(substitute)i(for)e(b)r(enc)n(hmarks.)67 b(Not)38 b(all)f(680x0)f(co)r(de)i(translates)e(as)i(w)n(ell)f(as)g (these)523 1195 y(examples)27 b(do,)g(but)i(these)e(examples)g(are)g (far)g(from)g(exotic.)648 1377 y Fb(\017)41 b Fd(Example)26 b(1)i(\(Solarian\):)731 1593 y Fc(680x0)41 b(code:)731 1792 y(addqb)128 b(#1,a4@\(1\))731 1892 y(movel)g(#0,d0)731 1992 y(moveb)g(a4@,d0)731 2091 y(swap)172 b(d0)731 2191 y(clrw)g(d0)731 2291 y(swap)g(d0)731 2390 y(asll)g(#2,d0)731 2490 y(lea)216 b(a5@\(-13462\),a0)731 2589 y(addal)128 b(d0,a0)731 2689 y(moveal)84 b(a0@,a0)731 2789 y(movel)128 b(#0,d0)731 2888 y(moveb)g(a4@\(1\),d0)731 2988 y(cmpw)172 b(a0@,d0)731 3088 y(bcs)216 b(0x3fffee2)731 3287 y(80x86)41 b(code:)731 3486 y(movl)172 b(_a4,\045edi)694 b(;)44 b(addqb)d(#1,a4@\(1\))731 3586 y(addb)172 b($0x1,0x1\(\045edi\))731 3685 y(xorl)g(\045ebx,\045ebx)650 b(;)44 b(movel)d(#0,d0)731 3785 y(movb)172 b(\(\045edi\),\045bl)606 b(;)44 b(moveb)d(a4@,d0)731 3885 y(rorl)172 b($0x10,\045ebx)606 b(;)44 b(swap)d(d0)731 3984 y(xorw)172 b(\045bx,\045bx)738 b(;)44 b(clrw)d(d0)731 4084 y(rorl)172 b($0x10,\045ebx)606 b(;)44 b(swap)d(d0)731 4184 y(shll)172 b($0x2,\045ebx)650 b(;)44 b(asll)d(#2,d0)731 4283 y(movl)172 b(_a5,\045esi)694 b(;)44 b(lea)e(a5@\(-13462\),a0)731 4383 y(leal)172 b(0xffffcb6a\(\045esi\),)o(\045e)o(dx)731 4482 y(addl)g(\045ebx,\045edx)650 b(;)44 b(addal)d(d0,a0)731 4582 y(movl)172 b(\(\045edx\),\045edx)562 b(;)44 b(moveal)d(a0@,a0)731 4682 y(xorl)172 b(\045ebx,\045ebx)650 b(;)44 b(movel)d(#0,d0)731 4781 y(movb)172 b(0x1\(\045edi\),\045bl)474 b(;)44 b(moveb)d (a4@\(1\),d0)731 4881 y(bswap)128 b(\045edx)870 b(;)44 b(cmpw)d(a0@,d0)1934 5147 y Fd(7)p eop 8 7 bop 731 614 a Fc(movw)172 b(\(\045edx\),\045cx)731 714 y(rorw)g($0x8,\045cx)731 814 y(cmpw)g(\045cx,\045bx)731 913 y(movl)g(\045edx,_a0)694 b(;)44 b()731 1112 y(jb)260 b(0x6fae0c)694 b(;)44 b(bcs)e(0x3fffee2)731 1212 y(jmp)216 b(0x6faf0c)694 b(;)44 b()648 1428 y Fb(\017)h Fd(Example)26 b(2)i(\(P)n(ageMak)n(er\):)731 1644 y Fc(680x0)41 b(code:)731 1843 y(movel)128 b(#0,d2)731 1943 y(moveb)g(d0,d2)731 2042 y(lslw)172 b(#8,d0)731 2142 y(orw)216 b(d0,d2)731 2242 y(movel)128 b(d2,d0)731 2341 y(swap)172 b(d2)731 2441 y(orl)216 b(d2,d0)731 2540 y(movel)128 b(a0,d2)731 2640 y(lsrb)172 b(#1,d2)731 2740 y(bcc)216 b(0x3fffed4)731 2939 y(80x86)41 b(code:)731 3138 y(xorl)172 b(\045ebx,\045ebx)650 b(;)44 b(movel)d(#0,d2)731 3238 y(movl)172 b(_d0,\045edx)694 b(;)44 b(moveb)d(d0,d2)731 3337 y(movb)172 b(\045dl,\045bl)731 3437 y(shlw)g($0x8,\045dx)694 b(;)44 b(lslw)d(#8,d0)731 3537 y(orw)216 b(\045dx,\045bx)738 b(;)44 b(orw)e(d0,d2)731 3636 y(movl)172 b(\045ebx,\045edx)650 b(;)44 b(movel)d(d2,d0)731 3736 y(rorl)172 b($0x10,\045ebx)606 b(;)44 b(swap)d(d2)731 3836 y(orl)216 b(\045ebx,\045edx)650 b(;)44 b(orl)e(d2,d0)731 3935 y(movl)172 b(_a0,\045ecx)694 b(;)44 b(movel)d(a0,d2)731 4035 y(movl)172 b(\045ecx,\045ebx)731 4134 y(shrb)g(\045bl)914 b(;)44 b(lsrb)d(#1,d2)731 4234 y(movl)172 b(\045ebx,_d2)694 b(;)44 b()731 4433 y(jae)216 b(0x3b734c)694 b(;)44 b(bcc)e(0x3fffed4)731 4533 y(jmp)216 b(0x43d48c)694 b(;)44 b()1934 5147 y Fd(8)p eop 9 8 bop 523 614 a Fe(12)135 b(Benc)l(hmarks)523 796 y Fd(These)41 b(p)r(erformance)f(n)n(um)n(b)r(ers)g(w)n(ere)g(computed)h (with)h(Sp)r(eedometer)f(3.23.)76 b(W)-7 b(e'v)n(e)523 896 y(remo)n(v)n(ed)20 b(the)i(\015oating)e(p)r(oin)n(t)i(tests)f(from) h(the)f(list)h(since)f(they)h(do)f(not)h(measure)e(syn68k's)523 995 y(sp)r(eed.)35 b(Syn68k)20 b(con)n(tains)g(no)h(sp)r(ecial)f(pro)n (visions)f(for)i(Sp)r(eedometer's)g(b)r(enc)n(hmarks)f(and)523 1095 y(w)n(e)27 b(b)r(eliev)n(e)g(that)g(these)g(n)n(um)n(b)r(ers)g (are)f(indicativ)n(e)h(of)g(syn68k's)e(p)r(erformance)h(for)h(man)n(y) 523 1195 y(other)g(CPU-in)n(tensiv)n(e)g(programs.)p 523 1389 3032 4 v 523 1406 V 521 1505 4 100 v 538 1505 V 589 1475 a Fa(T)-6 b(est/CPU)p 1124 1505 V 1140 1505 V 257 w(Quadra)25 b(610)p 1633 1505 V 101 w(P)n(en)n(tium)f(90Mhz)p 2265 1505 V 101 w(486D)n(X4)i(75Mhz)p 2881 1505 V 101 w(486D)n(X/2)h(66Mhz)p 3537 1505 V 3553 1505 V 523 1509 3032 4 v 523 1525 V 521 1625 4 100 v 538 1625 V 589 1595 a Fd(CPU)p 1124 1625 V 1141 1625 V 505 w(16.018)p 1633 1625 V 329 w(28.833)p 2265 1625 V 391 w(15.727)p 2881 1625 V 403 w(13.840)p 3537 1625 V 3554 1625 V 523 1628 3032 4 v 521 1728 4 100 v 538 1728 V 589 1698 a(Dhrystones)p 1124 1728 V 1141 1728 V 275 w(19.586)p 1633 1728 V 329 w(21.886)p 2265 1728 V 391 w(12.084)p 2881 1728 V 424 w(9.424)p 3537 1728 V 3554 1728 V 523 1731 3032 4 v 521 1831 4 100 v 538 1831 V 589 1801 a(T)-7 b(o)n(w)n(er)p 1124 1831 V 1141 1831 V 463 w(18.909)p 1633 1831 V 329 w(27.130)p 2265 1831 V 391 w(12.235)p 2881 1831 V 403 w(11.556)p 3537 1831 V 3554 1831 V 523 1834 3032 4 v 521 1934 4 100 v 538 1934 V 589 1904 a(Quic)n(ksort)p 1124 1934 V 1141 1934 V 331 w(17.759)p 1633 1934 V 329 w(27.105)p 2265 1934 V 391 w(15.606)p 2881 1934 V 403 w(13.919)p 3537 1934 V 3554 1934 V 523 1937 3032 4 v 521 2037 4 100 v 538 2037 V 589 2007 a(Bubble)28 b(sort)p 1124 2037 V 1141 2037 V 259 w(18.409)p 1633 2037 V 329 w(31.154)p 2265 2037 V 391 w(19.286)p 2881 2037 V 403 w(16.875)p 3537 2037 V 3554 2037 V 523 2040 3032 4 v 521 2139 4 100 v 538 2139 V 589 2110 a(Queens)p 1124 2139 V 1141 2139 V 420 w(19.083)p 1633 2139 V 329 w(38.167)p 2265 2139 V 391 w(19.083)p 2881 2139 V 403 w(18.320)p 3537 2139 V 3554 2139 V 523 2143 3032 4 v 521 2242 4 100 v 538 2242 V 589 2213 a(Puzzle)p 1124 2242 V 1141 2242 V 447 w(22.083)p 1633 2242 V 329 w(44.167)p 2265 2242 V 391 w(23.661)p 2881 2242 V 403 w(21.032)p 3537 2242 V 3554 2242 V 523 2246 3032 4 v 521 2345 4 100 v 538 2345 V 589 2316 a(P)n(erm)n(utations)p 1124 2345 V 1141 2345 V 196 w(21.019)p 1633 2345 V 329 w(28.564)p 2265 2345 V 391 w(11.604)p 2881 2345 V 403 w(12.242)p 3537 2345 V 3554 2345 V 523 2349 3032 4 v 521 2448 4 100 v 538 2448 V 589 2418 a(In)n(t.)38 b(Matrix)p 1124 2448 V 1141 2448 V 267 w(24.200)p 1633 2448 V 329 w(26.469)p 2265 2448 V 391 w(19.369)p 2881 2448 V 403 w(16.608)p 3537 2448 V 3554 2448 V 523 2452 3032 4 v 521 2551 4 100 v 538 2551 V 589 2521 a(Siev)n(e)p 1124 2551 V 1141 2551 V 499 w(23.362)p 1633 2551 V 329 w(60.290)p 2265 2551 V 391 w(33.982)p 2881 2551 V 403 w(30.145)p 3537 2551 V 3554 2551 V 523 2555 3032 4 v 523 2571 V 521 2671 4 100 v 538 2671 V 589 2641 a(Av)n(erage)p 1124 2671 V 1141 2671 V 389 w(20.490)p 1633 2671 V 329 w(33.881)p 2265 2671 V 391 w(18.582)p 2881 2671 V 403 w(16.680)p 3537 2671 V 3554 2671 V 523 2674 3032 4 v 648 2823 a(Preliminary)18 b(analysis)g(suggests)g(that)i(w)n(e)g(a)n(v)n(erage)d(a)i(roughly)f (3:1)h(instruction)h(coun)n(t)523 2923 y(increase)27 b(when)h(translating)g(to)g(80x86)e(co)r(de.)39 b(W)-7 b(e)28 b(ha)n(v)n(e)f(not)i(y)n(et)f(tak)n(en)f(rigorous)f(mea-)523 3022 y(suremen)n(ts,)g(but)i(the)f(3:1)f(\014gure)g(is)h(len)n(t)g (some)g(credence)f(b)n(y)g(the)i(fact)f(that)g(our)f(75MHz)523 3122 y(486D)n(X4)g(gets)g(nearly)g(the)i(same)e(p)r(erformance)g(as)h (our)f(Quadra)f(610.)36 b(W)-7 b(e)27 b(b)r(eliev)n(e)g(that)523 3222 y(in)n(ter-blo)r(c)n(k)f(register)g(allo)r(cation)h(will)h (noticeably)f(impro)n(v)n(e)f(this)i(ratio.)1934 5147 y(9)p eop end userdict /end-hook known{end-hook}if