Sophie

Sophie

distrib > Mandriva > 2009.0 > x86_64 > by-pkgid > 17039ad9326200a5df40abfa5a8a922d > files > 1

tkisem-4.5.12-13mdv2009.0.src.rpm

%!PS-Adobe-2.0
%%Creator: dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software
%%Title: labman.dvi
%%Pages: 106
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
%%DocumentFonts: Palatino-Roman Palatino-Bold Palatino-Italic Courier
%%DocumentPaperSizes: Letter
%%EndComments
%DVIPSCommandLine: dvips -o labman.ps labman
%DVIPSParameters: dpi=600, compressed, comments removed
%DVIPSSource:  TeX output 1996.01.16:1532
%%BeginProcSet: texc.pro
/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
%%EndProcSet
%%BeginFont: Palatino-Roman
% @psencodingfile{
%   author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry",
%   version = "0.6",
%   date = "14 April 1995",
%   filename = "8r.enc",
%   email = "kb@cs.umb.edu",
%   address = "135 Center Hill Rd. // Plymouth, MA 02360",
%   codetable = "ISO/ASCII",
%   checksum = "xx",
%   docstring = "Encoding for TrueType or Type 1 fonts to be used with TeX."
% }
% 
% Idea is to have all the characters normally included in Type 1 fonts
% available for typesetting. This is effectively the characters in Adobe
% Standard Encoding + ISO Latin 1 + extra characters from Lucida.
% 
% Character code assignments were made as follows:
% 
% (1) the Windows ANSI characters are almost all in their Windows ANSI
% positions, because some Windows users cannot easily reencode the
% fonts, and it makes no difference on other systems. The only Windows
% ANSI characters not available are those that make no sense for
% typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen
% (173). quotesingle and grave are moved just because it's such an
% irritation not having them in TeX positions.
% 
% (2) Remaining characters are assigned arbitrarily to the lower part
% of the range, avoiding 0, 10 and 13 in case we meet dumb software.
% 
% (3) Y&Y Lucida Bright includes some extra text characters; in the
% hopes that other PostScript fonts, perhaps created for public
% consumption, will include them, they are included starting at 0x12.
% 
% (4) Remaining positions left undefined are for use in (hopefully)
% upward-compatible revisions, if someday more characters are generally
% available.
% 
% (5) hyphen appears twice for compatibility with both ASCII and Windows.
% 
/TeXBase1Encoding [
% 0x00 (encoded characters from Adobe Standard not in Windows 3.1)
  /.notdef /dotaccent /fi /fl
  /fraction /hungarumlaut /Lslash /lslash
  /ogonek /ring /.notdef
  /breve /minus /.notdef 
% These are the only two remaining unencoded characters, so may as
% well include them.
  /Zcaron /zcaron 
% 0x10
 /caron /dotlessi 
% (unusual TeX characters available in, e.g., Lucida Bright)
 /dotlessj /ff /ffi /ffl 
 /.notdef /.notdef /.notdef /.notdef
 /.notdef /.notdef /.notdef /.notdef
 % very contentious; it's so painful not having quoteleft and quoteright
 % at 96 and 145 that we move the things normally found there down to here.
 /grave /quotesingle 
% 0x20 (ASCII begins)
 /space /exclam /quotedbl /numbersign
 /dollar /percent /ampersand /quoteright
 /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
% 0x30
 /zero /one /two /three /four /five /six /seven
 /eight /nine /colon /semicolon /less /equal /greater /question
% 0x40
 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O
% 0x50
 /P /Q /R /S /T /U /V /W
 /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
% 0x60
 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o
% 0x70
 /p /q /r /s /t /u /v /w
 /x /y /z /braceleft /bar /braceright /asciitilde
 /.notdef % rubout; ASCII ends
% 0x80
 /.notdef /.notdef /quotesinglbase /florin
 /quotedblbase /ellipsis /dagger /daggerdbl
 /circumflex /perthousand /Scaron /guilsinglleft
 /OE /.notdef /.notdef /.notdef
% 0x90
 /.notdef /.notdef /.notdef /quotedblleft
 /quotedblright /bullet /endash /emdash
 /tilde /trademark /scaron /guilsinglright
 /oe /.notdef /.notdef /Ydieresis
% 0xA0
 /.notdef % nobreakspace
 /exclamdown /cent /sterling
 /currency /yen /brokenbar /section
 /dieresis /copyright /ordfeminine /guillemotleft
 /logicalnot
 /hyphen % Y&Y (also at 45); Windows' softhyphen
 /registered
 /macron
% 0xD0
 /degree /plusminus /twosuperior /threesuperior
 /acute /mu /paragraph /periodcentered
 /cedilla /onesuperior /ordmasculine /guillemotright
 /onequarter /onehalf /threequarters /questiondown
% 0xC0
 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
 /Egrave /Eacute /Ecircumflex /Edieresis
 /Igrave /Iacute /Icircumflex /Idieresis
% 0xD0
 /Eth /Ntilde /Ograve /Oacute
 /Ocircumflex /Otilde /Odieresis /multiply
 /Oslash /Ugrave /Uacute /Ucircumflex
 /Udieresis /Yacute /Thorn /germandbls
% 0xE0
 /agrave /aacute /acircumflex /atilde
 /adieresis /aring /ae /ccedilla
 /egrave /eacute /ecircumflex /edieresis
 /igrave /iacute /icircumflex /idieresis
% 0xF0
 /eth /ntilde /ograve /oacute
 /ocircumflex /otilde /odieresis /divide
 /oslash /ugrave /uacute /ucircumflex
 /udieresis /yacute /thorn /ydieresis
] def
%%EndFont
%%BeginProcSet: pcrr8a.pfb
%!PS-AdobeFont-1.0: Courier 001.003
%%CreationDate: Tue Sep 17 16:16:38 1991
%%VMusage: 57844 76768
%% Copyright International Business Machines,Corp. 1991
%% IBM Courier is a Trademark of the IBM Corporation.
11 dict begin
/FontInfo 10 dict dup begin
/version (001.003) readonly def
/Notice (Copyright (c) IBM Corporation 1990,1991. IBM Courier is a Trademark of the IBM Corporation.) readonly def
/Copyright (Copyright (c) IBM Corporation 1990,1991.) readonly def
/FullName (Courier) readonly def
/FamilyName (Courier) readonly def
/Weight (Regular) readonly def
/ItalicAngle 0 def
/isFixedPitch true def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/FontName /Courier def
/Encoding StandardEncoding def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/UniqueID 263786 def
/FontBBox{-48 -288 684 841}readonly def
currentdict end
currentfile eexec

B2DE7B9B2A2783A9A81F7A04E7605E0BCC84AD7A981F9D6B201C5FC6ACDAD3ECD09A8A190729
6B7BF5510822BD65C174D41912F5E2BDC23EC621DD28CB4F8B625882CCA862CA3C8BBED56696
F8E17809439151596792163977EDDCDAE7B5C346E93A0756E7DA36A403E30B34B70EB809EC5A
5E6DD43DFC5D482E2424A93FD4D2D0E648621EB8F9339F10BA2DB9312AE5C071E20946278B5D
54F7858A41F0A1B6B2CECD201FE0CC773A733FD892BC4352FD2C68554AD49658BFECECA5DE0A
417807560879485B17F950018E00FB441CA6E0FACE6FA6ACC95DAEA5B530A954419FA15FF97D
E6A7AB23540344E0193D5356EBDB99F60FCE74A4C1828A36B3DE4EC492551FA4F0CC7ED791D8
97ED75BC5D034F85F7326B59E16A9E9D20D7C7072A4D311FFF4CD4635852AB3E098236A1EB05
BE8E5D3E4CED8EA930076FB27AE7B5F3A135B8E3CFA19B4144C0672503B51641ECDB779EAAAA
EC164216BEB4DE03457566B93918A02AEA1730B7F138623F2DF763D6CCADEA312D4059487851
AD39FA5D6AE273D56563EB3788C4D9AEFB2BD85FEFF2C8F6A0C383F653DDCA8D4072A39726BC
47616D936E336D1502B65CEC60BAA4F7C423C290D9A8E067B433AD52790AB3DE64436AEB25A5
B8E18A91E616B9C310D8BDA5546CB5F46E8D74ADB8F970D488A1602E8ED3390CBB9F1E4564F7
0B2141CB8262CF4DFEFBBEFF3D15F49AFA29DA9DEB04F1E004399A20F57F770B838059AA75FF
B5DA99581F2FC90DD7B7F4BC3D3D32A8B2DF7A3B9CA0311F5A555E6F05BABAE4C577B0237937
0E5A364DCBB31962317EDED89394DD26E5E37E5F776A9CE97FFEF9429F9E89773A6DB3D642CF
319957B03A0434F4F81E782121D8FCCD08DE4E54E29B1A25B1436D859DB45CD3C254FB02B222
88D080139BF20C4FA130F98E83FDE39963C3068C7AAFA1C6AFB82FF6753842D6DAB630E63FD8
F7853E9358BC6C074F0ACBFE9D56D3B93EB7EB9A901ED2BBED92737FCAE60B95E7186CA800AE
2DB1570CA4B0ED9EA9FED82AD73DED3977472C257B253773DE2CA37ECCCE4FAF68F1EB5CDC82
7DD5BC8E3C03BBFAE9BD30BCB3CC1D35660637A882F0F4A037BD07FBA1C6F5C0E8A88088ECF8
53DCB2DC41EE4ED1F75640A93E9208FE5CDC7366CF3B738CF4177DF4F922D80810068F8F2B01
43A44CAED520141238781111A1331E7A6AFAEDB2019CF0EB438177BA68FB0D443989E67D21F4
9CB8A52711507792C45BBF0C25F634CF7C1323D6146F7C778EFF204C71778E5E9723E662106C
AECCB514B9BE0936AA409567EA40B9AFB5852CF3C9CCE25ACBFDEE0097F828D90D21CFCFD46E
A083EAD540877E5658833234B8609A3F376AD94098EC1A1685323BE81A64A6174851B6E8E80D
3D8CD6F241E2492BC07C052DFD66C7FA12EA0CA90A15F49194B0DBBD6F80AA49CC52E0AB1345
71C2883F5ADF6B57A036DCADD18F7E397B87FA80BE532AC7AAC3673796F6F20F5341984695DC
99359D6E923A79441B64B85D405D53F89EDF79D76278604A4001CCBCF3E10CA83F71202D6F0A
2F26DB5114515F8EB58A2EEDFC6C9F1F9A3FC40205C32CA33771D7497307B4F67618BF46D3EC
ADD0D5B6F21D298784F9E22FE8A97443E951A141E79A2CD6E500653FBB8E34613E57C270301D
BAD7B89D35B6B7F6CFC81E5E9F58508BFDD6C50C8B4D9114F9D9D0764232ABF8C84B8C8D5284
F78138778565991FFEFAA9B63D205E74146229C2656D126E3664870C9800B9CFEE76F078DBB1
064AA5609C6C553B2C660A4054E46FFFD645E8EB8864D1E15C33E20D690B90B6A5B9A7213BDD
E4856236D9F00D882D8D8CFF4B27FBAD85503029B9A4A75DA575BCF29AE444F0714B5580ACA0
BAD9460FBE2C847CD770825C8B0D72FC684AE45CED430997D41467889FC1969702A44FB77E8D
E557851D4EB34433631C225A516281AC5E0EE6C0DAFBC40855C315FD60559E53B5F33D9EF0FD
1D0431BE569D13F6DBD52BED9EFF8E7EB514FB469DAF3F9F31C7B8D31411692A72F8FC3907DF
11992B3AA76CA73C82710C4901B4EED793D4909A451F5F09F73DB0E20C32146422D4D5F83A4E
2E92CBD9297944C8BB7205AA2ADFC88DC6DCB4E82FF607E4278885300463775AD999E2393AC0
F67CD635D955F4CA5A9F57662C7E76A726E7C4256827F0C03CEC6855174FFF2B78F1870EC236
6A59A4E9983CE00941BF17DC97B59104D05746FFCC1F7BBFD007FBB0EEB36D42F959C90382E4
9737352AF582A0C76C1D86A1323AF83FDFD653373A3C3B7460C839858F6FCC885F3D47D19020
01FF877043CE9D13B1F8D1E819320F6374975E740AA77886063741E378C0EA28694A1BDCB89C
1E2D5E8CB9FD5AB6D20BE8CB0A2A74EE73D5F4C32B26C0670E7608A372B6E0CDC1819879CA3E
B1870C22EE21B8D42780D9CA1489A4ABAEC27DCC2FE096C55B528BAF52E468BAC2EE1DB1C6E1
609740828AD1F4FAAC82B9DA066B8472B15FAAAB3109DFBB85667A7DEF1794FF158CBD6FDAF9
987567D8A6C6F86CE77B9AA3FED671F7C74A345812C978FEAD18AC776F7CC2957540A1720941
5B9CC4BBD5D8AEF5997110B41DAF2C3D41ADF834AA24862F052446FF8A1747F65DADEF8451AA
72F9C367F21A98E1CB18B2010FC17637A673959E5790DF9ABB829314BA4785B7BBB5E68CC6DA
2E021CC4345F4E6F5C6488D481947454148DB9F7C289CE25764AB1D810268A6DB157520CE871
F1DFF95396F03780BBA8202D430BF76046C04E1F0EF462AFBF3650327876B5CE19D87FF9A6EC
2E3C294976778C669BF548EC241A295DB3CF4139936B6127009F9807F48F09CD54E920474FC1
EE658DC69C4AFB90F7A737DF582B406C98801E77B02A02212A0D924ED58EAD539B7D18F4940A
717B46AD908D521B7D07237AA25B4969239FC4968F5CD9827AB242723D29FFEC192601116140
5F8A9A5C9E1BDC9A9152AF563FBEB44D5E4AE05405BC6A92B23E71CBB866366389FE0D91BCAC
D5B98A2ED4DCB9976EF9EB6C7CF06D9C185EF69AF37163D441B756F08060FA733B3EBFF43160
D0CCF5BEFEFEEAE064680D18F7C38748D1CEC437E170EF4BB6D85EEAD3105B2A354DE80A6396
C185CAA91D57966CC000BFF2880E068D61F2BA670F7F9A2FAD0AC5D1F205C1E1FA0A1D3C110E
184837018AF730878A978AB3D08581E8B222307D00F86909C39C12D40BD6C7299DEC0867F741
7DE60EDD1897BD627767B29CEA62593542C642F1089242D853F2DB5F45B7B21FA906851B2F28
437933BD4229E32D093EDA4D448641380DA19696D7A77FDA761865D9A4A8FF48DE5AA6550B2F
80C7E7FEF54F5DC709A9B2FC120B03223AD9AE5D06298699FF21EA2F71BD34AFB79799E67CD4
96A57E417F1D87BCF2BB0C5F9FE9067AF267E5740C26D6F3A256330D68F138C81883D7C07EB4
CDE5F6B5D82CBF5DD32E0C27C393CBB77CAD6DBB058FB1C6653A5CD1A78F057787C9DD5B1A5F
83A13226571D38D367F2A4E369B4651A77789AA785F4A6561C92E0E82F217B2597D8A180EBE4
547AA1500B0F814D309B5B1FE9DC53282C9144070FC79D82B5D5AE8BD272B022B35E66CD260C
046D102EEA1A1A4C0D376DAA9B2FE0DCB3A7254130D5787191998D88D4872834F331C75485D0
9799D467BFB624655EA38FD84EDFF90FBCAE880820FDA0F2A3BD5CAB972B4D22F1C649F970E0
5549F33E95A6D0AF69653AE918872958BF100A04A7C61B8FE7433697A92B451EA4444670E38E
33893E59ECB4A621ECD68E76308EC0EB2716FC7427FFD64FE309A63571C7B86839ADD4963411
4C0AEED57A2AFB2A46AFB303FED2CA4A7B3CCE18059549BCCEF00E92339805DBE1B0C05ACE5C
D5A9C6D8931CDF62CE4F5406F8CEBA6B29B696B0E0CCBE8B9F9E1AFDCEC58064E3DAA54676F4
93AF1EBC8A2C26CCCA629418F0015D84E5931F620207D2C8B193113C8E6AF5A0738F7085930E
735227E37BF703DA80016E492CDFFEDD077BE121B35093B031C35D369298F781340931473630
62D031233A26726D549B16CCAFE56EB0324DDEEB4CA8904DA4FB9016FB5C46B60E873074C2E0
C78364BDBD05E0246FB44E77DFFBED7FB94364A0EC0970D329AC31712D356BDAAEFA99865561
391247A78C8FF19F6086B4D8CC464D0B3B417FBE5F6B3E68DE6ECE2242224DBA66940DD25A41
2C337E4C19C3305E4E1699E453BFA096D66BAE0DDF3A3F6D84CBC7478A00F2FF606F86913B76
8A18F5ADAFBC8B18E653351CF8D251ECD0F0D3002862223E3488701C0A5647BFA63B55B5E162
335533F701659833FED17EE4EF0281032344FAF499AE8E33A25F97D5839FE0771AD9BFD9E2C1
A863E0EB7CE72CC615F4FF19A8EBFE2F44AA6A636BF3197EC10737B3AB19482250C61D1A1BF7
FC4F325056FC30554F92B88E6C8BC8EA8E5954DDE367A169447091D9D01B79265CB1054FF700
0DF3B659208C6166CAE1973F35596F4F9645361ECDB125B87B6B9096B8C1894E5E1CBADA1013
4D54ECE4BC0A73D07A93DE3A3B943697CD3BE33DDFA0696663524A7B6E246984620DD268FF65
291DE84855EC9192F88540C57826F6E6F25FBCB4C4E39F6B7FA2A3DEFD578C08C8ADF66FE2CC
07A3317B3697AC9E5EE19A9E225EDD3D52323982D83D4CFA156EB858681DCA6E77AD60DD946C
8A1BE74A8BB83FEDF6DAB14F5A2A5D1CB08AD95F2A93C16C39CF8672FC59BF40400920265C7E
06ED02B2A788AA23425B45DBA3B35A53098D3CA23C0BB5A9E16FFD99CB4846121C6F5656BCB8
D34D29E3EB078BB39FCEBE3B98FD375BA941C515C88CCA36F7C55D325D3FF0932244F9C83598
31981A1067C57E4B0CA5E2DB14A9C2E24B10FDDF7E037D4CDDABAE2E5B0443C3387EECE204AF
27AE3BEFDDA5E88267DDCD3EEBD90560DE14C8F2817B6E6055E53E40B35B93D64234E4E749CC
875D9CFD48032E1059F2D2EA0E7861F3F525C81FE1863640C851079CD35118F98D53ECF08B86
ADD9FA65016797FB13F20FA4F9FA0C5644E286E4F6427A278A0715AD34C88B103C6FB8C09D65
00886C93F399D56DC0444A53F64649F39E423E9B8C5BD7E8711A4455B9BC82282AC372524BCA
B6140921F9B710F75C662901C3AE885424B03F12A4C9F589AC693C7DF6E188913B64A7B1F70F
0C315DBEF339B801D0F228C5D82D08C00A9C9B1D825559B47B00E98E58204A11257DFD1E7CFB
5DB205B0DC4C3211374459A58A3D23713068BFF43C8B73FA51CEBF259E69F45B37F30869F44B
F3898EF27D9F3B4710B28579538EAD0240F72BE615EEEF499D8D2F0A7AA72A6FFFC68A0947DA
FA98F52E94AA14DA157CC2C71AED17F3C2661ED84E058555D0354770C155C54A03186B815440
CF8C7E37F9117E9467A5D50281ECEA2188537254696C4B50C3AEDBD3EBA04B543DAC970A7193
BC79BC707725C13B8A747AD5DF929CC8365DA27C028745FCC82DDE3B297258EE413CD84D1716
6AE6DAD65489DC8D98A4C760C08DD0DE05754B408A39434B17773F32A3519B27D51781C807A3
52880F5D667DC8CBE54F2132200DB7971B0BE03EB42FAEA467CC7A1BDEF783CE5D710772DA9B
71DB45C7BA4F3C22AE9A9BDF1F26C29D811037A170868A8F6644B0092E7CC538FD5C13568CA2
62BA0FE244F7307727D9318A281F38B607C172E64134EDB76D6535ABBEB9689840A297ACCF5C
15150F2B29E8CFEE85D099297D0C6D50720D686CDD849751966C88E3AA8998C0C5C176656902
9750AFCE844147ABC710780AF405D2A4163D272186AC4D486FC32C1770C837A0656B6A0563E5
B38A080F614AE9D49BAFB92C96E2BFD140A88C4989952EDF2C835503ABD01565E2CAFA4373B7
90376483D4762A99ADABDFA0D7A7EAF9DA29530F626E330C8CC65113B1B7DDF5B01249B9651C
E4C47111A5C6590755FF07445EA2A3AFA851DE664CAE6706BF0B640F80EC4A178E518BF6B41C
7939959349990CCC3CB8F1864B6F20B1160C9EA3F1F8E658E88C81FCB7A28280FB37ACFC06D4
5D5C93509DB13E88349CCB959DD1F23C6D5A574B9489FEFBCA90F8C24982BD5F8FCC0EE7E13E
C573153B51A760F47811A50C1B1E981ED0007E952D15DE9FC00A64966A945AB7CBE49E6BF900
62CD8F6FD438428B14612085DD18ECD59924242EE5C9038ABEE84CD94ACBA6C96E805305BACD
E3A0390A456E19DACC83F8767C5EA9FEF61DC22613E3048CAC14ED6A75FA28C06D348E240019
AA36FAAE66D21853B43A4C05372B0A958D3D26CD22186F95057EE646602BA13E197475830708
5B236FF8B0F2194A00258A76B18DFDA0D5049BC9780289DD54194800554A086B80EA65D97B1D
6D03EF0AD22356FD31C90485C34A1CD00837C419C7295B712A9A9258B7F0452165473AF73B7E
21CEF53CE54BE278298053937F89D0D3BC15657FCC9F3246261DE1A1443C26CCA0BF28D291F4
51D3CE279EEC77AB32D5463F7F5CCC695F6FC60739A5FF55DEE8232B2B868FBF60A2137D8371
422C1FD08FC21468BB4E6ADDEC19FB2DEF9AED1599FEDACC1E5A38670011BD19CA8415AF3D94
010A50AC69E8D2F36CBAD97548090D37E081824C5BFF928E0A767E0947C8C4F00388E4A95E99
2A705CA0E7037000E4C191A898B40A74808DB0C15C9669D2009EA5C7A391DEC4F2F4685DFC63
FD94703F948D758F11EFDD2E0A634E2D4274DA9BD84CCEA58FB6F41E617BA30FA2114DEB639B
7B579E2BA187BEC24145664921599B6B0559D742B3DDAAA4F91EF05CD15DB7CB7FA2400F66FD
9DB3D207CC5728D65B86629510B2B6A1CD2A33424A9006A26E8BFA8B3571A59E5CEE066CC10B
F301269621D74F1C492A02220C551560EAB04213B3E8BE62FBE2D7AF013072EF82F1DBBA5B3C
BE1974B35AD6E92E6D15C2609C17706422BEB22F12D3C4C0A748426DBE65CEA3A0FF0B208A66
460CE8D359B09333E208EF39FC7FEFA453CDCB028B195E70C577260962E2E8900A286E628BC5
B0EAC0328C2C6F64F0229AD0FC7872F48FED6D1BBC490DA985C19F622BC07B388A4E70E79BBE
40E75D928670EECF2911075DCD056F0010A492DBA50ABC966411D49F39515B27AA1E16E7B610
4B16C6B52B428AB49A6E98ECDB65ACA5377819DE9D99DB481A2D0CCB90A1663CFA6EB6456D10
1609A1958AEE3C8F2FA4396038DC4AEC5DFD472273900E50BCF3CF5E5711055B90A9DD6845B5
7FCB0D9C6CAE3ED0180C7A4C554A1B05298518F4D7DE4107993F27154B90A115A8D1A3F074A4
F34B67CA5D733D59630A5B0ED10FD6459F4F9E3D17E5352EF13AED05ED7A17A44068884977C6
53628D8BB5D185F5783D041DB9644D0D69BFF8433E2D00C9F6A8837A414270C66D0249E414CE
0E56D5051ED7AFF463C05D6CD8EA3B09E1A3FA4C1A866EF3238FDA1B43606F29CFFAFD8F91AE
673BCC38804F91178C0D596E109B65D5A462A103A4A29D995567EC16F0263A03BAC4132DE257
3EAB9DC7349B6B1FDCE50DC21125E38D17A3F6EF66B3212DE5E0B74C3DD37541E341BE122BBE
DB6EBC2DB96DD991F71011AA719C1784E24479DEB65F5D053BC429785D4AAD99DE7B5B5C03E5
CE4443DBC7BF483EF1BE808C8E508E6000F51DD9D907B07DB3D9F6566E5023A8AB0EED23857B
30A6FFDA86DD1AA3B98EB1B7BCA8CE298EC3CBE5049272EA33FDCA7A8A5E701E27E07CB3DA0D
395D258A1DBB8714D83F3CCBBDAA9FE08900475EA6EC759F425BDE968014214728D08DDD7358
1408D3974773001D9BF782DC9CBB5209A5D3027ACA7BC277B5DDE20B991E85351889D8D498D5
E8AD712CD499727F61AA3953BE4EB62133BCC578381BA3ACDDBDBBD5DE324E4195CDC594BAA4
8782031B9DF8AAD86EBD62218B119123E213615CCD6894853BFD77D26740D044F58E602733EE
307442AB929222EDB685275504149CA05ECED3D317F03715B8799AD1EF2EDE2E3E0FB5AAA719
31E70C33F7557128CDF1022264F9C9B5DD2D9B548A76EC92ECF9EC2029158B376C89A27C4F73
8009B555618B66865C2F98AF0733208D65B1822C734D3A5A2A0D359A32DD566648DBEEE996FC
085B7025B47B0F8F4DF03A5F9A3168B722351088A1EADECB90456A05BA74D908D4804034A3B9
A915CFF7A3B2D467F9A6ADBF12C2995B75C03DB7B23EB224CDD2B64A0EA942EE4C07AF8EEA65
87A8D3781AD7A6528D821BFD7028A2FC5478B6460AA696EE868319DEC5E1BCAEA69F007B1DC8
0C47701ADACF722B545860158E090398D30A9F049ADF3274A492FE891FB7B2BF76B78BAD2FB0
5BF43BF6B14095B00EADF94491EB50D75FCDD95025DD329127E4746C2B433CD4793DEFFE5015
755A330B821F93F96AB10B508E71363DDB55CF4C6F9092201715CF26D859784C49B636C639CA
F84E044DBE3C14BF6D64E9C259AF1F24EC73C9D30FC0FAC31F9EAF2CA8F49D0D5C18E6A12DC8
ACDB9F3D8ED49F607258C94967989CC31A215020A9FC65815C230E8DA7751552A895B0064C2A
1CFF3F18F9CEB908540A92A106C7D46C596ECDA2E25D331AB85F534313B214ED307DEA03D411
3ED6FA2EF1E1DB3ADB7861FA48CED61F10AB89FAEB82CACEDA7FB1E9CA240E38611ACB421BE1
119683647413C0C063C1468F1376A099F08351BFFDFABDFCE352CA87C125C0212301C6793146
014D87D22727AA014D56C375945F7539863EFF029D046197D65C6A7474FEAF44F7C07B0BA500
752BA29F5F165D4ABEF0EC13C625ECF722FC9EE46958A291CA5B1F385C6A5C6ED4FB0036CFA6
FBFC46F1622A59F019983D1A2F2B6662970BA2FFA63322B5BAC4D58ADAC06E2AC789E0DEDA10
6A28A860E87CCF6639ED41FD29BE8E218733D486633B763D0C226C18F264A632767957662400
393F4CCBFEEC54ACD358DBD43E71FD59096150E9DB5A2AA6B01BDF8549DC0C9170A005A2E182
75D6D74B6815F0205A6990862A083EDF44B4052F83EAD884C2D891A0698A2CDDA09D43D67FEF
477EB0181246A8EA49D8407CA5E24691DC83C45BAFB44E555C33E59BB6A17F2BC3501217502C
545082E1DE1E43A3FBEA39EF67644FECE36492EDDE144CD3AAB6778CC0A4BE0FB15BB46F95E8
6F7B4DE290E66CC69F665B20522987D2D0ED0ACE9E250EC6C0C4793A2EAB0F8F9A00D76D624C
FED7399ED1E766B6C2DAC1C46C6A8C3F291FFC03EB71DC220EBA0573225E74C9DF93E3C3D31F
4BF8B79A0EAE363EEBC0D4547D61D0D54C42DD66FABC8BEFEEAD4FDC6BB20586A0A47F373849
B0B6DDF42A21C6BE6E1C9DDB2F78C71A334F855173F681D7253A9084447B363872C750476365
AC690BB27460E4BBF22ECF0E4D2481BF3B0BAFA54D4295EFA2D38CC6490324B12DC991060DED
E02E8E29156FFE3F9116067F0478F9B5928E44075E847E0864E06191C88F6EF0408124499B97
0C5C5ACC28F06F15EB4FCDA631FBBEB199EC847FED052710C5D3E1F1598F7A279110DFB67E87
8A0CAA27AB4EFCC03A6953E28AA9D660999624CB29AB8904942B5DF81D67A462615111D743CA
174075F3CFA6D239741A4E6BDDF182DE776ADDF3810047C24C44E453A67241E96BB3ED0CA17C
D928B8F67585A228176D85EF4B7FC0374123987D2BC1A0FCB9C5A5BE1749E684270F9B77C5CF
4AE8D360C14CA596EFE21302D3433F7881E8A25A88CA999A9F31A2467FB739511A42913B98D5
6671C74683F2B8DE6CB20B8B9FB3D1B51B9A9A43B8AFCEE655A3F7217F5A952093F7A7AD8459
3AABFE0767F6879CC2EC7E9AB5B59BD82F48D06C9ADC0FA218BCF9E1F63E9000EEDFED014A09
1DC952E3E0F07EB8E7DD1DFE0CC0E6AF9072A53FC95199F9233A66F2D04C65BAD02D00C3C5BA
1F5AF4D33A94E8EB5EF8B21ED1637B1C3E3522CFF14177CBF28628D468249A154E900A9DEAC7
0F0BE7B7D7EFE43B9243EEEEA068B03D0122FEAC859438FE96EBA107D3EBAA99817816652B53
944DF5BDE7B78EAE04DCD2A179FA5C3002457CCCE48DEF5739CD02A8BEBC5D65A626BB50E485
7A592D4652D7696129B176E5CA95C9C3491858D341DEB70A0E2D57B811EAEF78E52CA3629E9D
EE7E39259100EA60488AABCC05AE2C6F751F41BCB2C690161E8813FB4E7FD734F2C6FDB37CEE
E6F7BCBC29B2819E904E61F892FBAEE59C4581E2F171F9F360452FA11A872267D49F62DF732D
EE74C8074370BB37D33D939E4A933758487B280B1D83CB23DF036EA8304A2531465A647F81E6
3DDE4734C49A51AD264013840793737F31F69413E5F5152E30309701EA8E96357CBC6BD39053
13564751930070836262DA78A79F8EF1D9A17458E02D8040629B6DC7A7DC114D05A4BB01F90E
01480CA86F291747C4C1B226B2EA6C15A38B6D7078F2F51B264EB125891DB1BFA66952594053
1976089A9A63FDA1C89FBBCF9E5A8EF413F837BB541B1FD6F825B7DB4D1C1F3FA3EEF70EB4DF
0E962393060034581AE4609479013A72D16803FCA455F9722C2BBA278A1BA5BCF1B8D1A5139F
5AE71FF532481524ACEF4FDEE7EF14D343A1F0E3FE847D9C9E5878BF1E5530820DE3E6D438E1
E66F20BAEC033B4F92D055105ED98345BDE4FBB5612DC76B7F51CB9D66150D153A10427C027E
E83838FAA910E77FCD45A41BDC6081B0826206B56C08232984A85A5251A8A8362CC0C4B4F4DC
E651519C55777E6CA349BC060F9523C421B264D1B30895DA4ABFC4AB9ECC4FE0B4A1CA8310F4
53DE21A1E73E8BB587EBEFA3F4555B5A332499CB2F1F49B7D122ED4F470711F436D05695FC1F
275B93CEADE6D04FB2108517D670949A4BDBA8B6CDDB62B1C9CC92ED63A8890D1E287E0051E7
C8BC47B4A7FEC9C7C33BF668ABF07C2CE4E080C8C4E9503B61940DB11C5F17C54D09B8B8C5CE
3985B4221ED39A00C39E87166C7BA0EF441D352259022B609513A2B134E13F48065C7ACB4B10
1230BA98195E8B49D570347FB95443269E9FCF9FD03C7ABA76E7A1B13E187D344D41907FCBDF
19F616DAA51DF3B1B1BE673F95C4EF1A271A908548CFFD0C5F70521EEC3119CA5588B4B7E049
54DF14B0589F1448EAA347734E92128F4D5128243B9E8D1D64FA12F0C89C604EF7EC03587BA0
858739FF07B07DDA99390B74A1FF879E4219A459C6ECCA54896449C3BDF93582F0890BDD0BD6
CF8D5168053B9A33CB7746F62A84AF705B6135AD2BF04803E34ABB34185ACFDE007901CFAA43
64C992303E28A71BDDA153858D252D7FD2DA0D8DC618FDA68F3D26C03641019D7DD2050BEECB
F38DD29039EF1923FDB29576B7E3F10671D1CFD93A2E5DBFF204EFFCDF0035EEA6912163E8A3
D995EF07170E0D74F88762A3CDD080D6CB7CBB603ADF3CF1E8079A2642CF23F40277B1D0FA68
7ADC1CE2E22CA28D2715D58CF727A9BC686734EC03602AC69FE7EE9C08A1A38CE9871E9038CC
624C1E423F34539E4C1DD622E6A2D30E06E2095E30B6C545DFBA323E78413AC65AFC1BE95836
9D64F21405F98FE5B5E58E9EE85DAC85DC318349E91E64C839E9C94CE019C32C6CB85ED016F2
E6069A4B374E37155400BEB75DC3FBDFA829980698B9D725996DB955E4702B4AB9C406991B30
154E150AD128F2BCC1D6AAC5383ACD6A9CE148EF92C870931F701E867F254C7C82AA34F8D55B
28F546E9B7F80437E5A258F22D55FF60916A502103299649FA9B14E5DCB9D2BEEA401E2A3A12
BEC2315FD88F23FA8A9DF60511057AD5AB55A602688C5D9B215355BD24CFA4DCBC9959D1FACA
DD693A320BD8737235896FF92FAEF4135E208E0B52FEE9FF7F101A4957C241CB836EF31A4368
603D687EBC95ED844FCE7C18983C888EF7309FA051593913AD1D767E142AD6E6993375D0ABCE
782BD9A6CE804FBF4634A65C063344C1D8469684C09A9D41D64736DD3C7DAC43B546866D7182
336B6A73A4335B8696A43116F9D4A83518FF1EF7BE60D5A243461737CCDF00093EBC76627A1E
24D3AC2A60CC8EB39B7DDD3C205D80BFDC89DC0571ABC93DEF1998BF1C9C4128BE86B52C3624
46F2AC2695D88AD1626B27D6110B8D130FC7189266C5BB05F193E826A98E86374C57EE9AF55A
2EBCCCF8497A068D6F60769D2C6A22BFB9685FE12E239B4B7C70F13D3CEB0DD59EB53809883C
FFD0D5EC27E0B66B7A41E642EC1D989CE0CED2F386EE381EA1EF0C659556ABC7DAC2D458F816
F04E0FCCEEC190D561C0683F4D579807554EF59D71762374F6BDE146E18ED9944E053F99688E
C4D84CB8ED2CFF8F7AA3A9B624BC0BFCB231C35F93DFF1382E9568DB2499DF08DD1F8F8B49EB
ADBBC2DF3943D11F3A18992B25C7562A7F1FAF0E6E653A678942EF689200EAADA357E28F2610
F9D20F5FA45E81142D264E1E1A54A327AD4ED915749E9F27DD8A36AF0B61C4440C6D9703E5D3
75F449D352148CFA26C266EF7AFB0C3B598E6458D82780DC8D262FB457A136E4107749B0EFCE
94A6AC6C9D49D725D3AE79A217A38B238E4B766EDAEE64D0D9DD1E571F16BA46307838319ADF
6A0D1E7495CC545B7F1EA4911C21C8FCB88075446A45BAA28A9EF33E0B3F3B8DB25C57C3A85E
34AB0C0FB1B18E7BE01BCC2629FDC69E64825A845FDD7BAE1CCA2666DCD8A7F846521F4EAA2A
B5EB1B51AF7002DCCAB0A9A7389C2D3129175D8CE87CC4D73C6D46FCBC10018EA1538FAE45D1
B02EFD79B908CEA0B20D186DFBD0AB05AE06084C5B338D1F60111F5DCDC9E2818773FE82B7E0
A621678987B93E37946BB24B181A4FB4CBA56E3EF726C158B0E878AB6469EA8FC0DE95A17742
141C1AC2B765BE853343CF3C935BE5B14B37203788F32C418AA6206E80EDC58A9AF1B9547A5B
BBCE6CC95B56BCA4994B32E76BB19593D6DA2BB4DB58C0B0D1BD0F94149AAD4B85A30131F569
31A145A65F1CCCAB13DD4B4F3F233D6EAB4DAF44F42B89DA53D2DF61DD7E1FA0575F27504B1B
74F843847454FCA0E5264FC642A28541D6F1D1CAEDF7DB860ED45D9965121B535611A3FDC881
CD1366EBDFB490085CCF11F94905EDE6442391BCD93B1D44BCD4A7B2F17C7B0AB3BF04D07787
451E43B3F25D5E864FC6ABBCEE5297A293C02937B374D8578B71B911556F9C0E71DEE07042BB
46706F5523F72DDA2156E364DCE9644756987A5DAC995C0C86C4DF48C1CCA629126A0B67B59D
50C4E34635C04CDD165D5607A353568EAD3949838D4E5CA7A8E7A9F88540508A122ECD371A77
CDDB588E6392FC187C1A210DC63E42491795C21F9F50421BCBB5F2B58FE1DB5BE2E9BB7938F7
0F3F12AABDB6CD26559D18FD1E7E6757C5470FC2DC7F8FCC6564FE95C2164FAC044B3243C72F
3FD8CA843F111DF1A51672447E49070F6EE4C3ADC8E25754E8FAC50535BD2B164987DC02452A
9DE63973203EDE40EBDC6D0CEE93160C05AA3ACA73DC14BB9B8B01B94E8DBACE5E937E7F0F09
834F266D71D71BC4E06E885356033CEE9A7F346C8609FABFFEBE003A54704A4035ABD55B26FE
6819805ACD33B6425A3B61DD8F3DB2B7B9551318D8048B24FFA4B40861614765716D5E67A9B1
799A48B69864E90476F693CBD8EC106C20E94502EA2EE452C200DFBF45AD273CED950370C316
ECAC58F3DD67B523261A30FBCEF78D51D427D414619E812E72AFBDFE5946E0E5FF7029808E6F
BEB849FBD716CA435BCECFAEDFFFB8A2C48D3BF406A132E7A3FC2A9F52C28763E7575BBC2F22
F4029BD90C19D9C816205B482B03F88FA36332D72E5F0DF82134760D26FFBC3C5867556120F2
6D10BF19A25FB52BAF6A8F98F0A6322B2735E9C7CF5E152D0B7B01D97C5EE45438A287FF2172
B164791B1B60B29E88F3B4EB5FCAF195F5D53910C8F00517A82C650621A83EA994CC63F4788C
98D56676AE219FEF3E446356FBA4B49A24C3E0A8C7413C8AC1BE4D0A063D6DEE027E9FC4CA54
943CEFBC760615B6AB16091114003B158B019E105F8C488DBA09B70DB0AB77EA949F889C1498
FAF8883D63C36CAAF1D3A198E2C76A2C97A0A14E5C3DCFB7034AD7357B3BE8CBF95D93131D77
8758C29887F5CF4B493044E28E29903A3763FD76B3D69AEB4AE6F95B160FD9519AF1A8C90AEB
29776F438F1313FEAB076CCD14323A237BA5BF76FAEB29D0ECEF23ADB8CBEFCD6DF76741644D
51076CF66F92B52D852C8994B9C763DD08099897B11ADCF00E9DFCFEFB6C876B4F076F7923FC
3975AF92E9606475C78B98D53F60F656B5FF23FC4B6032DE05F8077319F6B35E97C43DFA17B4
DE3CF2A3CC799F8BCE3AA8C9D1B83A4ABC42A89ABD121D46C1A0235AA761AF492E2E2136221A
C34039136C291E877912D3946118D5AFB7F44A7BC0ABB2B066606C7D4CB5FC0C8133A84721D8
CC7ECAFBFB6B15B6AD5ADAC50A7C3A3B8BEAF70054601140CB8CC08B6372FF8FAFB5BD0DF043
64633EDC41FA1C4522402313B35550FD3515B9FEB6A17C4A5B197E694A07477CBD4A46999EDF
0F0A500EE4C701F55F00D5751C65D08A621CB3F41C298C6E4DDFE05703B6EC04C25DE3E0E7AD
4F11DC918E011C5FBB236E5BEF784B2FFEB8D79BE24F9C1C394D5BB839142C1193BB7F224ACD
259D1A90D2D237ADDFCEC05EFA0C387D984CE73E67169DC36EEBCF137FC9829E4BBDDBCBD5F6
1C2F3155B72E8F427A15B099C2561CE8B9871FEB7C1CFCC24A639E0F2D051ECFAB89797D1B1C
0BBB7B374DF1D3DF75E16998DD4198358E2829F7BD40F50A449B968813949115DB90A7C403A2
832454BE362C71875DF7476C7651F3414C0D4F497AD1B67B2952D41641C740028167677C4837
4B3151A9021FD3B9C21CA8A8EFBD86B11D998813F01C3FCC990C60FBA08F67D3AB4A302B62EC
0F04B9063E01A8C6178F3806935F638C972686FEF41BAA1CF372B735FB19BC389AF9D7DDBC7D
31ACB7E915D4B418D7A5AB181CE663314278CF8881AC4430EBD3EE131A7A2AADE1DE7731DA96
303DFF212E8FA851CEFEAFA4969D11B0C4A74E23654821BA2458961CC2B1361BAD81A8FCBB99
475B003C29F738EF40E4F9B1D89CADCEF391DB7CD117BE434D0856363AF49DF9D46A0CFBFF5A
F6E5E4D192A4D13050F5CE3E30471E489D57330853D2728007FFE1B7CE41375DBC823B84812A
6794B58E38DE43B2E22D0D059DB642385D32F79FE0D2B8482F61A0E1C2155DD69D2DBD2636BC
0F07EFB9F6F13C4E61AD16BC525B35930DE9DD5EF4E5E91146ACC78987A2E9578475522B3C87
D2F5C5ECAC8E55DE0399EB852551148047019FA08FCAE9BB7831454EE0D5C36E3744D7A34EED
0CB0CC8E82810A673C1098986B7D3CA984597F37F695DF8AA168A70D0AE96F526F09EC75FD2C
0D2FA0055C519459ADC3E7C61816D57CA3BD36F78A06DBE7DC22505A4CA8AF1B284D887B12B7
F161FE27B6F1ED063FB4F7A37B5AF0D1231E9ED802879896ECFAD70260C1065AE88E593C75B6
D0CE546440C482F5503467C854758FDC1C95CDCB7D5663A0E1AC98D0A518894AA3C6F4E4ADEA
A8AC81D8952D585C2B70D5AD861B13F6B48616332C765D1FDD8A97E8B15D38097AFA88CD7BB6
B7C82DC031DA0E5E919B3A8CCE89DA12B8548A7C45FE1AC418EEB8B2318C951659A30E56F4F1
66A6FCF2473C213449F46CFB906DF3FF8AC703020E8CBC71BF216518A3C76265E644F62BE4B2
C17CE1C8FEE549FD14D1CB94B646ECB1D14CFDB5CC422D8DAE5A86550D4862ACCA62644FECE3
6492EDDE670BC9CE80B0FFDAEFF682BDE3DBF0C403B882882AF7572A42B4F49F6BDB5A8AEF91
159546D90238EC370BA7E2B0CF8BC7505D8A2936E88836D097F48D57AFF9B04D08E9FE8F3F35
D04647D6AE41AB09AF7BC1335369407A9558436BE878BE6E8B7F4CF88CF09A6792AF911FFC61
653653D1C6C8DA705377941C7D4C1A6CFA6F47C2984436EF697052F88DC07C91414283515BEC
6BF581C046306800B755C301E5C5E2509C8717D7A4501666D78C7A63C74279DD218840526D5C
64DA4CD356D24EE7382A471E511AA7FB94DCC208F1D79E5B878BB110D5DF78D7A25FACD252BA
729213BC5B60093C115F61D72B91EBA38D54600893F12F41C59B26752D3EFEC1336D8A1BDC0E
9A33B9C9CFB1946D4A60836B1DDDDDCAB7C18A1DB24BFFE3DF0AAFCE0C145F5C27B8BFEF908F
BFF18D2F398B914A5803D2337B95BC7D0520BCD60D3730189AF04C8417D6E12C20626580881B
CBF4C7F6A6A5F43E7792DE58F7ADA1D8784F6A7B4E6F96CE73C7629A1B3F78B821629B8027E8
5EB5241D8723F1632145263B0457985BE78A4709401ECB03F96444D94F3369B30B41AE1A16A7
671D2A6AB6ECBDAD3753FCBB0EDB46887CCA933F5909694344F7282CC7BFEFF1C3E19E7668DB
02447082F8D172111D8526C17A4458326BCCF6AAC24088A3F6DCDC42D5C5587E05DDC8CCFD07
38E7F9185281192A15D248F7A7C7F013508024E4F2386DF48F076B2674E5A720C8E5D5DB8B7E
A56C349A963ED8441501C23B7334C245069978B1D13AAE19581AC8D6BD5BFD27B3083652678C
15EA96AC0A901508D2DD0D4D89A772C740AC408BB9B61C28D5FD3F46463888A3FF49EE43721A
0D03907F2D20F9C953C6C1DB8BD432AFA377913B374443BD560F68D11611B017C876D7CD1A2B
ED5789A0E5BB275660A68957B69249F0FA1822E3DEB8C8C879287FB81344AA625A772093C6BA
151711232715B0D53725AB50343C5B1917E2D2575340D003DB8ADF03B3835475F09825E541E8
7A326369AC59D4B9A71B2D5485F01CFD40313D14492E828A47FEF18857AAD991E624AB1D3D8D
696A55D34E3A3689DFB64C5C33FED34FB0C8293DA01C83C58943509507870979B2C51F74EF70
0BC52509DA2802C0F0C1F4516807C3DCFDCB32C4B5ED6A87231E58F5896C85687EDC3E787220
6B3C19BE99A863A40FF15776E396918AE1DDAE9ACD9A3C654133AA17294A9E57BA5287DB3C71
DC1C0D12D9D6A6B85F5D1CB487B51E8C1329204815962B6937A22375D5DB47C4BDE26ED93EA1
8C82839F55A28F62A508958BC7FDFFDFABAD5757E5A4E891EFDFE94216867DFD4E36A3A394FC
1451E38907B58D16FB110D8B18E99945C9D1A215F6C906DC5C2A8B98BA49C225C437068ED712
0C3E591F754BBEB880FA51868EBE4735B7D57C1107652525B3B844183F4CF351BA35D655BD5E
66527CDC311A4F0DB54129569DABD87A4E45081B4CF219A75432C6C628B596AFD87B39B68F60
0611B3AB3D8361B8B056E3AA2B403F6550B72019BE02A27B7CD023C45F72EBAFCA0315F4FEA9
D490254D0ADFD8702B6EE29AF2E47BE8350196E470D622BFD3FEBF223D7358A6A00F042F7D16
8507D7E69ADACA8CDD219CCA5AC0A1D28EC684467D9A16152C9CA31478464B5A35CBB18F064A
F9DE5A5044AE920B9897D6EDA7BDAD45A2CE8196D918A6C98EAFDB088DF5E11E3ECA1B860FEE
77E4A7A68E21EDF484532E24246F345BC0136909DCDEB2D637B215F1087A3B14A74CE614E00D
D9B52795F32DC03DF2B5FE1C2B19D76B3EC5BB517B0623FAA536C0752C796B2179CA76A40C01
71FA99C78E06BF1151C9384A0ECF7E384BC11248D954B21C9DE2BF6DF4229DF208FEA16848C8
93F1F25B80020EA691D92D47D82504EEBBAB22C4FABB9AA29EBC2AAB197D861B9A7949FD86F2
01A90EE2A453BFA2F49BE46E87935CF365B21F946B88A3E8647FB2330928C1E5FDE0A807C23F
CB55B4E2008D5E3ADD8DF3A74E5239B7AAEC108EA92033CC581AEBCF23116AE19F25B8D31EBA
90CE20388FE73B79CC933FDD183AE909E3122384F79D2FE53CC07CEA9151BB3EC076DE154E67
2B580AE342763452C9FD521E7BE2EBD9F2A410E989FF4C5BEB38346E37D6BC91108939F43EDB
A27CC6D69A60ECA3CB41DDEC11536719E3CADBFBBBFC877D39021AAAF5787B986A01DB572A62
B492C38466110E1F484FABF38054D0FD6ACECC367FCDA35CF928707A3E15A0CBD3F0A6D555E1
625582DCF088B8FA6859B01357A3FA460E7E5CC1A3330318B3FADA86B2C55F904D77675EF57F
137E8D3852E1CF505029DD33153640E04FEC2575888CAE0258B22F309C93E9042D567BA4A0FF
C57CB9E9CAA514ECBA866518648F968390586F1CB0AC986DDDDCDAAB912A09C397D12A9973DD
C5ABC02B82C7B3C1CAAC0F1DA96154677B7112BFDD1C349DFDB5C4BCE5D7146C8475E3CF71AB
9034ABACAE8182826BCC8836A6C0CBEF7B64B67F874A115359562C9A996748958E7238777F23
511B0F2C18848599BEB4979E22B98EB5D579611C86D917D84C50B23D55E5975A2CC934A1265C
0731C9510C003930CD829E40A4B57690C4B63595F1735D8C2EA162DB038F58BF18F3155D0D6C
5982D43E0BBCB1872EFF929A6E4788611C2527175460FC9A8A8BC2B2B3ACBEEBD6C53779A115
62570F53EEE2BE859BDD702D4E983B2877F1F3AE6E4893CAB50D607C42CC9DBD13FA64F20956
338528553E7F0FD6DB1FE98257C7ACECE718E79E6C3EA3588FAC6EF5A280F937F89E57079622
0FC2B939832FBB6F34A9CFF554269121EF6AA6C3B3314F2E22F5E597A4FF253FCA5F757FE152
E4FB5E6019766336E6288C352042FC2BE780C7E555F03B991BC44A7456762FD05C9C2E997C62
6379D447DC056D66332FFC2A137FC9C2DFA584B127429914C40BC3A8A0EA5E7D6CD3A86844CB
8F1ED4B763AF17E80A0B808DCC5C70B38C1378C9CBF77601879D0019A8B2AD2D458C17DA9326
39D69CEF730623ACD1243B062CCDDB62116655812D396686DDC1C8938EDBBAFBFE0CCD332210
70A60888C8397CA3924E55C5820F4EB29FF35BC501347A746E3704FD2051A50C4C4C1C09C74C
9E6CEECAD42D37DDBC410485F90A0FEA07521D6508208D4D86AE19E2446D21902441B4473984
9ABCBB2ADCFA2FB353E6838A0444FC13839CA5EDAD7B5638D76537257187EB5DC89A1F412C35
EE4D8BC661BCE25D809BF5E3B082051090B20B6B83225581B547421138ABE92A2C3C554651C2
604F7E79B48A1FE0E630A4CAF13FC15FCA552DC094BE6F359736A68FB4791DB29B16EDB6E06D
3DDFD451B111A06BCE53B70B7EF5858905663629E780D0A79FB86C239FD3DA4D2FC79A2B7619
A3612490F147A44FB5A9A5A8826C7E6F70D9AC9041E33C39108C8B963F692C8719187246E9D3
4F34D5D6053EF759DA18EE8251B4DF0BBCA723F7AD791C3DFB0F1DB37B01CDDDA2CE698B3BF6
79D2CC1CE8685CE0C872C2F89C6A6897F8C203ED61AAD3F8CC5E0371710F5C4C86343AC38877
0C56F7D1C14B15CA0434218F86BEFC24136EC73CCA2AB768FAA087EF70B3D5FB7F200A68082F
F38E522EAB0AC5C74309807EB4597D8EDE958790885AA18C792E695374DD77595A94F74FB896
587C5CAF286F43223BBFDDA9E89BE778DFFABDE05823909DB8ED5B5310ADE1E80DA1EF16805F
5F8AA900BE2AE91C54AA61D40A0CBF914DCEC7A0DFB650D6323855A5EB0ADF481A2189F7B273
6106C56E30A50C27578BB7B21DB20BF5496E50DF4E50C834624FC1275DC25375DB000AED74EC
1A1A64454F041DB66CBA8A7C7455B4B55EEF149414EE08BFAD9BAB1693F197EFD3BD22FC8368
D39B706CC7982CE7179CB85B9EB073FADE8BACBB9AF70F7101EB114A773BF5FB3B4231BB9F5E
439BFFC1464F50EE94B499B3D84D879FAC0012433CD406BFB7420354879EA2220EF28C07DF24
DCB079FD0DC2A63F9CC9C709DD122B658F95E5211C61795A791544E9C21FFDAB0ACF64BD6064
4146153F02822F1518D0F6C7E3CA9A4096FF4C424516835C7F6607DAFE23C0B70C8F8990EFF7
B8AE724A07B713297D9D7C83D87A6B19EB98C48C6E9422DADA99113C8540F48C1CA03058F052
712C1A46F17A23B45135C443C1128563FD6A66FE9E3C07BA27511B4CF0FF68D7792F6FB1589F
D22A2CF5051ED798976FB83D3B23B6981F169B44A3E3CC47AF929BA4716C51EF979A3FF7E426
6899A457A875C0BB296EBEB8384586AA380F9EEF9D52EF6C952E848923AB3F564E776DCE58F2
1B6DED7960F326F4E925AB2CBDFA863E9C79453E338D7D61B387C193A862FA9E6C456B7652A7
91A91B0BF01A799DCBADE03850B816EA002185F7740C8E5B7C32B003FF7A8C78911BE015F299
6455586FBA449AE8F9B27940CC97D25D77D60B0AA847F586DC6672E0C0F6D2CB636B51AA401B
A97D84DA2774CB84912E47C9DADE61DE470B61994B83B75207AF9ABE5E10E5E8CFA8FDB8131B
BC68A63886E7FDEED53AD867B6D3284F4E957322274A3B7B1846D860C446B0C5BBCC3C6241A5
6D2DE295173C3D64103955B1BB8716FFC0DC492FD348CDD46707637EBA91FA455D53B9F528D2
245682997BB43CBCBC5E8EA3E9E2A2BD19202F67D7C16A42C602EFE8254C3B2FE935C1F5BDD6
7D21D27035814763F60AB26FC8966849352D3FBDB628486CF74C5224F5D8965C5932F80E0D8B
E4B9716E5747EBD84BF452312042FE88D07E57A42A8049FFF714E690AE0F5F7D54FDE3311219
8294C3C6F546B09C76ECB3C414A5ED2A2F93E94C895A6010E6BCD4E883D2C7D7E826C14C9EE1
2F474948664138963A96F83BA7906736E893118BE766DF46767C4464623BE7C3697BE8FBFD66
2EF959E03B688D73D2A2D1F74E9982FAF31D21830D338BD8BCD83AC92127F9D48BD2660432E9
7BB6887E869A9E1871FA2C1EB361BF3916F571D9C7FF2B864658AC152431B931EC6C4F1D48F0
665A90054FEBB824B428C2A997B404813E861723FB6C9E2C4BFCD04E8A4D2B262CDCE120E249
12D32FC6CDD7D7235AC5F3D7840EAFF18BD818B715AFC03EBA177A8C3C3066E95C8840F29152
1C8429841E8B39D7DEC80C3EB56B49A21A02AC900E7A2B67E67732298F4E324825F7C823B761
1FAD2A8B7EB6BC44C3DC0705B4D258FC26FAB5D9C20A786188F593D010A843A9B6FD47F5A71C
FD728C48279ABD0E0A26DEDB870FAA7E19FFFB970BCBFC6A61A487A19C56BC4E8D2E3EF093DF
0B555A928A3B8F8F26C3E8CD4E1FBDB913D3235DABE2FA3B66C832BC9533C12FE5A5D6A004EF
DE58F949BFC8BD48C44F8DC5F55D94CE79AA7D71AD14A4F7517AD7C1F17CAB05E7A745220C32
913F3C8F06CF02BACF882D8C293C8290740EB05C22FFC32C4CB2012C3D7DBD643EF84CD928EF
8AAEE42797D010E0FCA4ED02A1EDBE1E1D7861EB0A741CF976CA07BC02C22930776CB0A36B46
B1A4ACA00FD2D77F685D8BA3C1E24C522E43F198FED209ED810B0A7214FAF8D583EA9146B26E
9EBD52FE30826222AF5FE432BD82D840D0A22B8BA2A7635DE4C7FEA5AACD8F946DF99C0FCBB8
4E5194AEB9FBBA94A33CCDB34B44A309954DFE2DECC1C3F5056BDA9456EC5A6E0BD801218083
AC309C737F10E9A42E69B5BF74D0278FBA6A691B934D748CED7644DFD2F5C5ECAC8E55DF3B5A
225E3D5BA7706FE4E50B7D9D53DF98880CFF01AA1A5936513DB38DE449DD1B1BCB6CF199752D
F7E2161857FA86CAB9D1B64595DA5A17BC0F305F9023BD265E341558F73A22BD4A01FED18671
79986ED99822F6EB5EAE2FCB74BE99F34604FB47CBA6C3A0F0CD388ED13DD07337175FFC9FB3
3BEFC49A742D6F667AF2A4476D6E8E0BB61A002B29BA069A4A78EE1BBD00FDA9AC18A33CDE76
217E48B0444E7C90788E60FF3C820FFCEDA02891D12333D6788C8028507FA8B9C59D6D6D476C
349C1E3646640FE504893B23587C0FEF7C278FD7E1FC0C12DE081C4BC55EE7BF65C9BE4C6168
ABC5281429F3D39BD0BBF771D5748B321D993DF752B5FECC462FF8306FF73CED8C946F61087A
E9606699C2E85261C50715085F967542E98F92D89BD22D1B96C1BBF45E11958CE4F31EA3BC99
4EA8E9D0B7CF4BA9EF66B8B6005D6B2960E68DD0C0AF4DD9957A253E2D4C47D46A09CEC1580C
02D05BD3720DAF7E8FD3D2144B8E5B3414FE89B2B95F8CD153B326E425B4733DDB2B4E1F0200
0DCC806252311C1E313A1EBBB4A9C445350609CB8BD725E67F6FB760765B01AC474780FAA707
8D0D0A0973CF6A475087B720DE8C5200E953EEE885E5510B83A16014A6A255BD8273610FD698
B773A0E2911690B1D5E0517FA1E2909905419D539B7D91F06FCFBE4C05041A06CB8A35BBB51B
563E425D0E65EB7B086ACAB5475BFE889397B2326CDE5D4F7B30DA851C55C630805A0548EACA
EC8B20BC10BA9925D13990FFCDB569782C39032BC5C6834EEFC519747CEF23E1413BA5C6A03A
399E7ADC118DAB0E5A1A8DDFEB5888A6855AD7CA9B8C5C96B33538CA373D4934A879387F55CE
65390D313D93E4CC7EC7E0F67C483C3CBA57F5625699CEDEE9DA8622F0553D19231F62640432
9268F440398AC131190CB74E4CECD5BE8CDB1A01BC980B993CD8B3EA77ECA9642DA8E185A363
E7DF2441B2B8D991A14E5A5FEA3014AA375197FDBC0B1472B321D5B0D8A543CD958AC036208D
6B33858D4F5A454FDA0443A5976A1008DA84749552FED657DF42290EA9E0BF1449B2F609C3B6
9B8B2618A73E5839FA69CDAC52A68932FFD4B9EAC9A96AEFD44FD7475A9CDCAF91CBF86E8175
8426068AAD6DCCBE6E874248D86BF55ACA0006414E21877854E95F7B76B3994424BD597F3FBF
E58461DC5EB0C03DF892BAAF83B7E5B743B0FEC309198E019CB64047D127E47ECDA08A6398A4
6621EE521D05CE94BE413888A3FFBF5039563B15D39659A57A9044E6CAAC763D25AEFA6AE331
5FE2A2EE1F6FA44554BDDD7150B8D852515988753EA49EAD18885AE5D2C876335BE4C4E022AB
6FD7CCF70EBD8AFB12C741F8A6B559ACA8B7C8C71F2C7C2B046F59224D15B2A85FB38FB2C156
23BD669B4DA58C1862A69E3D01DD5098887472BDDB348F37053C8A9022D23CCEB6106487E1D9
B3128AC1DC75CFF1CBBEB778ECDED89D47E4E96D97B8DF40E2B1B21FC062A353CCDA5E734D9E
D9B1800A27F3F100764C5F568FA7668CBD8C9CEC6AD262C36CAC701239B6F462AC4936BA7593
CE53E49BFF228411D4F133A019C029CCB7B973C8ED2239E18C207BFBF148019D088D2DEEC58A
1C243F368D42A7123F976CDD4BB47A754E112A27939BBAE57C1335F365F320D1E89079E71D3B
8F7C2A4A4CDA6961489A6F884D75D7493296E2DDA3EE5BDA4EC01A82354BE5CA793904FA722B
F37D85E7FEC21B4E98C225FD66E819FF11DF368257087FEB4355932627F3F6B9C288AFD80CE4
533967F42B89DA53D2DF67F577A03AD16D54CAFCBB249565325B7609E419BCE2F136756ADB46
F2BB37010FA4211F58E74D0931C6CE66474089DF52B9401EA0E26C19714DBFEC4F138D6A0ACC
F4CAB67C1AAC582A768819F6EB7F1591BB471640E8A262D8D6BE3F935229A8FDE0C762F89935
C88B847D7E7E6B15B2956AC4BC9095EDF740C615C9018579FB81064A1D68F6982C0CBB0A33CF
9A8BFC6E094C3F87BDE2AC70FE526CBC63672520E6B35070550449599914F3BE35EAA1E326BB
251D9C9EF42A9244CA8EE79FAB1ADAE983F83AF2A712F9BF9A2EF74B288A23CA7E958CE8C24B
A0C4AD0683306DA951071E3EE96C25CD8123E87ECB93CF760360CA98727A7CA23F1273EF4A26
EB148E00C231BF56A66F74FEAFE07322EE921C5DE6979821441201C46D7E6CFCBC313EDAABE7
ADAAEF5F7F2D7D297DE18B504CCB3C0B0D77F03BC9FE79394441267E5418523AE7F91BFD7389
D20F77115A4A9129C33531CFD99A2CA3F7D3F39635CD0EC256F7BB65B980A9353E9692BC936D
8AB18BEA370933FF01E8EAC03BC98F7687E754593E3E06BEE184BEC18B126F7BF3FD083F87CD
FC2C1074ED007432A6D797182114AB1C8E763F8F37C705584DA16B4BEE27A6B9B24746DF9E9B
71729BDA630ABB697F3348ADAC537B97AE350F64C8C8B05C82A49F8BDF4A2843C33BE4F13A20
1C7CA5B41823923C9D510AD2741B171E8506B0B79D3F18C8C363F3F043841940E1BE692B06B1
3774D4405AC2FF62876FDBF10D1A87456293C7F4CBBF8A7D8A0C5AD8DA6698EFD998F58929C2
919D2F8B4C52A904B618A61D4A3936CEEECCFD97CECD156C2A5979B7321CC4F1B8CB84B00BFD
6EB32E12FEBC812F0115B57EB60B4CB41D6C109D9D4C4684CC2E46F7A8012AEAA0D7EFFCCF50
57CD4EFFFB1679F3B1E8BCAB177A67427E3643105DDD8A6D292681CC9114C008FEBDC659EE93
70AA08E8BAFD8607A45721DF8F66D072BA67B863797C96053DF935E1950A7CCBE9F22EE34E2E
3607F1CF4BBA18EB34480EE49898F7DFE120A3523646C7693B6E809EEB360FF12283E6C67F84
517CC4794C580810DF85B855E394D7F1A35C8905D61252C16ED95E1B8B64062D122EA6217776
78D13D7924CD71666C191599921DF18BBF96ADDCE54DB9EE2DD1D4083EB31593B706542E8CFD
5438668747DD9234AFEE940B0C9EA6CF1470A700AAFF7C1EF56751BA9B10FC5772DFA61F4718
90C6911D9B68BCA77B2FC6021D86D68B032F1BA6774830F123E21B4656380EFE06E70A6755D5
B599DD09E4B1E45C1DD74F7523F447C5FB468A871DB7FD074305FDE5EC49A348A02DA990B1FC
5CB991A715FA79F49B4D32F601F102618731D98A10B305625DB0C0E0EEB02A4FB69A39E4B716
993CAF7222E329D83CB7E60EA78CED15844F3079F7821A44C27C237873B9729C0D690C31E52F
3B93349522C6A1DA789C75CC0D1059A2D1339A463ACB7DA3399414B623751485E9CCB0523A5D
0D42DDF2E89DFCAE5E6A7B743F7E247D171DEED57BD133EEE43DCF5C95EEFFE36B3440FA2276
EC0E4F99715067736FF688C881396724214099C6E2F821721EBDFC68F16F936A7CA1CC3745EE
9B127FCA1D9A338CB602B03655E8DE2111EA1371808381DD3190A5AB16FA563E4A71D2499E09
5EEC2749E67E532583D7BB28C595BC45C665F14D206480AC3D562C7DB8F3314CF070EB696FC9
52DD964704F7705C583517362364B2B1017C71623027FA35E90A24D7F5172B16FE9A88BF97E0
5576E582EDB08893B5E2465C61CA3157432A1FFEE7512E94E63060B4A5C43D8205DA43C6F75C
065DBDBFEFCADF13177C2B77011E121C1F5D19B6BF1FA1DE2A141C4B6210EC1F05DC8F30BB9F
EB6D9C22D6AEF88AEF4CE2C3C9563F0B0EB391CFE00DF55E2E681EA1707B2F0371D7095F718A
E3BCA6C483598937251CC43209701E55A0FEC0CA2A84ABE42E58B16B19A8CC1875463649B037
BD08E0F3AF1DD70348450784E46E23AED8305E833A81740513E494EC2F1083038404B3A79B67
9E530D8E1CC833F84FD29391AEA36D2B37D2FFEEA00E90D50D52FA2D9CBE5224BD19A4BFEBFD
6D3604C250544CC529026DD473B7E906CAC0BFD8B106953E4801768DD2F21A12B6743DC8E9EA
6E662EF88CF8BCE0E34F7A88D2401A80CE26D44B0897339DAC523C853953CB6A3794963E5CDF
296B979A20FB69A20884894C05E38DA4D3097DA184178185F72CA9E34E0B842662D9F51C59C0
D61579414E44F294BE31831E7F806B48A9C60CCD6EE051D4D29E406C6092F867EA3563FDCDBD
E1925FECC354CE0EC01E281D1B4360F3EBDBCDAFD217081557869C8618CE923DED375425B9CE
0A1F4A33EAEE378AD6A1177DF9432A2F140D5131BF576271A0DB8D1E74EBDB78CDE4C193A7F2
FD5E1783013DB6401ACB51B108F4A71B16C9CF57EF903998163E5201A02A137992528337A595
D9C17828074609B7380F9EA731EDB55D4F31C542B522B6C6EA2E25C8C562D392317318150D48
69C0417BE8F5EE48600DEE3BAD8076D861098A2A3B62BD512B4BCD48916497DBB3C90935321F
FC39B457220CC32348A2D2A802547D1F4B4D4BAFA402B8A7A7AFAFBFBD3207B046A576E3F039
643B325D84741D1D156F026F664F2CAD54FC268F41FB9DED61B9AB9DCDA646B42C9070F40635
A46DFE209B72EADD40049867E8B15BB0A927B1C51C31EA74CA99C4B06322DBC71DA693DDE3E6
86C7494D7B49701E8F2B8CD754C30476CF9BD5E0D5AF5C6D99A4BD87F1B73C25858EDE3D1D82
710E3BCE544FC397A91CDA4604E5DB7AD2D6460A31BB35C9BA6DF033A70EC0C6F601873D4C6A
3D14EA9FC616786920F468C2CD0EEC9D63E8D085D0BE593D8344D989BCAECD6F770F7763E0F8
F8938A1A26AFDA38A79A1A0780CA251AB2D9B11E33E394E4AB7BB1F459E9695AD88AD7133127
70945D3D6BBF673D418761AC787EF5159F9FED9103B28F0D5D86C4AAF4EE462228AA24BD5902
6DBA7831062DFBC34276C5BDE5EED1F7091A216D155EA9F4D9E1E4FC850EF02F31CF85EB5C9E
B8D4F5C55FF4147242CCE03827A0C60ABF2A727981B99891E361364BBE822A4A5A88F52328AB
182A459E5856EF9EDF6C835111E2B91A04D83EA913210E40015D3BE601C0B43E2E677D5C9CDA
5A3D2C405B67095F3FDCF973BDBB333D13693924369C36F5AE1117BC90D9624016B22A3D6F23
A80577B75562F3D48655DB8A537BF3409B92D2BD3B02B1AEA544636A6B2856D0A1A8DEBC43BC
F2023A54A3CD885FD9EE3FDA7F3435A911C9103F101A39B5A3B5166EAA666A348648CCDC9116
FD0167DFA044E6F3F73539FA3444FAEA7A34B37E49C34CCB3851F03148C78CE454712F42044B
159167701FDDD5B664196666BFCBCB7B0B261FDD85134D0A46FE319CF381A545B577D523894B
7492F632C944848EA6901ADF9DEFF2FEACD94BC30F6DB00A591CEFE205390E32974B78F82A6F
FA0C1E746ED0430F333FB242CC438E0E107FAA0CA1A4073224FBDB3AF21F6926B6C327F14BB3
680282DD37E809B2180B112A1D686ED5BEADCB5A230B890A30BA2832C1D08AA59A6E9321C362
EDD0042C1483BDBA5FF764A474E6254C16904F76642009C316A141E3C824949A766C5E7067F9
EB168A2F152BED22ACC112BFDB3162A697698F8D7EEBDF52BCBB14FF206DE000BEB437783D14
1F93DAF468B1A6A62CA6422E0D3FC51FE03209132E719C3A7DC6A1AA36AADE44C9F9B867AFA3
4F3C26129CB619B501BA4224C7FF90EF8B69650045C57D58D37AB9268ABE8BB62459917AAD27
D93969E9C089CC4F417A679BDD99DE84A400FCD4E388F4F156FEFB6466039FBE72BB3D05549B
CB90A7EC0C2C3565801B3A7A437615337C8DCA761D83A7644B04D4DAE67E00EDBF2B3139C40D
C3D470F8D476728119E9AB31D46B3FF3D6E34BBF653262ECD23A9ECB93AC3D2498F63193EF72
D192F98B05AA779B5015B6CAD18FD29B421A17E01CB394D588E37AB7F986E20E204A0F5FE062
24F53ACCC121F112D58A79F25C60A550A1B325BF33F568D69CA9A4CFB249096B8EFE3B43CD70
3DB80FA20BFDFD3E01433F2F69913D13C1D14031545DB4877AC7FE4F562322DBD2572CF994B7
EB300F26C3B53E75B02B5889CB0420F378A55C9A9B6BBA64CE698CEEF061349F8EEE5B3A4868
70C6A11E9E3FF3FA00E3480610A449C9EA48BEE511DDA6CD9EA3E4653DBEFB8224BC55A02F77
BF16E7B9879BD9AC48788E2FB2E237DBA707FA90CDB918E02CB6C3E49925B60E2A05A71546D4
9D1BB161EA5CE6D303FC1876DC17E24F47344FDF6029F63D8FE1CC789A7753E492F5421C8B7E
C7B777EC34974575B63E74FC255EC95F3A1E93C4D752B42FBC1B1B7DC52B3BD4E33102046FC1
E16B7EE6FD0411727965C75DE86E547608807E51CDC1E51B76B8F9AE0484488A7D21CF0F3B7E
E73F691FA048309C990DB12036EC5C299A4EAE7411759DFC574AC321C443AF71421B7EC71550
348EA60512975B17D6AD6A22463AABDD94BEFD3888CCF264E94A723BAD53E4EE0A32245AEA16
837B570BA36EB70A0414695EED42E02948C308E22FCC6D2E1BF714CA662F615AA7CF0B71941F
E08FD416DB23E1A2307575F66FB214814BDF38383587CB14F5096241A544EDD522F12BFB4864
F0BD989068BE6E80B36C06D4A3609F45A3F249353225D7B0360C438FF0E862A2F29F77842F95
4C289477F1654AA13250611733E6C7C531AC69FCEDBF29C1E6DE2D5CEDEBB77F51A6EA25A3FE
A286986232A2410240B9B7F31BA31A59C40A5882F794832097DC9CB0E806DB71677341EFD524
4C8C23A520C8267213204FF5F13E4BD9CE3E44C9387C17161ECC5D9C9F40B8DC4E6A16D93F83
3F07277E976FFB09BE89D1FE74C1C6E1CF5E21724F8B83E70FD0D4AE72EB2BCD30EACB81710A
C3A308F7E138C921577A06C8EC7293AC443FAD6FD7A6A1873C09011B29E0469E411358E7F5D2
74A072AB9F84F3C5C74C7DD8121084019D89479D44BF25B47C248D4859E9C46D6F0ACC65A9E1
403AE66E84EF3141D688FCF71290CFC65EADAB3F43474C2CC8AE995BE0F19D7C0F8A3E2D3E40
E2ECDBA5EFDD8F07981DB3FDC34B3D0140393D2CB0BFB72E821D01BB22F461CD8F0CA7254CB8
937F9F228F1B356C0EB3F5228A9337AA9E0B24D3BCDF37B2E2255A8DF12B1B343F8DF33908E6
BED58D5FF638584C0C4BFE04E43A4237CEFA6CDFAEE5507428543FF220A987E68C769D0440A9
D4A33739E9072BCDD885C601DD30771D731A7C57713BD4B8CCC0C3C188EDD8AC1145CEAEE80B
1BD2CA85D582F05799BCCD97B8547CCCD71D10892B1409F2D672DABD6F0BE7864DE89FC66F75
8F120CA8A7983688E0B05283B5371EF01F2A68B268D9FB855D7D7238B971371A8AB5F9D80E15
1C132A377D48704342146F9744ECD7AB4453D258A8719B8455EBE73D35A9F70DAB2FDD5D41D2
FAE8CF56146215BA3FBA4ABF8F98765C6ED70B6CA8AB6E28C61611741ECEB33E6C2958DB4020
2F258D78853A789FF3EC7AFC19E5348D8422F6A28D65F2566D046D7B74973685473E5CC0EBEB
A1C944630042E7296D81AC8CAA96238BBC09F3067A7D3BBC45B274311ABB8E4C580DE95BE79D
D7CDA3903094A88FDE6A8CFE77633E0481B2E67CA61E2DCF7872318E63A4134C0F98A472813D
4FCF98DFFD30736ECBB4FACB9C6FD9152461F90B736211E0AB68D5CB662BE0B511A1E60132F7
969DDA9B229091286F87EC576661A94F818B99DD27FF65A4C2A3C500FF9CDB4B7DF109DB016E
CB5A239A4CBEF1D443C48703F62905EA599B82F76BE0FCB01263EEF1EF411C72875DD0A7A515
7265CA3CAD3D27F9F9C20577A552E59910187A9D04F4002E07E92D8F5929FFF98442FFD6D3F8
EED65F2C2BE666AA6220EC4E18FFE0D2F3DAA680D4F270440C3EC7971DA783BF7928F77CD7DD
11AB8528A390318FC0572F13A5A2B20E5EBB1DAA9DF821C0CF3A34258DC56F872175F1D5D8BD
F14478A19B53E278CB4FE83C527BF56A42EACDF193C6EE25337CC2215016A7014F1532DF6711
D9B637A3D5003849A0881C778C74E8E5A47204BAE5374AFCD1BB8E901BF2A703C5CDA6DF6915
C9A93EB94D553D50D3F178EAB2F8D6338416539F225964B688BB649F4F148737410FF38F25E5
6ECF583F62F09985F94EC048B8B460DE00E58F4F238570B689A7AB307B7113814D5F3FF6CF28
0262ACDF7B46AAFBC234EC32A931399BAB9F2AB8B6C05B23FA2152C10888EA6D4E44B44E6572
1CA646ECAE52A79A532565371F141940D81923AD84ADC5C6A9F2D1D1EFCE1E53B5907122EDF3
DF1B69E2D9A87ACB303667CEBF95DAC21B053FBD39511DF938B33032DB098FA64FC7BC6407D1
1BE98402713B6BBD9027BA62BAA364EA172ABA41D3CDB8C6FFAFC5468F51644B157684BB51F4
9FB04A8A56A6CDFF871B78B413D8B7BC595BC8E81E453C36087DB7C092CCEE99D0D3F8EAD687
7EDC5E28210A35DCF3CD49C594171E2531DA1536F4510E0D51EF1760EC7B1FE195BCB5785C3F
26D3C3CAC4989C66F6F75A675ED979905621F8B814BE502C4C8A940BB6D825E27CA6633EECDC
0F1BF725448950A37BEF6ABBE0BCD5620EF0A66A736B7EDDFAFFDF62796577A1F482EC4BDAB0
7024AFE318E92459FD61A4277B5E885C50A825E94EC3E8AAF4292AE4BC9499A00FF14C6D4F74
2615F0F63A62F273218DA051F35A1A429E1B79BE5926C10C5A2AC38EA8A86B055407FAF2CD0F
D6A6B16F847D9EC7E911E436D1D597E012CEC5A08D98056D63FF4D16365A9033251E8DBA1EE3
4F7359FB1115EE681F78A0D9840FD88CDE7EE4791044BC3618B646AF915E316D64BFBEAC1F6C
50CDBED248261813749E1C0CF998383BC6454D6B384AD69F9A8833860DF4D66F750FD45E36F9
AA1DA976E55B0B06477F3BAFE5FECA828FDE3A373DAE7C2C029F2B2C4992D71AE4FC1804301B
35CA5E73DD0A354B53D1C74531A4C860CA8946C9C05C93483C0F315CAA8D791AAFA03FCAE03E
E7F6378C9AE14CDAF68F002C3F306682777FFC83ABCCF992C787425F604253359CCC2D30361C
ED2137D2F825EAB125A9F4411453292AFA0A5228E5B6B4B6CDDED786C3623F8D02BAE3733A72
BC1D1C5D8E6AD59A371A1769512EC26EBBB115291652182BC46AB673D016EC0F25487607FC04
ADFC072CD084E66A2D4EF87343C42A4D94CB9BEF449AF70BAC826C0688E26FB2978BC71DCD25
FAE8C3E2D96E8812F882FBE9E0962E1BCA90CE38A0DA87C42579B1CC21C117AE75331016B882
7A466609F215FD6B6B4217BECA5E741118E7F77600E1EC593FB3CE2FCD61C7083A4C5C9B4DC9
BABC7E573710341D678C527068533BD6D38D9D9C17C651AB8DB46418AB6A794D330C7D0C2C5F
4D8E6E198B47AD4410FE1E3DBF9CE0380D82BE729E3CBE262D2BB7F05F269022FCF6C89B2042
88DE95AEB246BDECB355341EB2E622215E967ABE6B6814E4F76F6DBE972688D7C2CEEDBE858B
967421228CF1718747CC0B5ACE901B98F4A99D7FBC8E5C675D78F0E822FEA12E8100B88D5F8D
86C5E048D4D33942BFE125D27F2A4CF26ADE4B16D4986CE4E8464F7FD90A20A162991146EC48
522D334120D140E31BC5DBC0C038F3ECB63FF9A2ED0EFC3DA2D7C96B19D6ED49CC04A54F33D3
65737297BA328E3D646CD0390EC55747BBA5248D44E594FA8389C72AA738A99DC4DDE351D381
D010A0F5FE48AADE17F62958773D1D8500819DB54D5F7A21A507F767F2CA63C5AC7C08FDF71E
65AEA255B971F5C2D65DD53D9F62D85BE99C8EE05BD698CC7ABB7E596FF0D11C51D0534DBB49
2B219763FC99BA557DA54C10BEF24935E45364D8CB1CA2471BACACD1D67A77ACEA885796AF2C
AD89CC2075F3B8BED21F9B56D11D21561E5752289352227E944A76F5FD44513B79A03F3639BB
F8D2C7F4B8FEF335A20482B0A3B401923458A4F963F1E52F94EAD00D13A5F0FBEAAB7826CC84
08635B28378899A05E4E390490F8D92A93EB8A105A4116A86611AC89F27D946E52CE39EAF255
FCE513D2B2042E66618CC2BC91E8C0128E8315624ACB66F2D48CFE637BBF27CEE5D0FBAA4B9F
99A0EBB9F9D8093C08BD4E067ABED9308AE286ECC5B0CEDD695BB863DA43EEF448AD6AB3C927
8955E9C1BE2A059BA2524352A720C49E5DB9EB8D06A09AF38B957F78C686BFEF9F881D906E5C
AA32E496939359397693AED22C868B2A0872FFD968F953B7C508AE04F706876BC1E165C26ABF
7AD0CDBB6A0176DF1564D7F7CFF2359BCC151A058C48D429DB6BD161B8410082D3AC53331C4B
57A527D18847EF744AB8AF983F3D22E35B8724DC460D0484F6E7470316DC9554906769FAF9E1
E070EA2C816A9C681E3E00BE2A1AB9CBDDC6A43A96ACA4F4E7359C1535E1E88E4F36056913D5
87EFE19E00D48137804DCF153719E8B7B80FF47C0C007D80A1C6A1327D17BDF5D8C0C72626AC
7E5F569E12EF87A2E142EE2261634E8210F72D92F64E34A2C15F7F588E78865B3D6A62B0C3F5
A3BE15C0754E400D62E7E2618EC5A93417B91A079DE49906243FDE354491603335B4BF6DAA07
98B51CA307E41F41BAF0BF79490F892CF47F2FC51560023DD15049526E134D67F48181F37513
05C34EE200DB772CC0DD679264B45A99F5D30C7E893FAEB3906D243A037E9BAEEA613596F222
172033B01EDD18C94DF6641F049102CED150C535C70D1C4C66805C5626B52BF09A97E5B53977
8A096B79166A592E0D5BB8950F7D28FF143F99495CC7C0778405FC7FDD349CF53686572F8921
9FADDD5DE8F3DDFD828F333EDC15F3614F326975C9FE749A6A2730670919B4276EAF9B482CA9
6A0CA64AF391696A78A377FD101074A90F73D9895C89D4008683F0759813A61714269F67B10C
082843A92FA97B55D2F9A40B8E4156F3AEBC7FCBA0773E00E781B80B07004E5B20F8C9FE14E7
DF6712A64BA22CB262799C84746E45F3F41C4776314C3F4A0B9D7EB83FEFFBEEF1660D4590A4
3A9373C08942F46DAAAE287A420749F7046742E7B6E15AB3A04D2B972AE73510F57DE8D24E55
5C438D0953E1C41DB9D6F6C12D2AE784AF55F696EFA024B5AAF5B3E20CD6AEABB356F33B6B93
BA8CDF2537F4570332C0DD0FCE1CF8E2FF3CC038FF272B1DF339CAFE3659AC4541F2204E934A
555AD9F1E9BA831481138A8947BC49B9062E71C202631CD8C856E87CF08278F9FD047325DC4B
E74EDE8242F483FED616AAE2D6A5DAD1E1E83F124DEC374D57B81DA43A0983DAA34AF7ECDDEC
60DBED7ECAC68409956A0EAECC110145CEB8D99BDA1A766C2ADE43326B29CD6BFA4416D9E0F2
153F4F9A969B033087E152AD9BB85A40479FBAC509196C99A4F0841449ECA6DCAC1B9F9D7B26
FDD6F7FBCB3CDD32B75091C5F96B3BF114F9610343ED284F5658752AAC710270945C0A41BC3D
DF3BB0B21448311E9331CD2706364E3090A1265A17B1B424D03B1E950C824645E11AB766503B
0CE70415D410AFAA5B33EBA7B498D80302FE982D9778E4845F3659254EA382964E395D4D0341
A9FEEDA8F963739E10CCC58BAEF8DD49A1361A0CF95083559BA32A8E5426C98142EC2E925E4B
382D5A531912627EB2A0D98A25FCD540CD5FC6DF156D4A5EB1E414DD84C16FB9C6945E792017
9130036B5F05F6E283ED715306CEA7ECEA13E281FD69E9A93B2BDAC310088CA3153323138D52
BB2DB9D272B6FF67EB59F3DB66F08D1F6CE77C4519977721AA8F532006BE856B00B33369FBA6
B980C420E34AD5B7810122EC90AAD038DACD3DB88CE061E05D12FFE44066C1671738AA913836
EDC93AB7E596024FB3498A29E5BB543A67ED3E14B9EB13DBA247325E70CB0E1FDC5EB3784DA0
415CFF2B1A089779FAB42DEBD53920AE48556E4F906F92ABDCB35CF8D53E938B1AD434904AAA
CCC9463D608BD4DDDCBB781F44B864E1703813FAE91CC0B148445B88E4749CB9F52E8A6B8F59
8D754BE58C22AA33D00597D22502A71DC207D7EBC4EFAB16F0A9C3BCF6F888698B443779236C
33358AC4FC59C2F5ECAB3ED32277FD98BA68BE767AACC6ABADDC7755B15C62B458A66086DFB4
64F6C7CDADAD1017B7F4F14D98EF09F0C709AB6C529D19AFBBAC325CCD80D57DDC19AC6957F5
0212F6500E4ADDDB800BFF909D6117961E6A1BD8580FAE0E33103618D4D0ED7AF5D04EBC3388
821C121BA2067E10816FD1DC7A75DFC98106C6E9105F01B599E845E0236258628B904DF5441A
BD12772594645537C75B20460C48B5F21FD02F73460068EC2574FE6829D86D6958A91A588FF6
09F3C9BCC2BFD3D2220E45503D0E5A0FC0A837F73351BE9752A659FEE027EBCB926F5EDE378F
0BD10CC567DA8A829B235B48EB7735919563136FA1A79F99591D431C768B5867A8D2E69E05AD
4F5FF1E34E6971EB4413328C45F3267CFFF49E498C870CDB50680AB42BCBC34FC836C1EFCC10
E50A43B648C88A7CC7D703389DAE2B835CBD5510E1B26D4D436E5F5FF8F7527C1519BCDC7BD5
FE20A390F484DB9ED9B91AE7C4F03DFB68B1F2045118F5E814AF4AE832444F60827AAB48A9DD
05ECD39DFC943775463889604A7458C324CD27782D8BF4B3017821759D70A344EB605BBA4535
27AA7DE48BE86D71C3477D99F41360C647D103666648A5CA008AF3E1D5CFA3B40AC10DD1E79B
302BEFF96C18BF92A086103A9AAA81E55D1AF9FC36931952A736BDF7DC57354AFCD6A964933B
DB66423EA58EDBF68618CD5AE35EC562F343C5915DF0551E54888E295C86CF31506CD44E8B32
24DB4AA472BD23BF94E1384078713BAF280093460A52FD49CEC5C2C29D91BF98064E53137575
260C5867E73DD117E814A1B2AFF8C497406A5DC5DED79CBE50FD30846C34D7841A850BD3FE13
2BEBD9852D9B2F1D7726559E1CDD292BDAC58EED6AE15D3F17B4AD0CDDE87B584B190675D27B
5FE5D0D471F3040390F6D65937C6D83DC34ADA9DCB8B2B401CB1E5396505D0AF8C33F1135189
12B0B959F3C2E8D208E1FF28951F403400AD78AC0E4E1456FE9AF63303DAADB9FBC8E99ED0A0
2D960E54C39B3C27E58198D01E358B2336A4BE0EB99EC56673D45D79E6706C7304C6982D64C0
0432335DA50233FDD28D4DD03851CB8AEE4F523BC43B61F26AFFDAC9BBD7305D389F508B3507
2C30BE43147727DAD9199881C7044B0ABECC5C64D7D3F13AAD67177D34237AB9F8CD77893758
E13619EFBB0B67315237F63312EAB8E1EE1E5A594ED963326BD2C6D54C50B8EE10538B4FEC25
16D138109D2D48849E015934D7E32A192CE4ABE5156402C3EE8A3A5D502CE829D40B9C801B78
C024FAE15B5FB88C7AC33028235330DA644482C0A22AD5444ED10F69B227DE49DA59EAC7AEFC
B4EE7DC0B5D1D1AEB6394AE1E0D9E130C1B1CAFC10787EB5AEEBC4E7235E6F5B1A991EE9A4CF
0C0439025EAFB59959C32604A640E9007F46F9136026D058B594B796E6747AC3CB6B14EB61A1
D03DCF87F05F4EDFE1C6C0DBF6C0618F2BA9D1A690CC811C28033815C699441AC4055E7CDD9D
2B91B631F7C3EF32648D2CA927186872CF2FA646630D4ECA09162AE9FBB00D1CE3C6585E4CDA
A971D4B7D4AE0D5F8DB5DA74AD58FCC9E3378E7B2D4CA0036FB50611C98FCD020027CBE5FAF3
11AC7A05AF6039843AF9FC3B830E0A2CEA945EEA5396A5DC74A465A0B6560B6663AC69E86792
5FB1A69CB553AEF3DBC53D8A631E87B00D48619E77DE39AAED7DCB68A7A4108CE2225010964F
C08660D54D73064D7CC9C7C6A2D12D7F5898280324A90128E4D0730FF35E7B93BBD350669297
A6214DF56A775A5B7E73BE6A972896E05D423F9E9798622B632D215812E911A93BDB0AD13C5F
628C4AC5704CDDF78D3272FB1225BD4E12713557A403DA937EA52D193726DC8178766F4E739D
2E95F14939270B6507F35D83E1FAD6C821EA1DCB5EB2A3CDBE3870ECE243B7F406CD6B5CB1CA
DDB1B98C32ECDAABE8672DABB042CDECC2869E895EB6FE13DF2ABD25E66ACDF07D402998DC54
815386A3956CF36458234147C90A39E7101E4BF2186153C63CE96F3F34499AE1E1C234A3357C
A2CE163106D794083EB36AAA93E85E1676CD94259E173FB6AC65D133B16BD1314B259315C462
56F294E37C763C5F16AF239738EFCEDC3A6BDF8DD79B34775709BA54296899FBE9A316485274
ED8363DA0329AD0F41C62CDF48D7A25ED45AC95B5E6A4E1BBAC56DA304EDCF14C008E3F0D306
C7F845B87BA80DB258BA7881695209352F41D78D316017371A32FCD84BF788B511AFE571F71E
217C0DCE3E04AB749D4596D0D34087540D4730C013796215CAA073A1B99733CB7121A44E22E4
FC2B1C052798ACAE0F086DBA8EAE791662949A26EB35613CBA94AC58E47F4B7B953EF9913DD2
C53537DA9C1CCE1474632288903C95BF7BAB47F056B62D11401ABC85B20B66D0CE72545566F9
BF44F5CFA099B66CA02A728AFB9877021DDF05C1245849DC6B6816EAB3CCE3E604F604CC7CAD
40B2C919DF5C92B356E0B81F6738A8DD7469A1015A4D6C5C6DECB0C3EAE39B7B3FCFD482D53C
E5C171C73E23AA44AD41C062E8C7857DE8B56561CDCAD550C6453C755E3E081273763F4E6823
3213A4059F6363F55741973356725EAD4DC6398D1D6409CA8D49CC901F6E9958974A7EE5C02F
9C426F11F29B54C316DAA3F1D66E0C9EF73624AA70D23C0F15448CD295589BC2915A6A6D616D
77134382687BE88B7C1B9C63C0E695DE5487A5A5162411B8218B1174F035216716B67F016619
02287AE5B384B916D2C1682E2A0664600CE5E494F13EE8204B267BF8E863072BC11BB5E45061
67EDE7ABA31F58E468D3F60CF5BD5A2A8721018FF213E5C84F672F6F2E651C4708A4F24C0302
DCCE4614233AC6F540EAD1777A1155534EA0B6ACF7DFEBC0C6DC49FC9692951F587CB8C1CF32
93328DF7655AD82A144D193CF8B9A274D27C22DDE2358DDAF79400A7977A1917FA10F445EAA6
260EA56720E322ABEEB790731031A345C323B9E2E220E9E9FD0D121475C6A7F2464252ED44F0
0D02181F1A5814D682F28C692F969DB1D834227CD4B539539FFA46BE32AD1CA3C9B4B337C64D
3E61FA5A6D7DC29345A44D0470E564AD61CECE8B37595D7EB3C0933457BE8F73758D8D6F38B3
E843C8D049103F5193B0E855D5C2DF1092085C80154C50FA825254DC1B8A895E0BF3F681C257
5BBB2B49E64A3C3E77794024051769CA5903CBB11FD3333656C4EB07D1D366D656467DF392BD
B9B9373E38DEB2D83A9EDDCB2699116E15B9D0DA679AAE82655EB917986E768788C6279D5559
BB5B104B829164CCE27896027913105AEDC252CD0BC68032FEB026C41792DF669BDB1D4BD94A
EA620CFEF970E8756B258FA82A9EB86AF25B6DE4E5E48B0BAB5D552326D8C0E6C57783935D7F
0CD66C078722682BDE80AF3645D4A9A7EF9AAB474929C1749186C309347DB0A5020865337542
550397B2020DC666B3339BA495F358AB8D0ADAFCC5A3CF7014AC94B635E2BA1779BD0C44AAC6
0CF3FA4FECAFDC876BBB528CAFAF4F577266ED00509DFDC52AEF8ECE25912C04B8283F6DA8CB
F712D5DF4BED83702A76AB73D0ADC789924A600C1B00761B986BD668B6DB3DE4008316053EC6
33300EE2E3EF9D0CCD3E2E5ED6A829CA814C8D127DC6F618D6165639C5CEADC8FF161F081A01
9DEF0F888EC6CCF12B69502A4AC2E802546E52600C91D51E70BD891C5BA957ED3951D84AA76F
6D2A1A7198965409F1EE699C08694D9852F4A97839956D8060DD6004B0DF827D6DAF19325FFA
CF8773F5A14DB92EEB033282A681B443B54F242016DAC22CA7388FB8D00DEAD2AF7F39FD58B6
F109BCBF96C58E46982148C86CA3BDBF8B61E8164B08F992744C67C636164FD62D68C25016E9
C672EDBD444E058D3CD9154AE39993F1D5F319D58991F9BCB03B34910A12BBB597C3F8712445
61495F5D94B92F3C6B5E1EA0254C7F989E033EB0DE0BEAE9676EFB0D75CA0EC0FD07757BAE8C
AFF29BF2E1C0098E6D0843A2BFA31031B383EBF4D12C07F1E3CAEE0397F7528CE5EB04C59535
8875D2872F19CD457B41AC5DAFCAECF120B2B11C0F3E927366E7A73BB033845EDDABC9C62E37
3117DE6A7E7D6895B6E6972D6C36634D46D55E0070E82F96EC375FFEBCE8A4E0981811328206
EB0F4B66E0A8087D0145C1D10C49710C3FCE4A5239DF90D0AC21A0B104D2505F7B5243DC96D4
912C9DEE3BE9DCBFD9F7C2A9C8886DEE4C41C58E9AD471836D2E48F5EA7B0FB04FF6D2BA7B8E
78AE70C765B11939AAB939EC9B9A025CF27923C7BD0455BB858AC6F74BAAE573B066943598C3
EEAFC7F1BFA1B0E5FDADCC763C0BADDE7DD314D186B413216FC35ACE73311DCF84D0FAEC0DFB
9483EEC8895FB678DD36D56618C3B125F7FF3B20F7BB8DBD86F52EBB08BAD2A73ED6C9404470
6FF7FF263B0DAE915E78CB36345989CCF84063CE6047E93A2ACBAA983182DB3BA114D80FECAA
BD2816EBEFCAF0DC6EB42FB47B3D2318FD557CF96EB5201BB0B265BBB77DA6922FBF9184AFE8
96B88738AB3F9EC78E711E418275B101F8DABE795D094D3B2C5F1C5E01DA37B4E5976CDFB56F
B459C8611AB2CC9081863E48EB4515035709F715F99FD62ABC2E495CC8D4F8A1BECB35D2126F
FB08594FF4AFBB82F793854D96A50FF37C24D198F533C348F657EC4726FFB648522893CC36DF
D25665DF44FF0D6465AB46691FD9445CD3290CF2455618CC3A52D8056F179BE5649A1B17BF25
108F9B5B5A3EEEB22D970D968E25E20C5D4E503ECE7BEBBBE696465191DAC3046B7DCD8C3824
836BC6ACE208DD60982451731E82AA0E85B2C6B0AF9B9B14848146B09C64ABBD9625F7A3BD7B
5EE015C8F5EDB3755B6356C3730118BD9F49BF060984259AE5D7FC6F3BA6F3CA2223E0782444
BCBF911885A0DC7765D705146B91EBBE0CAB032CA8336CE9133136EBE740D0A126F12F43B76F
BD354C09F5A66E3BD1C295A6034187E0BA7F916670B840F146D4681D43E9CE18387D70F44AEE
7AE7BFEBCF588759213263A8A7C4C3FB7C31E890F285F502C5E88963964556CAEAC1F31B8975
A9537E40C010380042359200B4A951A9EFFBAF6FCB281FEDCD940E10CEEE8F3428F1E00EB8B1
626DDC9C6554A8A7EF2E87319F3C532EAFBA30B322CC358C2EDE14A5AFF1FF1F835963929A3F
396361B714F352133A81406515004549A91A192127406BB9F7A61536F16B6E2B51DFDDCF0F31
EA338259A0BA5126D1459DAB06C8EA7D88816B2A750B4E4C6C45109CC8F0944F4A42371F383A
585BE96F72AD5884E8337582329971407AC1E6FA94D7FAF980550004BE9DA86AF226E74B6B87
CE02BC9949E3EDDDCFE0EAAEDF502E649122829A4B5A0A96BAF1AEECB528B092BA289CBE641E
2775BD74434CD3915082C4A36A898D2A03476A639CB3665B8621C9CA4B633E7B5E7FB699C39D
2FA9583AAA000B1B3520661F398E43FF8AC75221BB92A5A19BA43DEF0C89B9AC73F936BABF0C
930CF3F22EAE373A4C86E6356973490E17CE7163AE33583588D7B7D7E9D3CE84D68EF9C0B524
8F14BE69001DBF85B887E902B37813EAED85FD1B8610E2E964455BD3525F1E99C8BEC17AE486
775DCC124B4A3F2ACBF05D6A73146FF4BD922A07022D09CBDE835C4DC2588DB5720F6D73829B
6FE92E592679EFD487EC842BE2A87A503D88D39736BEF70DAB7684F29558B85BC5EC75DB1969
67063D4EA3942D18B6BB4842202E2EC18BFF6A32A85A82F16342F1C8C2AD3E0CB12D4E61C7AC
250F481725256C8CC7B29E35CAABE5A130FE0C917B568453805CE48C7822F8323B7B6BDE5450
065EA4A1A6C2C11ADC940D1DD15FBADAB619B677FA1710EB86CF4D7D7B0C543BD1825CF7A303
10C18C874C8040E10ADDD57DE7C326253C2A9F550BCE08565DE02526E0F014A504529DEC9086
AA674B94C1E0786982849905FDA956A2F85FE487163CC68A363C2D44A3300C0364D66824F31D
D0F11EF7FA7553CC42FD8961BAEECAA0EDBD70D3F34363147328B558F8247BAAD15C994D33FA
696AF72AC2A0C8347179B041645DC46262A64D3983C46A3B460295B6AFD8BB2DE931BDB27A2E
94F23553F1F87C2D47B88755575E09F50499D1CD6387C16C11399A6B4BAC761E80B973700D4D
8E3D599119446C9DE410E33AA6D5925E8C4947533BB2709B9B1D4D0B96E74012B9CB27A8E139
1EF72870058850227748AFBBC55A03A79390B98AAFC2869BFBC9AD0D171AB701BEFE311C559B
3865FC0C1055B3E8E881A69FA630EFC7A43175AF2B55C9DEE9BFF2BEAE961861E45773E9E377
35859983B9603008DE8D569FA9A19016C9D9F101F64C345A4ED17113DC187584C1AC1CB75779
27847793C8F70C544D329A753AAF47AAEB5E6550777080224C57FA44A44CE4B16F7AB6A3FE74
368F6C2D0F8DF4F3CE6B762E43645AB0996894B358861C4927C45FC1CFFFB7A752CF9BA3966F
53F00A3B26A394BF92094D579552F79EF2531E375876E52A88DD8222317318357FFE48D43A58
229A93E7D6113DD47043EFB48C85714AC19DA48408000C866B7675813786229A16E5789F73C1
C16B876A790913DD2CFCF92F9C5C31A33EAAD8F368D6531C06CE189E07E9F1CD61AAAA3F8291
A61311481E5EBF9BA45FEEBFF7BD242FE2F018AAFB62A4188435C46FE68A7AB09AA8C16B2FCA
98920B9A2D7148603CB336FBD6B08EAADDB6EEEAF325D25C50F726379D9DE1618C36D2A1034A
29FA981B94220D711E6BA5DCB5CE7EA16D7EA03CBEEFBA5DC585E5F8BC032FF17FEBB2879E61
C079F9B90D0A0B6EB537480000352A63ED828370467AC526F861C5CFC6E53E9A830775095732
39C1D5A349FD53638689132F831BA29D9963A7497C2BBE933FB653110AABAD3629E31A7CB3D6
D3875B45B7BB8F62D7405A6ECDE413D365ED05E7DE1D2C95D46783A8BE9D1B61F24191A11190
78283800DEB44A0CD447D47581972001497FD5D9972541B6BA2CA719A8177FEEF3A1909720F0
82C42A5DE8A071E16E1BC181E34AD5018131127FBBCDA2A9CE8B9F5EB83CC59C96BF0562E691
6BE9D99779D8D5294A04AA19D8DC839CAA42F48F770F60E918C593242436BD1DCEEBCD354F77
E462FC249037B0FFF2EE093A799010800EA48DA10C23B02DC20F3C3682B32BCE8D7073C13F20
AC232A6A42A4A0B5E995B1971FDF05DBE37AACC0EF62364C466817274496CBC8686650D48005
4A10C8105EE447E2347C5CCA657DC944FECDEC1616CFB16BA4442D08D7F6B8CC69B38FA05211
3213E8BA2990BBE7E3836C167D2C8FB126FB7CFBBBB28D33058C595CC6A16D6FE84BABE05CCB
4BCE0B62193E337E8DA5320F29F752F03A92CD843A99BC7A1E8EB449B0C95DCA19B9ED186181
2C7ED1F2AC7294D227358A5DA798D7DD314A601A3BBED33797C6D571E9CEF4A29FC421D2B7DB
70A7E92EBF91EE50F0ECF2FF63C738A713D1B6D1C542D5C6D95FA4E9FD16F4D219CA943317BA
AB091D2021EBFF720A5A81CDCBF5F3BFA3A633D16F4560CD3CF9BC1DF7EA6504A3E3B9377E98
69E3E149AB6FEA0F80287C4FB26CC5CA6927F5219A8379C58450B7525BF017D72F4CB5611169
C7D001FB816109B334060B0F2913BDEAEA69FF36286C8FEE4BF2CC7C83505FC4B7DCB29AC97B
3682C48525E038E5D1274A069858E5505DC932C5634EFD115E02D0343B75907FE80D7D8D421C
E40CA292140E0C0F3D79161C618981CBCCC0F9C4545942DFA182BDD45DBC71B8EA1D79F1EF51
FA88D64247D4D2D3FB02F4D908FFD1A763D1383F7F54606269C4A0A6C8C82A01F8A40951DD14
1E4833D97142AAA9B0A7E1C28DC578FAAF9926CEFDAFAF084D50573395633EE6097B2C8AE70A
16F3191405ADB7CDA9AB344D0872482F6DB9969CDA14B7E70821B16B0393A0431332B925E11F
44882286EEAD545C0854CD41BE75391E2A537F12C1826BEEFB1E13A9E40995E2C20C3E330C99
3FC40DF42E4C8D9F09DBE4F5F4476BC6ADDD0377FF3CD6A5F1FD26B5C23744555720CD7902F3
4407FC6F57FB83CB095A8703C9D70C96C50FB522AFFDA15AC3ED668A70BE3E1038125F57EDB8
3C4A8E520747370B6131F6446EED8F68177B4D3A06333544969D04BC2EF75B891B943A89E011
E078D01940CAA9E1D4010670DFB80B1847BCF9578A6B6BFAD675B65B31F8B07508AE31E6D3A2
6680B9CF228BF61514496FC2C7A2CF0A635BE96383466226FAF7A8C3570B3C55A009AA091FA9
9F71F8A4E82833428AE5CF0C5A585DA9DAC86A3EFAF1C6C31FC7FBE4395A58B193311F67BBE5
98F88AD884A5381F82498AA3A2F9448F50A604D9DB2C1F88B47AA783A82D6D0D45B2334B4FF4
8C8DC810751FE68DB2F04324562CAA35C19A80FF56911399F5ABEB971B982745EFBD7B10EDCE
63B5E490925781673DEF91F3329107936028E85F1F633791181217E239A2D4DFCA97171812D2
614131D19115EAAC6550184F973D439D723F2C6B80A5678EFD9FE5FB2526505AE8968700B352
599B1BD964EF8391B3380E90E8FEBAD06E4545C0101714BB2784ABD7BD7ED8FFF02A028767A7
81A57E1FF6543E996DA730610FD000263EA263F3C46D9844F4EA67C39701FC39E54B9F7316AF
609B22171C743E7E2FD2AAC70FFAF84692B1D25735E95E45699A5E15A86A7CE7BFB7C51468C0
9D239A5145802559023DE368135B52F4F299A4A3272C3969DE888202BC1E99D1990D2AA396A0
E2230C6D2494E02AD04E8697E61E0B9420CC90BC0FB687AA27F85929FBCCF6484D047C785284
C777BC07F1C7F558FDC170FB0495D1FC65A50A33A06A061D718391E14DEB33FD37E7D27E47B8
F3C9DDE4BFE43866450E86105746D10CDFB11E1714A0B78158517AAD1EAA5847B37208DFF3BF
319D87184B82A18ED20D07B0EC25A1D278BC3840614953C1219ADD7C21998A6BE45126EB61D8
7BFD5D1AEF287FF4B2724025DB64AB552C28F0CDDD89A04BEB667988CFD5ADC8F7B1EE091086
C2B31A30A9BF56B671C81FE10DB4214FE93F3D80BC6B0E90410E123B17FA0D41E5CBD5355C41
BB9579E1EC93177D3F6AE798DF9F70F9DCC6B541D5F4B3C6BD6983CC692C4448F91A730BAE1F
278D700C45A5AC32C6D5BDA96AEA73C95BA417A55AD76FBB2C2A47C9896EFD54CB4F178FDA18
7DFFAF47C89D5541C6EC74BB505C38C34CFE95FAAFB26EB9D1BCFCDA8FC0617DA52939ED4DC5
B7616691A71885858DE6B6CB6F6F742B4A61836D6CCF60775AA0C5EF3BBF7B007F4E2053B4CA
B7F223C96418426367FC5A833FD2B1A388F3352C8B390CE596B9CAA79B9D77CA202041550303
C76625B527B29F0446E1E18B93ABD527D537D927B9EB1F403C306B9CC3003CE36ECA033B7655
EAC10B1C2AC5FE0774574D3BB4718039E498DFB06E922E3CA571282388BADE3E55CBD711C20A
93FE24BFB1EBE38F0CF7E1627CF8FD3CD0BE08D8CB4AD52BDC53587BBDB53362D31E8B0CEC96
C7F0BADA54A0BEE96C1C40B1D8506913E7EDC80983683481E8A3E7B049FD9549F422945CCD41
B63953C06702215DD8A1E466FF3E2E9B97F7A96DF89D3078D5AD49AF9480FC84BAFD02D06B61
DD88963E9AC75B42DC9B255A1C20594CE1265AD4DF4C485B3F73CC59A4CA767B5F026ACB27A0
C71BB2E92E1761744882DC892D4E53297921A27510F2387391BBC37710EB2589DD6CA1784043
F4E5DC2F08A3E1B9DFF5747F69B3A6BC2E142257F3DE54EF93C57001539DD6779FB97029E17B
9ED9672CCDD7B0286A3339F430B78BD1DE5730F6C46FAA5B7B4B6213C3BC8671839BA50DA8AD
0E47890EC3BA78D1BC128CFDBFD11D59D3292B277E65FF1BFB343F84BECF9130107326E4043E
514A01E05BE59423C44CD4366268650173CF594316BD18F0081F10F72A665F6E0020B773A904
93B5DDACA8ADBFB488D5854D1591170347CB16EB4A426DBB7CAC8576F074017D3D34D98C5D82
E84D52071C910929E417412DC64D0F5CE06535FC94C62B61337C5B27F4CA50B4F516775ED8CC
ADA4C3203917AF8014D0E01F9F5C568FA7668C26EA9E085FBC736B2E7C607DB5C0E983107283
FCD701D025D4EB2E1EFEF45B9D2CF08827D53568598104724FD6F025C50C97D182218E939B92
FBC942FE6460AB63CE07F43189DD38745A93A9179DBA460173BB3715B145B74680A9AAF104AB
04B6B8C8F5803BC03458FBC3AC036BF4F48894248048F6A81DBD403F12C31EA4736D0DBCA37D
0F45A264AF161ACCAA64E645D20FD10856B063F83B8D079863F4984840B937EFACB021D47BC9
4B1CFB9DC183247D25397CE41FB861E00C95FC77407D98932D08C42F2393C8B37EF6357FEFD4
D196C4BD6FBC414E18C4AAAF1E54FEB3D81F6D5644EB5759EF5440207410464EFABF54645132
E798DC10B068258A3BE66FDEBF1C1D428D3381AEA736336FEC6E86B56F5A6143F74E8BDB62E0
F9DC7B80323B3EABBEC05D1BBD6676DE2E2543CD37D6055E88074C4BEBBE53CE30241B46F82F
635A1833F41888AF3771414BB943353FF865DA76E25BE7EC2BCEA61A15F180552F98AF07333F
C03749598AE8F3D37916C33DEB106A2C15F21989350F1DC372C831FDD25D104E82F05B7A1022
56D9F8008E23942E3F9AABF89D723BB624D0F60CF559CEF6379E552911BA014F422801B50B15
AB9FDF4B3311A2D79DF0A820E262EE4140BEF47ED964B1DC7FD55B81E00368FFFBC63814E3C1
46CF77833CCE07D69C7F1DC7189171484CE5051817AE7BC7B980EAE9A2B0502260B19176564E
2D1CEB79CEE1666EE85F29331554D11037C8A79A7D53948A300EB7344A824338CFE73480989A
0318FF63A0428C8134A2C754E1F5394EC300BC62989D2C9FD52E76124EBBAA3576A735EA45A8
7D8442782A617E765EC3D3B48076A97A3127EFFD10E46ACCD9947728A362FB83F8718B98331F
9B84DF8C270F7EFDF2758C8660C1C0F7C570D86FE15BDEC1D91CF8C1A417C9386E09C548BB40
1EC4DB99EF40CA62CFD7A0E09FE111C4C72674254B5AE6E778DEA51AC7E298ED70727D0B85C0
FE154538A90C7ECB7E1BEBCAE32F2DB9016A00A6E3BF5A103EFDB3FE8B0212049F9D79F95ED6
45AD3D53658F1E0AD84237D3FEF48579CD86A76BAE26EEDC5DFDC3ED94C434903A6AA1706DC1
8B91E782B0F31DBD64358D6AE7EDB7E839DC973CA173C564C92FF13E56DC206415198DEA13DC
F9CB8A67AF542EFAC923369061A76351DA95DA7E2E95FE0E245AD0671DBDA13EFCA30A654C37
320B4D2E7CC9699C634D129622DF340923B7ECA09E7B5961BB33ECB62C85591365A70B93CEAE
D2C7CC0339799783C1047DF648349D9C800BAE1443589F423EA385798B3C7BCC72CEBCFD2BF1
731A488365E50280ED9603B4C51931F91920DF1A96BF62C48282E4046BAECED383604F06E310
D9CEA008AD5765D374F854FB5FC4BA116D732439B37D8E391DB3F4CFB4980FD6747D3E86AA42
5A5B4EDE03674F404026A74B61940470546D80F7AEFA98482CAC4D8880AAA329129AAE1831C2
6F91989901F672B414EA6DC7D8468D112521F57CA320DC8CD56C9023C496CFEF9588778D66B3
79C1AE217E9B4706BE2C7BC85CE7E98C7C58189F994450AC8ED2D2B153AEC4ECEF5E8C68866D
27E2E77B7760C8911753CBCE4994EB7CE82E6B73E3E3567E2CA44FE75A109A4276A6E7ABB0DB
D00B48318BBBDCA6A7D7DEA749995868ABA5A1FE50BA244CD047FAB144D67378E0B21A5F3923
1E7CC4AB9CF010432AC20EE6159934FA8142A2166266D0D192A502790AE0AF11ECF3C94C17EC
D26182D6A2A45BF785E3ABC677487BC20D52EAA378AC3088706D9B19D7A52EFB495E34E605C0
0597FAA503DABFF584127C2A479075F89497CD7A2D54D02329B81D01C900D18F80BA46D4F7E8
A464CBE141AD02A64951A2927C8FE8F155CD6FA4FF3A44412A59DB72B74499D0B52486F55672
F075CA1944073CFF76DF0EA2BF64F534BD3EA581E956E102BCA1029EA246B1F08731EC931F1C
0737CB931279BD51E31F83094D47AC55D969F50DEF8C9A2BDB3E340710C2C1337986BEB1E032
FB9BEBF692A5A42DEC2224BEFC772B8641E0DE28E4FD6271DECDB95156908B4A53E92F732888
CCCA9650A5496641BA0673F9A10C2E8C544E76D33E84D1D2CDCAA23FD55BCC7E2969EC01C009
F0F7F834796BCCD863B7F1528C13FF1C499E6DD8BB4BA671DEC515FC9EC081BDFD97A9631189
3AF9E102A1AE63A96BC22A2E8A2ACDCF082BCBA6482285E0BB744C99A227A18179E661F63BE2
6E242B3E0B0FD2FFA982A1C4E7F051A66204C13A59E66833CE590439C9F26356C74765BC0CF2
09C1D89E2893F017BAE39FF7F01D79ED9A99A43A3F6259ABC9822BB01BA93EAF77D03CBDC507
5860ED4BCEA4378285716DE824C71CBF033015522AB3E741AEC821747BD635BADA9DC243E58C
F4D8010383774F9F3A8D75BD5B9B8ADB3BA2AE89772743FBB4713C46C30168BDAECBEFF476E0
C2E6BA174F9301DF9B295BB213D3A733E4B5D82D24FE579DD73D87D647AA7CC0BB6AD46E4FF0
1D1BD6B8A8EAA59855E73A6E6A0A9A800842F7FD86748489E1B52A597F23220E6B1DA30A92DF
4EEEED744F56B5ED811292D9C8311863CCCCD7672CCF160851630B01F805C77893DDD70307D3
CADF4E259D25DC375C0F89CB28B082F9ED1B8D61E52F01B7F66E401D318DB7A93943C78E4788
6AF256611C91C11E628F9AA71F7553370A97D2766BAAD7F9E74A1457FBA25B6A2ED0750694DA
50F77E4B3DFBF38AF5983499046732BCE1CB3F435626DE6A7B8E46B504A80D1EF0EBD4ED0780
B0EBFD8C792CEA07D2F1B7E2A63A104088B87DA1E62029C2741C5DE63CFD9D12B4C5212ED702
2B5ECCB7DF7FAF85E1D5C4B82EC55795DE8FA1E4654B594B83069E0692FC4954E6D0D3FE94CB
574FAC65CE4ED497386B16304392EA2DEFD78C6A96BB53BBAC50EF7AC097AC45A902B39CC3BE
09D98F612897AD7D1325AF2AE4CC80716BA062243AC48DD0D90D86DE3C88B16B4281D00908BE
72525F69B7B286FE28253C4BE746976CEC1DE175B3AAE41F3E56AF915A047DD0CDC064623E45
3DB8123D652CEEE41B60EE7DB30D96ED641CCBDD70570C5482A169F1B9EAC1E410B693301C0D
D765AFCE2AF327825CAC271AEB79A9FF4691830517E26D4682DC30B60AB2555B39471CCB6F38
AE631E7E1EF89FCD1847A24206592FF50BFC47C434142997A4B682DA77300BD19D65AF7D2B83
DBDA5B95903F220D1A2D90A19819607C481FECB5921DE9099A60150A1CEB1A7723CE8B182897
14C1C181343EC220B929336BB2F35056706DC481164F581BFB8B9492B4A93A76F4227DE34613
379B40D8682D58F56419B7B4FCEBB75E58D4D17BC1BDCC114B9E9AA0CE37136B2D92312A4064
3559A8C8A2DE53AF09CF1BF9F978AEA6CA80547EDC97A08A8677BDB27A599DC6027BCB206027
4F5034AF37C15D737307BED560998DF21BE030B0E57C4D03E2CB2E3DE42DAA26BA760EA72798
15E6175A6E98E496618CB4BCC6C071DC2CD94774B5DBC0F912A7AA808E8F4E92585D0A1BEBF2
259682257EC17A792283DFAAFE2E93BD4BDD75C1BC2190454B2DA333A335CDD0DCEC6561B83C
F0CCC9AC09E3B0B1E2E108F14B500358F8FBA4A4C3FC05DEEFFDD4F8BF2D0CADD592F37933AE
EFB253C717EDE98B3C870464382F1D97043A039E62024CEB9E25A50834E1134B4C553442B5D4
E763B2F833D494FF6F4F5FEDD022066AC62C41D32BAC09CC0FAA9F00CEA1AD21FFD7B62580D6
E4973EF82A0A88A94BA3481CFC5541B1AC68E633E53823ABE38DF4BC11DA9E41B6BFA4671082
CD0FA20DD5AEA26151A947F7345C69BDAD50C344EBD7D52C13F0ABB42669724BD7DCACE801A3
727F02B2A9C7452C890425F74EC7A473B2F6CDDB89FC02063349096616F0975B3F1360FFA516
2B577D556C21C1465B997795313DB5AD01A059D074D5186E5A039181AEB9281717D9FC71F2AE
7C423303317F66D2C145A432D40EA79B0CB5EB426A4DBC2548439630BD49C09C3AC56AA8C857
658BBE3C345CDBE60786DC1BAAEEA1E8134C053BFF0239C3B22D9F9811F0F986D34B10EBAD06
03B099E61A27F5DA9D88B88C435ED87C4906DE206849F5B4427EE0439CE2C99B3E52EB634AB5
287ABB15154D08932C6C360D85030A92BF8DCECAD523C123C7D992F742823AF495A83C4FB384
07E87946BEDFC719CC3998D3487589D773AC6DA3078B06CD5ECF77FFB84A96CD2CCA241B84A0
D35B0B340DFF221B9190C1AA2D6ADA767A0CFE147E3428CAD1C93DA6F3A01F821C6A410CF69F
D03A2E46F17A31DF33AF3FE25492C6EE8DFE79FFB29561F92F50C69B6FB2EE2841FF6E3723E1
8F86FA65CEB3BC0D61E2F19E9962320AA05E82BA9EC7FA6DDA9EDB2EADEE478C2DA6951A226E
BEF7B2FDFDEA854E541A449DB75700F057179623C32027CA181B1C8DD6D83EBB8BDA521D637B
32D7BB0900135F61D72BFC97AAD5CD3A2AFF218547CB96386023D3FB9A0B86D9AB93ACDAE4F4
EB855735357B77A24EC5ED31811FEAAA2F93D6E4CE512C9FE4830743BD3082F52BA17E2A4CCE
B5BFD2C31099D852BC1D1D1D4CE92C95B1868A8FD559E2950A55A8DD30ADB1F0AA7B40C90064
2E56C958764B81334AD25386C2B94732865805B994B5E9949B7B59FA4E9E27CDE175106E944D
0466FDB085A73FC4D329EFC235F368515BF6A5E9460C9E997CCDE7BB4691AA903911E9A414FC
8FEA294185F8D8D80A2A1359F9707121661201A72E571810F9CDCF792C05AB01AE9C0916BE20
70C264B0BAF34F63D78DF7CEFD0ABEFCA77639BF25C32FBC143A000E2CB1FBA326DECA8B3267
1AF989DF004E1F355B4FAF7323DA6CDEDD691C73F44CD381644C8D6987161B3A5ED5A36CB698
F94970A472A32DA1EBC8074DE29A2D9967F7F3E656DB600EB06DAA0778478AB53B653D19CBC0
96E39945331E0D325D2667226E85F7D5E3442E70AB51C294B8EB95EDB631CCCF964FB8FDB8F2
83D6DC2150B8C1C31F7A6B2990CFF2DAD2CCE88D8982C4F01DA6F41B271F4D434ECEA79D6A7C
3408D986DAD00D2173D387277E35095513A67DFF237C7D92B745F0ECF708B72515CB9B695E73
B321247A08834D084600B3EB7707B9F42CFF1205814C1D788E3BA40D49B97F15DF97173F1791
8D3E4DA33485081791990389E2EE7350EC14E7D2311D7EAA03718035BABF963053EC12E427A0
E503F8D0AAEF29AFAB22A7BA4410CD40626C21D29EEE1B4C5B632D68859D314670891F87F097
E29380A0A248DD3C0D940F119BAB3A42A4D5D62990A03D2DEE622E14DE8ED19396584DB30C49
E896782CF4E451269BFCC00F5525B1AD733C068798F41579CA6A6CCD3AEBE7DE7BBC0739B45C
D693227933D8F36FFDEBB558894780FDD8C2F58DEC0AD78ED417B05E089BF1C3C9FC389787A1
F510B7C8F103B2FF8FCFA06AAA41CB2268939A1649976475B1B3C90D2A69D30EF7D1B800C8FE
250FB605F04FBA5777760CDFF81066D7A7703574B0407EB78953DC8A21EA0864324E65C75060
FC889F0AA8D26A6342364972E530CB822AB91393E298075263A6F2F31C2CCED33C217AA41B15
E0ACAB0F88706B40B1BC490D9304F588C2DF3331B47AF241D0136216A1FD8869EE2CA67AA0B9
F3E0920F815ED5F91BFB5B3701402CCDF990D0111254CD4000EDC94F1960D511583F82F28F71
C30EB44E1366F83F98B8CE38BC0A620B07B49A0776D358F6E3D3EF6F145DFF0158FD83958340
1753FFF11CC7752CA1813CE28D9266AA71BC27A6CDB2C3EA9BF486E4CE62A112C65F44649D7B
D68D8B1D182B1B7D25CBEE30BB6C56BF8FE290FB44946C5C7C5561D6C24E97137E915449CA81
ADE634FF781CB95AC4C43EE88C6C8BB0A5FDFF6D0BBBFCD5801885B1BB4F42761B6F2C117BB9
0058466BEBC36BA78A4D229352347715965ADE47FDC175BDACF31DE2D37EA1106E0EF279DA2D
566E42F98FE6E5FDE8E3A292DA9B327541B7CFD5D60538874042DA03B15CE640EE2D940DDFFF
12EF13580EFD2EFCAC2E779B9EAC3964BA7E6CA66E05CF3673C49A18E35DF6C69F9C4CE16EAD
461BC5B09E9FC35D0D66DD4FB6D33066C8B15D6704A9890435742271EA33FB6AC8E5261C2D3D
B0D884D4ED885D5D4635A4E4898BE0EEFFEBFC0BA8A90BD92BEE924078802FF82FF9AFEE85F3
A4676BE2300906B95000516056165942CCDA64E891325DACD9B737505039D2520897CC43D9D4
04C299A9EE3884704408417D64512D9A6A2AFDABACF56BA334C51A72FC247DC3A079E3133517
055B607ADC13703FEE0DCA0F3F8DDD598656337980BF58F3AE667B81458D7D539BBEA00EE1F0
FBE756A22CF51817E7B08A7E28D2ACD83B912365AA69EC031C135A5160FCC55A5F9EF4D023C9
2C2F45988899B1ABBC1C8E957C2A416B1BE6EB1BEDC273B3CC91B1A220BC40B96463DEF958BB
E5B6E685B472E81A125263816FE2E4165960B7851EA8F65CF61AAAF130C104AB6C86EF0493D8
06386E889630FBF6AD9614041D92D35B5F788B63EE458EE2C6E3C06C60CD1F884AD3B1455043
757E32E0A35D910C2FA33AC3ABEFEAB3616C3023179FD264C8D3155DC6C73901A109ABC353D6
64FC19A09BA716398118C94B5CBDC6C23364CBFEEC6410AD2712EDAA9932769F4C369877A832
359D078559D1BE39204AD8B6324806AE945E18FE20F6A757A0470A2667BB7284A9FBF1B343E7
26DF689BF6D69574C6E63572E9532FB1E38BD046936D340C55EB8E14FE2E80B3A06D4B911C6B
3E8333C36B676AE8986469295CDE55929A1D1D767476CD47557ED438BEC525DE2D4B3F55AE52
A6FF18D00D5A1E1ABCA167A7D8B6DD2C6BF23FB4CA20701C9869CB5E930156DA33D3B2FCB704
04C0DF725D664DEB78814E17503502639A8935DFE80B8809086195A7CC4C354BFCDDF7798EDA
B74522BF447F2D4752532FE58DA8B5AA1C4484B50CE37678F001A6AA77EDBC7F0E2AB2B65E9A
463592DDDBF932A5141E9CA9F108ABD76DE7C6F73269FD00EB8211F3CE32B92B788C85933381
308F912476AB352462CE1E1D98FB6EEA4F690E0E036F3DECA9CF14351E24A41320B229DF0600
C764B7E09984E96501C18EEB9D8B9B6636BF3B6E7068581BCDD1DEF63429AFB5AED8EDD44646
A6DFC56B4F82F49D5819CDEF9A6F08C06C559F07D3F09C2B5956ACC01544800A24D0C22B00CB
B1C06B119521B967CB622981313C666AFAB4C96817C230807850620FE00BF98BE25DEFB29670
CBC6144090BE418D8263C478D879BB5EF72EEDE7207CC7B2DEA21957E9C476608ABCBDEED50E
7D58160952EBD4E840D604D28D68292C556DD79340BAE75C318A9F0B2F64F3616C680235BD7D
4470B7E440BC8B37F351780AAC3D311BA51D56CB5267FA2C0C45354D73FD084635552BF78898
E2BE90F5D7DAAF9353F58920A0FE0DE56EEDFDEA94349D207F4A5FFF48C14C6BFE03EB9B051D
28BC950574FDE10E2E5E7CC7B4D9282E005A2174C09C62ADDA2E15F87360D8C02030DE0B16AF
093FEED4C409B908426705DDAE110AA3ED8B1093702D8A50C08C2358B932E9B98B0B6E7CBD13
7B6B2AA51CA68DF71980EF797FD483F8DEA3E44357451E2B834DD0DF380AD9EBE1A974F1DAFD
E3620FFFED6385B1132DF572CB35C705614556BD07129C02909C2BCC8C5AA450E94EEF375EFD
8F77C0A8750C45F45379AF43A12F288EDE4A09358C67ECCB2733446F2A7CD0ADBC989B21D5AF
B11FCCB57BB350A39C13B3970E9017EC4F1E0C2AB7FE6310A4345D1934FCA54B386305F015EC
87CC15910C323450E1CB60B5A8E0DAB68412DAFC511811D7FB2CA08D9338A85BFC050E171DDA
308D4E58C9695CC8CD6AE5B14E1E5C47FC30E2F38D11C6F4964FD16934A8FFEA57268E489A33
4D073FAC76196DB7B3C8C6D4EB1B21171BA9D711433DFEEF3B7BC0A9A50751154D77EF7F6C6B
E0E35FD0D983A5C03BBB35B7AFDF952A9A883500A80BDA5F65CD7AAA71E5ABEF7260A089BB73
0A5DBDDE0A86C1E1A8ACAF76F998EB1755A0EDFE1207C5692C992741E653480788ACCB3D8FEA
8FFAFB73650AC8A8C349664E92A2A8DE84125C75D6155BB6165AEE20A0A8AC09EDE3A1FB800F
6FDF0B4B4214FA222A5CC6C41F7F7763891F5D578B6D989EE6FA56D8E0F77FB09ACF241A88F5
A24D4C08F569C4A305162247216455C4BF6E529128081B10F5CB09F748B8E264ED4ADC3A950C
5FFAC368799C4C031CA888D31CE9386986222DC3688F1C2282DD221F7463EC3CFDDE84651277
4CC9EE1B1A6A2091355B09A33D4CA85382378E5BABC5EB20B1883BBB71A6987AA178AA4DC237
8A344B5C6C3E214314C9FF3BDAD4563FBE133FD2FAADC70B5E36EC6DE0F2D757D49B51C623D4
2F148F31D730A0CF5953840E388B8C6F750E3DAE0677A00F78CD81EC1A76DCF0833DAB08F3F0
17B60777617649F85149C20FD9B13DAE3EFE3E8F1C7B801C5EC0A4E2ECE7CC009453C8067465
7D535BF0DBD60E31A2E9361671EBBD8591034FC5D77951CA9ABD342D1B3EF381CCD243F083B3
CA5CD79053A4B1EFE8A668B73E9295CB78A9CA0B6E90F22FDF826ED2561F5B4BD0E6D1ACB2FC
CDDBDE5DB08E82D9113EACB6260CFBE7AF67407EB89E4F29B5669F0172C6E4B1CFB81FD7D28F
F5167111B16EE4A349D5AB9408BE98A51AA4D17412F0D23F7678238BEE914506AE72B470FB58
1A898969EB6BB0137F9B38873CB5ECB0501E49DD3704719743A5BA4EC9BF5C7D397355788842
8D30D2FD228127ED32B484096EDB0C8ADFCF6FFE8CD030F3D5410E622FE54D615272A7BF503A
C89D0EF3ACE83754978673F9DB3E005807E470EA5B553649F61148D42E9E6FD19E4145980C7E
CFF2BBD8EF84B435E6562A920E88698F7D1105AF11926CD6180D6179EEB68823D99392DC95A9
48E48F3533FF1C4B2026B5EA505DB22A265D56441AB455024F4263C9AD36C3E25CE067A19373
03F9F216186AC443D0909A4AE76915584BBEF1F884C321FB823B724C58757E619FFAF20117E5
D826AFB62D2FB7A1E115429191C80AEDECF84CC71AC9E7ECEED3AAA33838861D5699440962F3
8DB466528BCD883AD8385E5B8B9AE1FC891152FFEDE5C2B139B1445E0DA532A4C9D19662C7B9
AF3A158ED868F5B11D284D19C850AD79BFDCFC4B44BA68537B205420140E803A16EB78111FDB
F1D89CD1EFD2663E3E30624584A5E70D413F73CC1F9392610D0C4A9A0A3E4E32906A058D8BBA
062C94FCF4E1E402024EFB1B7FF8379500D16FDD85B556002DE62F78C827DE10FC2550BF000D
FE81B29747882B8CAB4CD04ACBD92F009AE3F79956996CDD6CF5006E200CAF32E014FA4B4E67
EC87F6B76741006FA43E17F11E0ABA57592F481BFB8655BC34992E8BC3D57AD02B4744E1CDBF
A0A76C543BF214CB6C637EAF4A958B337665BAF1B286B40FAFD6D833D45B4FEDDF163BEA2716
D90DDB483F8978B5D92D8F78D13E9C24B1044543B289EFE180F0DC7FFFB90CB99F928458D36D
FCAA18145B130D7B6B57BE3F81244F6064B61F630AF5E876C8847AC278DC25AA942B9B90B259
16A2CE48A2F2546056F7D3C9E0F637B52EAC424C3C7B838B279E9CD310A520BE41AB8C7BDE64
AF685340F44D0D5E4BF793DA6D7FA368E9CCEC9C933251E56BBECD77B0A3A4566DC074E2BD55
EC1ADEAD11E4EC91937C8924B7FA593B24EF32DB66FE8B27D795C12DB95404B2C66945A9C312
4CACB24311FCA2567B10CEEC21E226678925A85067442DF6E02E21E10D6AC641DA354C318AB4
F244C1C2DEE6AF49732D3F390FE6BA7C84E415B35E390EE2037026C01E2FA69D1348871B867A
37AC2BCBDF84EBED1024EE8FED087491C8978051C47FC1AB12A4DEACFA17797DED28D929E212
172D3D8EFC3B04F5D074CA57271E604EF5D0B9893A6DADF516FD75CB84F1237EC510567264B2
F20AC77C21E0A623CA2E05F50BDC856D7352BB03DFDE6A0DB16E1AFE6D3B6CEE4E695D985B7F
BA36D64365C231FFCBB8BE40948810E8147D591BCF096BBF5D2B545C9945612F60869ABCAFB9
2FDE6616B5F863E55568C7DEC6B413EDC7473BB35C6907607AB5FBC91AD25F4C38707F57D229
02F2519F9A76338A0C3630D101E49F14089AEFB0E8D6C735493560900542402938B467E8437A
1089D9460027CA5851A788767167589784E55718D98528883657B4FA709F545100D0CB2EA421
3A44A337AFD552B19C10E3F6DBD866444735570DB480F037EF4D18EDCEFD8F6B14CDBA58E3FB
F75B469364D0E69C92B8BA3895207D8217C72FB26238E3C231451712BABCF6E08C08C637D319
867554B4426341E315217FB93C65BAC24552F95E6890B9DBE1BF7530D720E48E1DF460EED718
B0FADD1960EEC4F2F72742A1B8FA8846C10F1201B22C0D79B8C77350226476D4CED87E7B6764
9C9E661066879AB9DEA79EED6BB0FE1300A73FB3578C0628255273AE4CD379231E9CAEF0F8B7
2BF778BF14731C68EE50C2A2F31E848447190C3E42B5889F1623E196BFFC1D8DD1323067E075
FE70B4C762CE5FD8AFF0E4013F47C2E2DDFD06AD78F163DA5F4065A272D91F296E2665B219D6
E88C094523116AC9440EC2F9B25ADE7C5852659DDB699FD030656733C6D232A49E75D776A235
C1A56EE2F8901707A40F5B36AC3C98FE021BD1F28DFA10327CDEFA5F06B471E8967EAC5172DB
EFF6EF9EBFE7D129E8F99830E4A12C100D6C5BEF79114757CE26D8F0D67B95D9865C7A5DC91C
7D542A2A908B2227EF0B78C7A2BD562A8D73F9C20728917082A2C8DCB321DE1C8F89588908CF
E1A5833BF444F8944088E8742635774796D8D4A0040BCD9C64DDAB4DB438402813B59EDFA79D
FE26AFDC6A87093BAEABAE0C10305F70CEA65803702798DF945F6F45ED221FC9C2537151D086
E2DF720B8C689C4DF331EDC32ABF9D322CAD08E3C2C06921F3A2C9F7A13A4F51B184CB77A4E7
AEF35613740B2BFF9401D1488FC671828FEF4EE8AC4FDD247D6B778E5DF06179B5BBB462F2A2
E2976CB8794041897A65BC5A9E1C561DCC34C98DB07947A416C302B8F20A8614572639459E1E
A1E510A8F8432B78BC5D1E294D8F57DFC956EF227584D236D0F070A2AEA00D94E48110DECD62
9DB3727E5015BB0C99A794106D1145FD9FA8F407BF279F7B1762421B1F3A1437018EFC970412
1176E2185065901DF20159EECE5B808B749E7847B6AE9EA268F561B90F8F47ABDB6528A21A71
4B749377A335076108E9506DECC618E42DFA4EE0ABE77D1F771CDDE50143913F0407023E19FA
0CC7464E53218DA799FFE7A232241F3DEBFC6F68BCDC45A73E264B675E3AF587042E1E35B346
DE4C76875C656AAFE366C9097EDD12DF958335CEDF7E25A72755A88878FB21BDE7A863797C2F
0ADF73D3DCD928971E1543C594CB1A3A5C364840F0B5780B764655FCF831285671B076F7EEE0
F1C6245E47917124A832AC008EF608250C5220AF5E833B6AAE1038E9F7DC3C793C7C1ACECA66
B3C6B0377A4ACF9E5AA98FD729AE8EE375E831F507CEE9975B130402B78D84A9D685625AD309
D078BC2B645C48EC8503B02569BCCF978689A6AD2E2E06C1978F10BDB20D2F828237DF91CDCE
385991A328C94E0B556F4CB8987DE3A2698C78EB2F2FEF4E047292FE9832DFC6252EF732568E
87ACA6B40F113E45852B213BF6E3D1E822B61A34344B65B9C68246F682588EAA0DCE7C1D1E6A
3D3491C34F7DF5B0A55DA9A33F4D59B5EE49BEAE9267A4542C4BCF7D650E0B533DB67074F7A8
89568DC8D55DA631CFE65D1C305C2C49574E2358BBAB65E298B46EECAC4CAF9C79C918AE1862
6CB6EA3EA5ABAFD51C88FAF8309E2CC5EA3BF72FA7931475882DA87A9249CB713BD25DDD0F66
C98E58DC0EECE6BFC1D537F887887E3BF5F52AAA42254CEB85481732F4F22AD0C326321139E3
5D2066B859FAF9179D497DA1BCCC88614D1482CBF349474DD8487CFA8AE04A47CC440F9C08B7
916727FB9A48325D84DE181ACD84DB1F8450C72792F4D2472826883094A0BD330E79D8E79AA7
F0FB363D6F6432CF6B191877315F13B0BD9C5E0DAC052685F04B7314F1578E14042E777EF6C7
E49B4B1C4510D8A1E97CA72C77A81B757AD555437123F371534851FB922FB8AE6EB861D4CD4F
14A07CD933D97C711E58704ED2CC1313F4A899B401D7354709FCB8C5204A5144E100FD49513B
C03EB616B83FCB488905BCFC751EFE672CE1911CD55C48DC34E5922C1E300E2BE75C97AAFB6D
2C7D8B2A27DFCBB59A512E6498AF827FDCB3A7A3B5722FFD35467D2F4E23A1BC2AF72EFC4ED8
D0E86E983E5E822F5D7479203E7032BD1AE7A3A7930850325A42B803552A3B00753EB9031C57
185C5EE5B8A2C448555A91CB4522B8688D2A42C15EB2E1931FD963B2E10D09CBEF03E4EBF90F
F61976BE720E07614B853195DEE2EDEDF3F30C750DEAEEEBDAF86CDC35CF6BC8F05D7E9F35EE
F1E212B9C6ED696BB4673CD837A8FE736C883F042B0DD9F14BECA6A1128B204C2B57CD58E90F
046D8CE6EA694E1B71BA8BAF7CF6C3346CF0DD5642676B4FF8B45CACDB4975D45EDEADE19A7D
1970AD567E03CD0FA17222F638B873F60C0C085B714C18C6EC4AC1213946824452FCA1D2E85F
EBB6C071BC80CD3728CBD8B38A85376914273C134B8B8327FD591C5960A0CCF823512E936452
DF7302D19275FD19EE696EAC93D10B3BCFEC333E1FDB77439EEE7F7BA673BE0EDFA26C52B258
4F6A61BD87FC89F3CF7B662FA8760E30A800AA7D85E94E57749DC6ED26927AE54E1F84EDE593
601063711A345AFC9AD2DAEFB924AD66C9CF7EF4D7613CFFB79DE86FC6B5E378A0EEA2C69DF8
BD80D3B34F5E126DAFBC5030BF408FD0963E0949A537002F59DBC2180085F46BCF7FCA9356DD
630328B7EEF27B7577CE3C1682813C4DF17F86A68CA27E8309ECC6E6D580DF9D607370400871
4381148DA19ACB91CE6FD2AFA781A092B881B1E75C4525E668AC8450949EB5B4E49FF3880657
4657D45062A294972C441F8C354413102002790C9D27FCCCD3F98503D6CAC0F9A41C4966A389
9636A40DC223F07568EC42822A05AFD80E10795B86B05529FACA9C05F956766457DFAF489920
84889D76195CF5E72E3F689A85FADEDE52D52FDE83850DED200B05377FF550E9A26EE3E976D2
75C25B536BF429EFBBE8084C8908CED27091434606E6F8F76B7407BEBADB2BFEB03BBAC91987
5C308EA1C32BD56C30A1F61BBD705A87D63F4709D39100257C05A0FE66CDFDD0234CFCB67FD9
99F88F87C13DABFE1E7E91DB67B83A4A7F5033BCCA4D9E3AD4979B1091BA749E595729AEAD79
CCBE02ADEF217C049C29E05508A09CC4EEFCC004610ACD3F45849C63169768253242095ADDAD
40EC80726101B6D25A4E52E746A9F956906C32F2CB316777BFDF3A470DF987B5228620332983
F68625E7E32A9CA809F61E3C25983FE95987A2B032CBA145D2A9A31236D26E4BD86D71EA16A0
FD85B393F7E3E1FF5B6E418A25B54766AEE0D8272BB2D3C85401E788CB75BD8D676ACB121198
AFC3179DBCDC8281C914295FC4DEE61D150BD8623011B495AB2350E0047DCBDF9A9DB40A87C1
FE9464FF6E95562572C61346B1A00F37C3F0333C81753CF4C5911E5E370C70EDBBB4626B53F9
716A3B83D201957059546ED22831F5BA5DDF5EDA421B3167E5C58E4A5AB8437540334A3B3285
C1A94A5E2C87FCE09D00EF5DB6EE78400F1F9C4F4CDAF7BB85E56677C02DD2B46281C64522AE
B1BB1FC83907B4FEDD6678EC11EE46DACFA31B048910CC6C9463BBCEBF80AE98304FF2EE9D5C
05418C667CE54354D66D0C61AD5C8825941523CE6800C2FD3CC05A9BAB764F79369599D05508
5E008D36906DA59A1FE6D137605DD7707AD144285BCF31A6047978146B61A4DFDD01ED38E188
8896F8B02F0BD89A57402A92107E626383323A5FB2E943316575BBFEB707007CECB0EDF4AFC5
2419FA8AC4F6076E1DEA9CCE97C3F1E60B2212C239DEB4E71711CE691AD89C42074AD4C9B991
7B40119DAC1F9FBD5CB3E241E5AAA2CBBA248028A4AB8389FECF0ECBBBD9D0AB8450535F2F7C
85C02DB8C287F24EC8EEF67BAA4A0EB50A8BBBAF0841F4A24558044A0E41B7FB390B6512AEF6
D77952225F7BC00E6A6B3E5314FAC779A9EB11B38D36FACB40EC14E0D875640C90D9E856A5A8
8A273886288F14D44D0D9A8D4144827D587EE2CEFED089D6979793051660C322890D382117F3
8E35E643808FD66E48B521A6EACC926B748C7070B6F3CBADF2A3DFE4E2706DBCA9439FFAEBF1
522E180BC2876CF7F736698FA955FE1F036D145E3216487FB904045D5533E1B2C3BE21E1A64E
96BB132581BF0180B8E370FFA32192305D1075352F404F4E8E338EF2926E71118383A9B328F8
E55A5A938C737B7B771D6EF4F4D62D96D5BD1C64190FC6932AC6A91C92F267C502D3C1539B48
C6E0C511E83B687C80A8D290702C26ED02A355EC420667A8F1AB2E201B814B51DA7700C5FCBB
F06C1DE4B4FEEA2562D1CBAF47C4015B72AA22A9B6490E775D60F7B5FE4E7362C765A398B0C3
9B047CFC5ADA1D8ABD3EFD2894221D1676F04E24FD10F66A7A185403CAAE0A233896A2AE721C
0C74798EA526DB2A13A419F60883D4524D068379BFA6EFFA715D8907E4729A99ACF06D7E2348
EC9277C295DCBF30879C2A7E7AED3BF984BD8A3B73CD518F8A4F612A179AD16B5C8E6FB0C8F2
1692C764A39FBE7421D2584C7542F9F3E2E76B1A8D81F57DF2276E098DF6F9A2BCAAF783708D
5D966883D2BAFD88416177A159C304091202F2518F31E512E24F467C67BC619BCFD5B889B0D8
3229B76CCC9DB033745CA4AA2B7FA65E12421C95364BBEC1082D2828AC196ED6340D9C90BB5F
102678640D3481397C077EA83CDC3EE0927DC768113D2F4DEAFC9A6A982E129C5000EE2F5051
829969719FBE96BB73EAC332AC4C81C52BA840C1BE9CBE9C735639BD9CDE6DA5F0CC484B20AB
18CD8235FD2D8EAB0CD5A9FE4C276AD9AF585AA519DE92BE8AAEC2C7BA6185D7703C02C82A82
9B02D2CFA16188F5E3AB80AAA4526DC74BF173ABAFD7104C6C8351F5F36284A3DB9C28ACD707
FCA8A97979607F4D6DAE5B23E111639271F8EA152A6D56DBDD6A6C33C962020393E13A231018
99E3D2D3B1BE77F23DFE1BC8BB2C56FE0F8A4CA063369A0EFC593BE649FEEB516B5BFC6994AB
38A75BEAB00AFA4C406C2EF9A7F2533B5F766BF115A05AE0DD8BD4A0436CF2ABB04354D54C82
E3E706587CC932F95A254041B036B14D249D49D7390593231FACB2C2D80848E94B7700B06527
4B833E2A22722FF90731AA0F47166FD4FD286D5315E01CBEDEF249C9B740278D2A4E183D1148
433CC20CD3479D7EE981B0BDE4F7F46470D9EE2B6CEDC48B0D1581849271EBB8536F55B6712A
7BED80F2550298B1F81F3AA70D39261A187D7E6F2097660DE875CEA28E5583F475FA4E269508
53BF6FD5E9B9CEE59C1371780054B2238F9E6C3C9F3B4A1411FBB89FA1FBCD3052D189333206
3ADD912CA14890779B988149BB9D4DA1436A18891FC7F229C2F900FB6B272D55BA55E581F8D0
630D8BB6C022D366DBE8B4238058873514E0DF31D73920A720F6DCA145FBEF4D15C9411F5E03
22CC61990A48F98A63F23793318C22D178734FBEACC04988901481E1FF62D5A8C7AEC831AB49
C4B5721F68F693E442CBB62D13017DED5011EAA71F417707B7915B92E280D0A7FA0063D90CED
947C82FFB0A01B962D2B1AECDFB1839DD0E8335124FE352593C9938B4F4EC21A4D04BBA3A468
26DF0972C5D8401F68715C7B4906A37608DBD3F630D8F3BB64247D8E198CDF8AB8F891E00AED
DBD4826317227225811FE52A9DE08976CEFDB7D5E76DB46941B9576E87DD6B400C64A256A134
755011E3D4D27CB90EDED548F91E1ACD8CE08B7ADC929C1A02B22D65F10BBED695D8FB1337F7
15C792B04D103632223040EECF2703E597FDF30A8C42D44882E73B2A1C0A73919DF7A5CDDF25
B32AFB51F2D24DC4DAC2A747CBA641FC6FE7EC4ECFDFE98BCA936EC2819FF6016A17BDFB1C91
D893FF861A67FB1BA168C5EF59F774D859741C6606D680B68B67563B965EF7CB98E162F30750
4FB77BA9B3C34EBA8E45E161F8977FCC6FC2F4C2A677D8CAEF269E49C9F2F9FF6A309B2C21E5
C810DF536DB392CD1B7018DCA670F0D484CB7B6EE50EA1BD158AF5547DD96166DA10D10ACADE
AA04EB9D144A0D13D7A8F80B3E505177B3CF9893396CAB022350BC705BA65811A2C60FC9F0E6
F044206DCF524323B5CBF547D13D54EE0E87F00AD5A4F507757CEF3B458E792CDFBCC25339D8
BF388CA94BFC341D76AB42CAD16C3F37CB51C85FE91E387F8C1D84A03DA897A699FB80B5DE32
C0573014EA558D71A0EB713C0499438120B4702176B39A69BBF930309A555173D8558E7DF642
A40DD506F2498136A5CB19BBDEC74D7B436AF3AE2FEF171244FEF9711A9AE983E45220F3154B
E125816F948BB0D93B9853AE68C77AB71A8DF0D5DF10E4D6B7CDFF22C3BE071F0E5DC4B82293
025A27C4FF3CB5209CED6295FA9303B624737E0F3E8CB8EF7E39762C82C89627CF2E430AA0C3
39EEE58B684CA7FA818DD90AEDA2F85E0844963D933DA431FF54348D7D9BD3159549650FA956
E1395ABD116AEED54518649290B0B1F54950529F83B0D8D9620176D7A91B803EDC637642C83A
761CFC821B21787F83920DECFB906A5260DEF040E62E38135944DF33F2C4AD7EAB631F226AFC
F035FF68B4B709311D9D713AC6CAD9E7FCEEC73AE0ABEB5FBEAFCE2091481A0E537BD666719B
41028283CB1658F4AA7F4512FC61C7631FC4EDA8D678E7FDE9DB0FE0F89CF941FE65C32FC88F
490226ACBCBC93E5BA23DFC83AC4A289870E5ED31F2B5CF50A93525F381BD56D01BF11299258
DC387694FC0CFD877EAE32478D6933340343AE8D2FD1740BEB0EEE04C44614F9C1D45BEEA74F
D4C2D3F49D624388241C96BB392ADD3896E74B93F670DD8A5C415631B2834B3B8135B49CAACA
007FEAECA5FB75D9C4423F2F04EF576EAA87B69FF1033A70409CD5ECC93155C218D154BB1524
91F87A8A49A77C1B6B6BD09982A55C33601547DB6C8344C0BA64007C9487105CFD10A7BC3423
09D1AEBA097D21D9C1DA6E1AD1B1F05B2364678CE5E496C2E2056DCAC7B5C90BC5DD0B0853E3
0D01800F91597206DC2A1BB5F0FAD8735DAE0E61EB82138284FC4174B009D8DCB57C96B2897D
CE69785A571549D667F539640BB0092D7D130CE57428B10A985A48576D7F6EA6C4207A53BB62
C4855275CC7334B6FCB89BB496F3889377C1B0B5719254C3B9B19D041FAD4A399E671BA4B04B
4A62B1879DD7B04F3B93FE31A3C544EAF70855D695EB3112A05B05374C2196780E52FB906DEA
B5ADD98AD9A075A1DC44A5E6B5BA6CA0F8D2A634491DEACA8A763311E9544556B65082F93074
E5E4457956783C11DD6B1BE5749FE952D2F642E8BF267E5426A0EC324AF7D2E990254DE48C50
5B1FB742652AC86F38BCCC59509737401620910489D3A4AAE6E84F7B7001BCD617B0F09B5002
AD00122FB1DC4C7DB88585C31E637095D3D0DC7FAC2337EB79F02FA62D13AF0D4B76D43E6917
9BCA2B3685D635C6F2E1E26BF1A9A609853D1510FA03F78F0B7FB384586F3E9C1EE38DA709FD
02EA0FF4D5CE512F8352AA15B232CB91411D1E95965F485D7AB5421D700AF653B90839773FAB
6D37538AE3D61D9CDEF3BD4FF94EC113E9DA9A65F75ABCDFAC298717436AF9C1A1667E7FE803
39E1383BD3D45B94F76DD91EF1BA70A8BC50B51D6B51766722802205C0FC5E8EA0514FDFA5D5
B18482694E656FF5D21DC785B278F11B386E5812D42F0B4505F896D7F22B4BA42F4CFF11DBE5
07A53031462B3E29263851E0C91CEAA0573B49A2A6CBCC3C3C1A9C59C556DC2B12D1A9F6BCC7
51151CE62C3F30A0EF50EAE7A56AB9EB35F93975FD3AD2E2145952D709F052197A64AFBEE9FA
03EA2BB9201506C0B6441C9EF7250D73444E01D87EE3DD07CA8CDD5549F62D1726C8D69833E0
C9D2FF5AF11B1FEE0596853FB75B1387BFE18C4C747F83619A6096371FC6F444877FFAAFF4A8
F412847409BE666D6F96F3A2A6BDFD20F0BD08AFDD3506FACD35E4B62C58B4A4645E732A9B1A
CD6ACC71F018C9E0622A1705CA635F96C7315F9D876AFB459641315BF4CA0C4F79301C0E30A8
EEB441218C91D12647D5BDFE2512F2321BC51968C257FD339A24B1B4203BA90691564A9C83AA
E4FF68664D03B1A95DA707BFB90033444ECF3DEB43E6412FDEA0AE772206A398DE11C52B652A
C04499968E2CDD4345FEE97A40B865672ED4711234D27CCAE5F151D1825AF76E8624C0EBE4A5
BEC34B6998040C3B829276200FC70A6BFF7A15CEBB81E8B52221A45196FDA4087BB32D5A260D
077677B66E070D33AD1868A51F7201924825B04335BC192BFEFB74E496DAB3D54AC4553CF959
EC0DBFDEE94289A4A2C166909C26C130AC3AD182057644C8C2DCA84A30444E86E891FE1B0772
9531642E7374C9A272CEC66BC04A36DB2D0B74A622028ADCD6702773D0C9B6750C28A08902FC
DC9F8A290C80C0360BA8019799D33FA42361C66575AC108946C97F3AA027FF95D2A6753F9DCF
5949DF046CBAEA6333F197169C0593DB17459534DEDA9863A74B496A837C1D667DF9AFDAF543
20664D0319BB3BD41EF9A54B4594E6BE5DC416C275A73A26AF17E493F77CA7FFBEB2F7ABB317
035C249B4B5A33757BF9601B4DEF56A6207EBFCE6E073FC9427F95E4CC3799E55EEE6D0422A2
6449F713A74F0C114D3EA2E9B2E183DD857CF21BB3A53480B0A69C7D8FDE6DA71863F2B21EB4
07345E4D72C5667137F83610CD2C391218478C141F1F34BE21DD6FDD444AB1C4B0A59439617C
D0D04ED9FC568B0C70AB8222F17EE10C0934F9B567DBB26EE612929EF36036727E4B787015C7
6E78BEF4AEE020494896893FFA23AF70B4C6363F7B20DB155F496ED5A8609BE1E5173CE968CD
FF5B2FC5A3BC23894EC6F26B71A2AC555A5CAC33AA9F71C184B8F9569D286978C5860C4D0BE5
9E267AD86EDAC17B787CBB93DAFAB3AB4406D83AF0FDC7A29B0A0B8B478D2717FBBC87B305B3
F3020C69C358232B5B052D4376DB297EEF247ED2DD256437C1139017556F879427B786A15BDA
065A1C70C6DC959F8E0CF727BD50924AB82A8C56C225FB35F49C6937495F2B6C7A80D6ECD28B
0088B52558CB45B238A7DD65FC5F16EA69FEBDB60167D4DE4785B1ED69C9F40495CF1ACA058A
E2795FEE4812B5AE9A88EC6F37F8FC2A964E0170025FC558A7D5E093A498B018390064DA45F6
D3C9ABCC3AF22FB37946CC10AE42BD651E213D7E26570B1EED493C3742606E3861F1FA365824
D012B5BA6B6BDE3D198E0FE078C7C17B045109F6FA5700F486E7FA8B9C1A5AA9A14955877F9C
7CE8997CF709CE97211DAE33E406979E83E66ED2386C06B400C36404AC371EC3BF27DEA61B15
D3DB5A2EAF68B5E5366112D6A18AEB880BF2DF3F4C151CB23ED00AFD1F41EDB073022EA74633
6CCC2EEFF94B0C896643F9D44D67CA2600EABA8DB2A75A18EDFDBEEF3E55AAE36D93C115835A
A41CDCB41D00721EFA83CF094A623C356CD01F9F3E61B52336E039F3ECCCBCBBC3DB86211728
1A50BDECC0057520B748A4BEABB24B8A5F2D915EAE78B359C01243B351570DAE60FE822219D2
0AA73D0D2EEBFD64A13FB0F05512F1C25EB8CFDB1F85AEFE9CDBC6D213DB2396580AEE22E7F3
9CE8FCDD343C9A65F86263613EF5C8B1D3D2CE31961170DB7F3A930AACC827643FDDFEBBF77D
5A402BE5D1000DB4C80C05B38CB971BB260FB31F8A42750519FF7CA45076A75D3490B51CBCF8
B47E9C43F349DB24DEDD1C41E013DE99F4A02D7AFBE73517241DD78D1BB77FB815E023EC47E4
1C4F1F8CC34B6FA12CFB9837E7428A0EAA9769E786818556955407BA5079607225977B9D1329
E9837FA6ADE7DF59A7A5C3C6A9DE0791655B3A9C88A4B9D643F79ACBC20EB60019D7AFC63F30
C5430F0DFDB0750A899347EB1D9CF6047BDB596275613295AEA793D76F6C1C012385A29721CC
A1D4A49C666CD91E578B4CB177C7F24BB53B2A096E7ABFD475D8FDBD0BAD06AC17BE32807DBE
F46AFEF6743BFE9C65D9F41691F698027DADE394FB03A862D3C8AADD957F2E3D22AF692EFA91
8ACE6FCE92A690B5481D88638747EBEFAA504873781D51BBE392C8DE01B5AE4EFD418CDDFB84
6AE695CA0C4F4BB18DA6B54AC6DEAF533C552D8DC157A2336382159F28A121C9F2F486F9AD00
D487FDCEE4459470A5F8E3D3EE056B7CF51C860EE6E54886AEAC337F26D1FFC297B6903EF575
6F964318D3AEAF9BAB264111EF2AD05E4666CA98A320E0C30BDECB5D0BB00447C26E72A74CB5
067C4734854EF85A9EFEA96A40705A62B9FE6CE93FDC47DF59FDE42C957FC276C86696A70D3F
3503A4CE8C480C2F8ABB6B86D4C0B689DB26D606DBBFB1BA22960631D355BD6DF77BA3168660
36141960BEA735580E6B306B30232485F662B05284775DA99AAC580A53DC696DCC027A4B008C
7F55C8224E7C59EB86227BD3AB0F45F4080F27283721CE2C92B117EF4EC8540BF86AB9AAC4D1
42C87C483764691656F7B95D4C4969EB8403EB6E52EFFC8CE15CB9826FA477DABE136C2915D5
F9E03B80E83B7158013B8EF2817B1020DACD0B8F8C80E00450CDB8E1D794CBF23596D25116A6
EB716186870E761F3B024EF87136D248AF0077422381DDC0D997C10677E5C51C87C5873B5354
C2F429661B9ADB4B9C7CA76CCC878DAA248857EA3746DB53B3A5CB7E9B239744383E4652D32B
75B75A4D678A4ADBABE8E640F4E0A80FAB602E09C81B4C563DB440FC714DCD23D3A7E4AAFA65
5D569B7F6E4A3E02233027D740B6950F349D0CAF99AD47E7B40F3F9B88E1E6B32DCE22027029
EF7A470678CCB8651509BD9278055958C6C8802ACE0C1655FE5E52A9840513B7925150D092A1
F7CED5CC9938244B0BD766DEC4954AC6CDD1DB1304AE781383D253F65BD24ED05875EB50AD99
D1BCE15BE48A6A363CE8F7D1D89B37CA7BC55DD84FB7A925DDACB6134A1313EC21412CF11B11
82C1E88BE892863FB487C57918A111D4857D3A47406030978456C2AD7EFD34D949111DE4A616
362F218528474DACC220F86814F2543F50385F80CB9D39FBC70AE1F66855DCC1EF7982B3488F
719683AA5296E955D72A3ED56259FC3F9BC41B0E42514740D750A7C2987AC132EEF1F7546A7E
E8B073DCB7CB3077493E4CC2D0B8313968730BD2B0AB3D94258A840E25A52B96025704462C9F
93C3CD3C2F3C66FC7E954DBCD5FFCFFA622C797544121F91DB0CB7793112DC486996C71221BD
8318A1439007735826533BDCF1FAC581E5B3B8DD3356E4A578C87D73026EF076FCEC3124917C
CAFE0BF56F934DD8B57E2DBDA712020B1C4A7B7919D9D7BCB7D5F850104E668F597D1C6945AB
A72F2AC3FDD00FCFD4F3AA871EDAFA706E53C1FA0D376D1985655CF33ED3DC1791517E941486
0E0EA2505D280DB0864B7B02B80F72F10B5E92A7B79C71C656A14CE57F096EE937FBC8CCAE99
9900BF31A9EECF2689584976CC5D9D20F84C3796A4C9C200775C03DA8FD51644F3720EF4A635
4FDA3C562A001A95217B009A6B6F1ADF1EDA0BA99A5AE28FAF22594FD80D09EA4BC02BD5D63F
4E0116AD29CEBA0B961F2D0530DDAAFE3D3B3DF8FFAB804C7B7855117D0C0CD591B0828539C9
54E7B6C05BEE6E8002F9453CAEC5CD25AB4397C807B2AF43C2B2A883D87FDDAF6051F8B2BD6D
8C9BEB43EA821E48DE0D83CE6E93AC6959D8C7E4088B12240ECFD6A02E0A8A452161F878F024
DC8A078635EC88E6A33DC633147B9A2A1EF575E86048B9471713E0C8CC202D56C7BA584B9EDC
BFD980A069A994084180291A695144CA4E0AD3CA947180F6FBE8A709A3E5401E96B74F200934
4D43723B1215D2A145D0E1E91985375EFD8E340F01F825A5A0D457EB5C5B7DA3551BD7EDAFED
C14C3B6B9BFE7EABCB38BCEC9F1F94439145A32FFC10032228B5D1154D2E22D2EFED471A0651
C3B9FB04C1910052D08649C63D5B987EF316A90B2C1BDBCCA3CBB12F1F426BDEEDC8107C9F25
38BB506C7524983E3147012DD9DBC0DAFC96C65478BCF8EED378FEE8A20DC9DCB0F229088A1A
67336BBBB67E68EFA61FC6A5750C7B29B868EB5C050C493B97AD7DFAEF8F75C28A8092C5BE3C
1FE73D519C1625670C78C373765B2803B932DAB26C54664699AED14E20AEED56B0A70516517A
62473369E6541D759522598A0BE737CFC0F4B74B17D63A72FA6798B867A1CB133CBE5EA48401
FD4646773D5C377628A2560DD870283ECBA942F65F660A909811A5332596B84AC3E6B583A24C
7C5CE30ED978EBD6E0EA5B8F534D586B97B3D8F3D9511CF39B0AC45A21CB831C81E8B78B7824
B0D9211B916B64A0EFD2FB710B6777A93874DD625311BBB74A04C734BC3C8298B6609CF371F8
A04B6E13BB4C5CF308A042E4346959CC5E7209F5D7E2AC25911F4F2BB14EB97582F80998B777
14E872260CA785293E0F67ABA0A232D677515C3E56113BF6CC8C1B0D13219DB4EC3D600392CF
BA7C3C7602D29EE0583BAA53C160143376D3F84601E562B73E389EC97A1863BD0063C5B2EDBB
5DBF35208A9A19291F253913CC05C4EA5FE74C591893B53BD8BEBBED59F13BBEADA69CB75D3B
8FA31AFE3172B85CC8863F52B594621F80EB005E0D038ADB6802E1AD80492867EAF8EA046B39
1AC713A3FC24C0E036066C8C1143491E8854A4E8D3A6EAC1C063BF1CC60C3333732F67B43BF5
5B43631EB2931A9519AF5B44127B432871B99B3621236172D0EC4EDCC0BE44702893C0E749D7
FFD81AE042BE89442ED0D0F45FDFD2A34CFFD26E692DAC3F81CCFB7A7676444B48A5EE7DF7B3
7DA76B1C7C50654CF9DF7F47DA61082B64748C038E8B6FB6DCC2D82446064D826FC2406C3398
B5D24FC41EF1EA4B833F9C9818A78864DAAFFF9BFEAC577964EA167734F4A4E4FD85516A68DC
BC0A64B1D406651C9EC70E97BC15F4D0FC43E96BD31174DD4D0D228897A01BAD1530F486E86B
DE3B7FE8203FE79F3904CC70F3FE5B70A52CDC3AC40812974EE43EE335E05A5AAD251C22B83B
B027F8FD6A695A85EED610205C395F7EBBA3A6CF27DEC1048355636242F23E74B70640C1AFFA
52309879376C911B07074BF35F5DD74E2A963209EF85F1902784898DA3D4F43AF02744AFE667
9890B7AC96F3176FE1CEBE8D534617401E5342ECC07E115FA5CD1D77998D30C28DA15B763F1E
9412D314C535A574D0584A257487052C4F088066ED99E434BC8CC0F975436473F9C417588ECC
0C37BF0901211AEB658DD4D1B30A8155EC7CE8940F059935CF6DDB00E47D4DA7428DCE12920C
DD864ED00FED8A18C39D32556A2A1BEFECE0443BEB0F690FC9552F851ABA3862083D820DA900
09C546C0F8D974644C3F2033A81BC38E9432837E0469329715AD7C6D910A8506A4135FB4FD69
51DEDC46231DE609F65DC86D66AF10EEFF7A899F92EF897410D56AB4193039C558325C7240FF
E917284742076B218220DB2011C9DC6938F41D08634C9E07A81E91753F595A2FBB72752E0E2E
B941101C30A26CB976CDD181A4D8FB0187092773E56B47ACB7D6BC7C878A00BF69EAFE8C2FD1
665C3FE1B6358E3B6FC761BB19D8FDB16B77272F28C0DDCFDB4C7AFD48F12DAF1CCEE639E8CC
E5234F7E60905F7EF178B39CD17A5F5819AFBD6523B008E1E3FCB7EBF0A85E328B9845788B97
43BA205FF3809CDFF74C8F83AC937AB9B041F32E9CE0209B62D8021C5D05809FE51D277A31F5
31F8E62D2E0D143125B599D06C714B6220981F5E8B20E64BFC4BE032393B308CD99D1CDA5433
AEE558820C95DB7F5ED52E60BAF77CD27A60DB1D6FF7C907280B024E3C1D67263F3EBA29035B
B5D70090C199EC5682EF5FD7CE0563C453ECA594AB0349FA32A9707DF207E19461C79C33B3E6
FF2DC5700CBA1B297D9D215DBC3647F7920B82B31E7D22319352E83376B373197E03C4C42137
754961EC274A241C492DAAFB078D8F0B2C1127E57F13DE96D2BC9BE9B5120E063757FE6B05D4
E5BD7566B22D79CB78C01DEEACD07D86E961D0CB9DB376D61D1BEADA56B1A629A93F83405C7C
10C1ECA67A71AA87D7C0D28E295A01FDDF038BAD9B0DE720718EAE09D7EDBF128A7DDA8D786E
E0B16D4D21B3564133476FF42AE7D8A5347749EC2A2A4642E87E7B64E6166032AACB00247F1E
D8F552C94F3506F9939418EA62FF14D3FF98158EEE0424BD5E3FA77C2562CD5BC6C7F0FFA183
8653713E87B1DA2E1A4D202F04E60DD266D6D48653CAEA42CFC43D05894D1173CEE0FF773FCF
9803C2E5C150385F0C8DB67532B4012FD89C5558B045C3026017FA4CB17CECE11712AB0D6176
31B1A5096677062BE9A1289736FB1ABFD9630274E40393CC9988D2589F22612BCBA6B339C961
E5A4E1FBF411A7E719959A322DBB622C8A9CF51D6F405EBEBAC19E6051CA5B750D7506EC8A03
CDCC8E62C6D7AF9F6A32B0B585F66B26CA61E290E39E341F0B2D3784D104F82872BA0E1ED967
A064F708AACFE052002972006FE14CD4963E1B34EF38B99BE8A7A83EDE48C85D5C71D69E0E4A
E72D7B6B1A46BD26CC636DAE815786E9E0EEE89493BFEBB89037F3BAC832781C8B1630E31542
EF7CD6A483C9004AB161038AC6AEB38B48B8293AD11BF441DB1FEF2A168B77D69C4A79F921D7
AB9F1CBA257605D81928FC46C43A4F93D39B01B07FFD0006D38366393CC64B18D8B18FA2899B
9178C40F008044FA0D1A41E879573171478C147CF71731075421650FBB856ECA3B36A741E207
7245845E074DBDD2FCFBBC4581A2766F1830FCF33255695D54307EAC8196CBB693D536795388
233829CB670EA78B793C4C9AEB73F7E7DE4860712A5FBC17CE5AD07CA98D70EB3C94A7938333
8199A56951A45A766FEE0D58788E22740F2568E515AA495EDC80DA6A84A2797C198CC1F3D6FB
B2EB893F79F9F54AC81B39B6DAC070A763CC81959BAB607569423D423FC8FE5F98E14BCF769E
A77C0D11E5DBE2FB539CE15E09B68349A925949AFCBE381192BE5146D28382FED48E03EE3221
BEC2AA8C7270F43C948320A3CD0B831E529AA585A7C866F2EDBC5B569D4D95E3EC52C8A7D353
81CAFAC5C301508672352D9B0F582A739564B6CCA37B517019C7633561F33198DD54A8864080
80671E1E77C0D2E5023F489305CA314EF082008D37DA60896F6C4094451CCC52F7AC0D72286F
EBD7C8525ED8F36974B846D64BDAD643DB37D8EA837387E100432131B11D5C42E5EC117AD17B
2BCCEB463D68AE7AAD5B877B076F34609146884F216716186F4CDF7134C0F72D36EF9696D2B5
3EC3A3149A5B17F45BAD371CBD72F2699CD52636151546E3D22C085349F42BA0C21D90524A94
B37168FF489EFE6DE3CE97679298B18ECA37BEE071BA1F93D7D2FB811987973864DFAD11BB5C
645CE0A435F1DB7BF20671B3CAAA89DF0478215FB76EA26F00682F4656E63C358F3B0BC84C64
C17C3471DEE3C97400D051617C205D5815BA63FF38BF46F06A8FBAC182A4CA27038B0C8EE103
6A9A449CC5A9AC774DCB04BC9F48503A3F4A085114E2F190E57859724A8F1E36CF97CFCC15D1
96EF82AA6D2964DBD886C39C4E72E15D869DF1DBCE4169171F2768CAC43BE9C95E344BCF7F0A
F27B45D386AB6248608416BE5F432D582338D3FAC77B80E9874D5B65658698E21BD2D4BA153F
97D21223E488D4C5C2C8A7520E95F6FF8B1A19D4CC920DE4621166A4EAEA5774219AB3EFD4DC
9202C5225D4E650591C475337F68A2D870375BB8DEF9F4319AAEC852B76049401C121568F16B
9BE4ED27FF64C810B325BCA29B5642438E259135F361419E8B5B23F6AAB03AC0B22A348478B3
2E93FC448502B81B0626489F4A358702E7067B1BBDE9448C4AF59D24A72C83E0042AC510C6A9
1E5A9AE0A69D2BE865505238E396006527756734E9244E883E05ABFE0DC62F9BFD0E80251727
04111627916379044C3CFE0BD1D7E2C105ADFC871FF2DB60351210AF676444B37CE21AA14F18
79AE06EFE7B4338EB55F0AA768AC12DF6BD8B87FEAC0F48FDD26F6D2DE4AD88E898499608CB7
70F754D53571822BDB5DE28107B378F4B1BC67C0106A24E9D1785336BC80D1DA9636A5F6D25D
C355A88023F7189533E4A2416755821A03A069681F4B0554AB826D2819F2A4CC0726412E1D2A
0001A3CA49709DC21E7032ECCAB2F58D80A8163CC8129684B4277D3AD896600F610B1883CC97
3F8A975E328CF4B069B44E4D5207CE889BCC49684BB2F1EEBD711C8ADFD4607ABCED0FBA91B6
958BCD5874B01E8370C7264B9CFE66D1298374288F3D3F399700FDA41A7B193411D1873D321E
846B089A2E510426782A79990DA94D6182C912FE9752A93D6DE0D37EEE602F0907B8CD2F46DC
ED1179536BF9A3B74C0FBFE8974173A2C630C7360BD90F9C697B1D50684788147806F05C70DA
8A11EF065CEA507DE043415F855F595AEBD10AD001A0B68CD5A2EA7858041A9F40F05485B038
5BDF08007F4213AB76C70B463E7427B79F826EA7EBF94BC420F700A50A2BBF291C867D5B181B
8738738BBB76D93503E7C603A7F8354772C516443FBD33382B7913840785E5AE794FE571EB3F
C65070EAC273F00FD12BC28451FF8BE0DDE26DC63BEDB66ACC6570FB166A583D796FE9493793
BAF96A13BCE0E7952FEE6C6700A9180F5BA2D0CFB2963E0CC8606D48B9BE7BC99C9BEFB1A2DE
A357BA87D790C52F7A90A2DB476BDFB93F48910AE8CB5E91D1D146FC04736B13A017EE2216F2
86ED57965D2017ADEA323978D3FDAECF864B51FC9AFFCC24902E266B084D518F1F063A2D0BC6
25AD9B108E322019D1FFE9A26AEA642369EDD0537D1097BBD66DAD8D859E7F02BFB3A7776290
7F989CB8579A352A0719969ABD926A2CAAEB9DB6852B1494277FCFEF88795AF85F0750856B9A
764F94A65A120B04E33AAB0D36907B89BEE7586021221B27CA23559AE68A208FCA16703A2FD2
F1D8CEFF5274E64C441BEFC0EF7901E5EC1BE2FAABB271B3801C485713BB8846C95C6AC59604
6CB941FE5A5EF828EAD0808F0DBE808E96B5C48253CDC9ECA0F946A3877A9A0D61C0AD150F50
B186F841125A311D606CDE70D36F7C03AE8D027F88C6B92FA0F2D2B69F15A1563D5C76A3DB13
F43EEFF40C9DA317E8E0C93FEAD28D0FEFB5A253A9E998AE1CFF676DFD88F6D005B148948B74
07CB2428530235313AE2EB809B59813C15DDC621A69CB03E022A71DC1212627141A77C2441C4
39202C7F4B0937828648544B05288337535CD3D4D2B80A0B3241169C8898E4A5DB36B8230E8E
56E3D0CDB214DF9AB611003063037BACE671454A70C801ABA2AF35048AFEB620DC4FEA9975BB
A58857CE16D2439633989D9306914BB002B376CF00BE076BEAD119370763B131621C4DACCF9E
E58226A014D05C428C70E28BFC1CE9FBE10D94828D9510C22A7155BD28D6ABDFB16E48632223
6B678978BC49EB1E8572ABC47DE533C8CB98D80B4A529B7D05FFF2302FA2B099EFBE64F56186
F14D56771FF9802F23C1302732931A28BBCCF8016AA68241DA46B03C352237BF018290F3AFAE
514D05552932233857697A0AA8FE291D8CCFB8D85C5790157AFCE28CA0D50875E4107CDC0179
AFE2290120C6EF96EE34BEBFCCFDC2D47DE8CC301C14959A4F14717E9BD54454F382394D0C9D
653357C683D65857BE45C662E8468BB48F916C8BAF08D028E339E64803D910196D19335A65F8
3230A9E6C2BE9BAEB01F9776B81D665F0BDDD9A1A0CA31A0FB126B1AED8FFCC297786BD29CCA
18794FB704231664A4CBEDB3B41EC2D9066E6CA9D1B694A8D7BE8973E9CCB799F79ED2FBE63E
114DAF8C937E361D4B7E0FC4CAAC2B87F0C9406820E9448EA9FF98D053CE9D5A7DB9118707BF
DDA8F701BF6BAE1021CA34B924185AAB0526B046EA4FA65CD4412F43CFCDA0628F0F5790976C
D501621F5BA7937E6C04DD6700F9B35F3A5262640EE4BE7DB358B971C2AA5DF1DD7D090195FB
4FE96C8908D24529228E7F7FBFBE6138F00143A76B3C09E29F8EDA3D5C630AED311C3FC3C9C5
7B48BD070B18B44AA15009176D0CE7EC488C945C51B26950D522BF80226251FDE456D1C8399D
7FB77759130DE5E1620A47F6E8EABBC2AD48129F32E97974657C8AA6CB2E7EE0959FF4D70BB8
B307D2B6FABBC887C04A6E95A986CE189927FC97D8CA7DB8FEBEE699D3D193545B1937082373
E930AF3DB6EC7E4EB8C8E1D6E5615B93177B9A2BCE0D7616642DA91DE69B7DDB922A4F47EDA7
48A71EB4662D7476AC5B15184ACC7BD92E2542F853D72F1259020F66B782F837272244704050
99FDD181DD4210F96E8E28B257B8444FC35053A7DA19361B01BBC3BFE0F8600E582620D1AFBC
380356359CF6E9F1964635E0E734D7BB9A1E4C7D704426B8D2A0700411C226E13818F739CFC0
23921809D6B1C8639EAE19F014A519D6B71133C3E12451D21AA36CAE16F002286B5AEE0BC46D
5DC92AE3779D957212FB276D86CD0C6CEC26C2BC2DFDCC2C9FAC9EBD5B4C7324352806A0D989
4A1E809D8C9C2B1A4B56780CDCB7A548FBC3FAA955088FA50746598B134F64F4D88E8599CC48
A5D5F86F05F898F5C27018D50D256D761964C12AAAB06BEFC98A84307547B80839F8FB1B7E65
53D7E522C641DB4EBD8FABA0F24AF058C6DE88F1DDF478641C513423513002BFCBA37FF82336
A6AB4CE3D926CA060A4084F3BEB0073BCE8B91271A3B2614BC0AA19013EC694AFDECA7EEAD2A
6527ACD348D00458649AC2E475E8349D186FFAA64F2F058FA8C94E7202A8141F64CA347DFC8A
7CE7CE3C9402072E188C77290563B766223FDEEBC865FD7FFD4507E74A972BDC5BA05F1595C4
603627E07871268392522A6593D3035B5F05E8CAC3D90E3B6A8C8563BAA8F13D4D8A878445D2
30F71C257CA490D72B7697719B66B62055FB8581037905A422BAA45AAF39EFD0C40FBCC7109F
DC2EB4BD0F4AC59BEDD12F12DEB947F2008088321BE00902D555E22391A9921DEDA8691DDAEC
B8BE07CE75F459C1A5E9CE7C57386E8629BCFBBCCC796D3B0551E207F6E0FA063E926F6C663D
576B8D6069C022A51F9F9C21147C7AFBAAE7F697762DB69C73CFC80AFA498024870E3B7AF962
03CADDB5520BC20DB4B7DA0F36244B20A8110E753D6129C9DBBA86FB5581DD9BE7A021FB027F
5F0DDB40BB111AF0A019900EDECABAF3D5CDF84981FE2A659CF9F95A7F1D5146A566CFF83EC3
523E919D4A6AE54AC444E1E7F0A56746850186D8461721656B54BB784960B525170233D92E8C
89680F0C71ECDCBA4B15152F2C933908449052C4B4CE617FEA02A74BB715828D499D2208D85E
F7E45C08858BB344144802C885D102364E217253A7392F6442170B29F8E70B4B24BFA97C4340
38364A0C52084C204A09EA5D48873D0CDBDC712312C582F9A8CB516A5AAD8E30B591566389BE
57D444EE22BF80A06F768530BB9CFF7CBA7B8374F091FA17FF0C1755D6917B073A2E167A82E3
81793592CFEBF89561F0FDB63044F7636424BD0E406D622F957C740E6F0D3884702BADD12CFB
B07A20558193C10E5CF372010A7955ADF5D7E16E66C732BA52E3983026F0002B39B62B628DBB
D44D467904E8726E79D79987812F07EF14465CBEDAA194765692FA39D503DAF1F3F0A3AE881C
FBF7C6A0E4EC54D7D0572D810F8861DCAC41E4EFE176C5219721911C8AD2B3985328D49E4CC4
380892A6F108C62D711A8D9AC44C46936B90E4D1E6FC9CB7D01A6812D11A5BB0EABF497D0D3B
1EB09C2CBE15823ED1791D2199481C08C1F284BF72D428650319B881FCF79934C5EE86885B40
CC6240CB1F8D80B0C8F221D8CA58C228D6DA93DE005B11C15FECD9450293E3CD5005CF191803
A161DCA15FC2D187F22ECEE8335D58F21F69D15FBBE3C1AA3D595A142F8C3DCB7FA934830423
F072B0D7D5613C148A28806085BB7C18A8C53C6E43821AA5CFF8497822B48CB09AB2ECA0FFF0
54299726499124F7B25973CB9C80936AECE707B66985D7BC56F2980444CF3B1CE6A462A5B78E
C05A036BA12E479BCFAD5953786CED3F29D5F6E5B33ED9D46901DE314E87B831C376A21FF4C8
385D175AA0568B1EBC5F890A213483CD218194E15BDC61D51FEAC0401432859B5DCD253395DF
487A1FFAA708A64CE045EBF6C6DBB4C9ACC91DB63A3BC1680A697538F342AE8B6E022B1A4D77
293F596365503D5AA34712345D613E92A3B214CCCEC2A40D0E3A80E85CAEA6FA0145A6489E65
A252CE407FB0A3E1F6CE12D4FF4737AB514065A7A791F8D33DF8D52849FF5D97BFC8DBA6568F
B51667CD3F0179EC89C10D656AA50B2FF5305168AF18F77A28AC8573D8CBD277F8BC08482CC0
F23BBFC3C62C400C5F064143FC73B04FE2EA7D48F823DD9631968048820D81E97F2D6046992D
89770073B795682FE2FA6A9356EF89CDDBD94E66C7A61BC6D3A3FC6296432D576A90D30CD1FB
CF3D511E03374CA758A245FB43EF5DD1DBA49072A627E35C10F831569B3B1D57F8857AA5C7EB
7C0A9767BDC44D734D3F0794716B23F648310AF49C83E5AEB12DEDF627AF214C7C48F325F110
2545981025D38FA0BB579388CC5C94144F5643DCB8986714082941D358D35D2C8D8B3E5F731A
9C7940E81A03E3407B740234A2E20F1A7CE7F32B57D5F25B1788BC242F732540F0344950A6BB
6BD5BFE7D1D62B1596C7AC5796AD727A47864AA730E4FE4B0B36154BADCA57A83651D37F4344
A6520C67B41B3EF31444399933EF13F053627D361D7B3E5BD1D4B94FEE21034CA389BB4A6CD7
3C26021B23784BFA0BB621A17A13217D3CDA2B68284F41B869B70EE24A3ACF909A67686EB958
05C8E7EF912D0DBD5C3EAFD377F67F94B76BD18F35684F9C4FEFAEF7829534900B301A0EB355
7A73FAC07A977F81B55AC50A1386C7D6A4019A8C3BEC9BAC1D1D54E68E53E15BC58348207FA5
8BD989A20E2F3396354723AA3C823A957A133286080FBC124A11A42F416207AE673C0773C540
07F9420F92C6BCE228F5C93248E4BF7BCB85BB79FC6694ED1BB7E43E219B996905F6501948D0
575358667E52445EE9665035904804D45CF926D918288F1398B668941950AC0BB6FE53BCFC9F
DA2945245AEDCBD07CF07F85A7981B4CE9E84139A46DDAC48B8421FE99AEB64EA97F954B7581
75433E584D60CFFACAFC915B856E26DD41E000C1162F76D185F469D3271887505811E12E1558
D1ECC4562DE5BF7AA4C26CAB047001AFAE3C5D3EC9CEE9DD0B5EDEBEACC765924BA00624EC49
223CA7BE92CAC4583509AFF3016BCC446E14B5DD7D9A39007B5D222F70B0A977E0192E608016
0412B520A8E72F7BC93737E344F1C99ACB3630AEAC72D60D344D5CA010E962DE47CDA71D7045
87D266D0E584E17917CF528623677DA03619813BCBD6D360D945068E74F8EEDB6AEBF69C6E2D
2158B050DC402D55FDDF451AD0C1A407154B04A5904B6987662AF27231CF49118603A4E5DE4D
0B5AB40C7CCC71847EA1F330B2A54CE9CF1ABDD13208A6494D36C3FAD5CBEDF46D423BB07E72
8188F9BF937E0DB8D8566EFD8E056ACDC3F5689C8E19A27BE166A0EDB07BBA643EA6B53C4632
AE33E0616222A54391B8CCA32D7889F95F0039152B8DCCE8FFAFC0CCD4310FC6DCA19B0BB994
EE62E8085F3989737619C8C516F7A6A25F9E9887FD60A30CCEA017E50EBD5A2C32C553D0188C
FA26796AB530ACBB3EB090F8840112F6A52F0CA684D55CA2D414A36228D88A20B2EEC02D1823
92F0924987CF72AC92897708AF33BDCDB18C7437D103FE4A96DCEEF7788284878B4876333DE5
AF764617FCDD491C5C8095D19CD920DD3AD8B5B71A375F49520BBB6355EAC3A188D4FBDCD556
19EC3B6305F50D818F6EE5B5AE92DFE5A7F4F209E9F3CCBEDCDEB78AE0D055C3729429E9ED37
87B52545D480B5380E839374983B6224DFC56BC8BED147C1A8E7DFCB285AA1DB7716164CB63B
DAB011797C1A9BC76E73AB86958F325A7B7E15E987E90622824F2A12A220893F47737FE5B549
6696E7772E50A8CADA3B8C826724115A236C082389390FBD27B6C3BB10684CC720DCD875595B
39A47196058B06758E80443175359C3402E4E84AB850E42415516A19F6D10BA52369884BE3FA
91EB9A38D3AA07B0AA9294B7301FACA79B4A601E92428026C70A7C6300D3EC7256768B257FFE
BB593EB497CDE45D9ACB4B44CFDC6452AC1F9F612AF2C5C0BE0952971025E5919FE3836A145B
E9E264A8C7C36C658F2CCD1ACC9BB96A87F3A84ACAAD0A05F932907451EF8D050BEF2F693726
396152031B1F796103EE26C70551F75A9334D8FCAD954997D05E932C9F1F3A96E74C44E04FD1
8714A03D486F1CF8BA0688599FC8E6524E4D9BEB6816A4E2030D8EA06A3FC50183ABAD196668
F15BFA80281FDCCA6436B04CA4312E7FEEE8CE08CCBF90B1638B9FB57DB079755115F9FBC599
449BB101A7709FDFBA691318060F52BA610B818A849D50D2B11FBB0D8B5F859EC9ED3ECE3641
1D3D58D58F14827B14CD5C2A0EC4DCE72A73C4520E1DAB33AA33CA4CD3DFDB103C5579BDF050
6853A7D08821CE69D4614D1A7C679E9E9294526B50CC284ADF3EB0CAC4F6DF491756F1216105
E5C25D898C70EDACDFE0ADE3D98DAA6C07F6B2F04D3CB19D108D63B432BA6DB41E68121250E5
EBEA3D85B413AFC8D87B934D14A663A62B4B18841B78F5965EB483631B4232CDF87FC3159B35
4B6F70C2B595F46F43FCA2A19667B0F91F5EC7A31972B10462A6E83D5AFFA53F7C8E4B30436F
7DA31B6C41B831B30F9D98034708F1C5C3E34C451BC39AAFF97AE2C477748C7F96AFDCA8655C
9DBD84F30BC1B568C3F9B6F495F17E188CE2286696CCE2367ABCDB42E4000DBAE8BED2D6D187
B7E9FD616A17DF7BB16DDDAD03B29D51489C5092E032B6EC2F365774810771E2B03CE94F5B97
CEC5A896086909F0DD481C8028A720977FC8FBF5AA62F6CFD91A798210FDF28B3DF8F4F3937E
7306048DDA7C69AA5F4912E7C6192E72B1E9700A3FE380B3C9B63FB3153D48787B1DA476FD22
E986874E123E30E532167BB3F17323094FC84143CCB8D7C8B5EF54126BD9D5E3EAC00459B363
6803A6DD2B3673EE865B1FC2828AE38B74FD8C0E3FDAC44F7C5111D6BA2661DBC47A0D13E751
B10DE1E1346633EFA2607A7AD1DB1A062202C4FACD05E829E37661014675F2DF3775D88FE44E
7DDBB3AEA3EC27D7B4BF413D54DDBE1957CFF63A267BCB8EF99C27280879F5AED3B55C288E31
2D3BF0C631894B30E0C3C8179F277CC63A395D98B66F99A87351550545DFA98CAE027EE68D26
C098D586537A2B3F0AE3DE112AAD1EA133ADB4BBF5FEC1F1472AB941AA2DB1318CF1DABFA8EE
0A184398F9DBB7E6D29229830FE091B487F04D8FF7D1DAEE5253CB84FBE492A4D1E117BBD910
7F9EC521D924F115441F3ABE66446A1D4CED84CAFFD29E221C1E42C7379FF700ABE131DE0F36
3226A90ABFB0401E970DD4A2727EADB374F5E933EE1A11E9E85A9740E0B9A850F3EDA6E90477
0F69BC3EDBD52FFACC16513D4EEAAA948E533A8D693D184660DD89FF3F945CCD2D5F602CC243
AB739B4D488E2577E58648D78716FAD157FBB814E0C7991764A3E0BF9D6DA3925E634A1FB3D6
DE50B563D90DC8AE3BE33C6369A1A96BA6FB8C16F2A0DB154373ADFF4E920C0B32EC6AEE5588
7D4670A2C2340A12556E5B9D688FC299283E19469A14A8068EFA9B489522E2F44C293278D138
C732129AA7D97A8EE41C30D2F40E8A7E241CE4D1596E6A1CD065E90167A52AEDD2635E746514
4DF866E99DAC70F78425C9E68340EA5D19AD3D0FA0F944D2AD489911EB5ABEBD7B48BB956E8A
C0948AA564552395DE41AA2A72646FB369AE9D08958F759AFC10185BAB4B34349C12294ABC68
02BB1EBE3357F3B0C0CA227067F3768E57DBCA68C2D1955F5D18A7BE0B9805FC2BC4B3287EF1
A9D16350E5997F642ED6A9BBF46A68AA0BA080102F020E5A331FDF8217FC1BF0DA21EA7F20E9
BE95C1B59FBB458E4A5CB47DB38FB3A3C0CEAC39788794E47ECDD42B81C5F8DC6B6E9AF7349B
ABC8FA79FC77DF3B5B303AA5DD5A2949CEAC2FD202423A918F8355253F20CD86D49D8AC956B0
2993C270FE41C6C7C4FBA75B10A777191F33618E4158DD046C5BA0B145A0B04E18A5F4CA5A76
62BF6B913975D6FA9B4D1E6B71F0ECA1029ED9440C91EDB1D2467657D9ECFD8981EACD537757
A8BAA5318631C688D1D865D9645B4E52CCB9DB3D6549A792A1F207DF608B6278DEC2956A2B00
AA3783630F6C516D448DACCF72C53557436AE09B66E0EF1F1156945AFA125EAE9CED158B8301
F19EFB2DAA86A71AFCE1B319F87F0955FB113973ADEB7F175590020BEAA16DB43BB361FEC1DC
F3C4D21A58D9D01F40B86F5059C437ECF83367EA8ACB91BAF187E03FC51CBF4C07A674C5F63E
7C7F8400C171F93AC7D3DE26D141938CFBD6163240565995F44A6254C840C1B4BD66F05C2C08
B55747540D267DEEB6673F1ED54AC99BA83D15D6354B1DF05680BB93B9237883261A3A475B13
8373C573EFEF4011F042102289A50DC31EAC543DF910695B1971D03C256F258CA48878E6C1F3
170017E3EE97B9B705AD2241AC927A86B4A44F05F37D260F451C0FB10DAED031D67872764FA2
73A95C183E9BE8497C3F68236F32027F8C01FD707D2CBDD339B07DFAEF35F9EFA1D43A245ABA
59558C3C0B172E30C3A64ED18C9EB7141A00F8862583CC9AB16B9184E09910FF30EAF0638988
CF54D6E40E2A0FF8E5832CEF7DC239EE90FD1EB079D0345DCDCE0A6D9EC621DC6EA7AEC3EEE0
9EAA05CB6505865B90274FA890BB64D19D74A618A951E3B6E74AE3C65C84CB5D48FFE4ECB86C
859CCE068C1665C7AA9D982B951B95E10C6EC1DFF747EBB981B380056D9EC5125CE14266BF81
036A581AA8F23D76432C7E846BC7D737EF0F3B91262E7CBBA277966545940C67CF4FEB14682B
F557E45E6F44B120C90862F3F1DA74E9B0B35571CCA2C2860168821289D2F836897569D07277
4CECEFB2CEB1F55460EA5AEB252A2A9F653C8B646DABB7D1DD531E1DA1C098CC5E5E41893944
EBC6DA81CE44D8096813F4323E97BADBF6C2A118942E44874E63004F7B925D6F5B3A15A42C68
08062EED0880A8893C816DEDF67496F49C25CA5F2BB1F1F49B178490C1EC6AEC6BB3590005F4
0F339C7EFAAC56A88F132F9943EDABB2FD1F3B8B1CA97C90D376F5F62C5EC6B3AA6C88EA7BB2
8EB8687E8D24498CE4C7CC7C2DC4C60BEADAB36D50F0705606C4777BE8F391B7856056C87740
ED507A3C4AEC3C115F837DE4A620B2B8A028E9CE52213F3E7C425E0CA2756EFDFD243E55E094
020FC74B820530051C414A32129CEA783402238EFA46B98348AD5CBF27B1137BA5D7AC1EA2D6
E8DF85908325F75BFC130BBF0B1056F0F1815BDA877BF922F7F71488CD63F22107AB224DA5AF
9F0BD07526DF7B78EA18223EEA608CB614BD38228782A8F6DD42D559A894B814F08F9120BA31
4FC85D800B6909C98735B0BEA839012811ECDA1B5AC66974262A232EB06DAF952B70E07BB417
767FD420961262FC68C7F9C4084FC324D1B7C9550DB0C3AA665CCCDF684EF077CF33DC707A14
8E325DD3FCEFB13B3D531849202F83A7909406C1F2190623658C0F9E483B8EC4379F43360F31
C1C259F4A8DD369405AFFA2FD4FF1FC6BF7C57BE200DF6F16D82FE62F9DAA00D10BFB79FE035
1C7D5044BB6E6EF64914651EC046E9A6E9544E7FB5A983007A59DC78EFACD8BAC06DC49148D0
DF947B24DB81551C6E8D05A75DBAD023F1C600F6455EB1783AEE8E2841B63659C57BC309605F
E21524B5B59865EC7EAF6DF1CAC0032B10B9736DA197620B86125DB8A97F6D7E8E305F92B491
2641B692BFD1B98193967D2847EDF3C7E1EFCEE96B1239CDD35FF4C843564827F9F5ADC858BA
2B911637205A9FA8312675D021B259F56342E9B395D3EBF837E945C7F08494FC2960B92F7F6B
BA9BC2F5455B5582FD670E6500DDCE38653D5DEC5497726C15F3DDF885302A430F9B7946BB9A
B2D9EFB3C3F81AD02394AA54141E3849B5ED816A717044BAB44EAC003A8095BC03E6B6B11CDE
C77E979FECF2E780AFA121E03278FC99D25C0BD241C657558AD88128F0BA7FA7482EE6F643BC
EEE670E0BDD932290624086DF2198CA3BCDBB976379EDC7204607F8DB0F6457B3BCAC7EBA651
3E9B8DCF6A47C075E7418B0CADE13C43180970D4BA6EFCF574C4F9DA83B289A7A6D2A495B6FF
32316B905F878579ED5565F7509437FA02A28C87083FDA09105649BEEEE44FD1A80B0092F064
F7600D3BEA4C549E914AD8D595D8A278AEB78B5751EB2FEB3B8099AE0495ECEEDBD747361DF1
5659A9C64718304F7780A881472317605A38A9C3F7A39E03FB7169390A5282ACDAC387D888FA
9AC46D3885E65BE61519C131016D65F85BD2D1D6B321ED9BDB5F7210C4F362254CEB44CE75E7
9D8AEBB96654A28E96BE766C19439E26FFEF7F185BF62856B0FDE276533CC68618B17221426F
86406A5B0C999F7468D764DD92A632BC5998CE34724E7DDEBB53E9C125A2BE5B2712D029AFDB
A0FF9826583FD261C85A79517E0C89058D87E2105DDD8BA7E277E9BCB1CEA56D64F2DDB3A3E9
2751D718E18AE8EB8D55D1A35EDAFF938C5F6D95EC089C727953C3FF6DE24F7FCDB38CF73AB4
1EBE06A67AD901BA536EE1D5B208B86E692498215075ABC3AF597DBF93AA87B584876A167D59
3C5FC0C487235B6CD349D3EDAAB4265DA66F7C4EE4967768FD89C7C28A64C97E20C3A34973B9
142314A1511A6FC6DEB13DD451EF69710513F18DD1C960E712D73B1DB1E8E534096C255C6398
7AB4D32E1A8BFE145777FD1CA548762F7B4F7447D03A61E770C12ACE3860C6189B3D0E41F055
1CF722CB3DC09073F0567D0BE9F39E8BFB0F338D6EFD8E1279CBD43F6C4A063819ACA553C54A
A2346EB9D433C5426BCB9B81CE88B557A2D59BC7863397A9994DD6BFD6C7C7FAAC380B128642
A86241BBF8A4FFE9887758F94A153D6B2C138442C5AE670FB50218D1FD57D841AF8F328B3317
3E4B8AC9B6DB3006741EB323A502045702EEDE107DFCBD4081770E3D07DCF9CFCCB7E56E3F0C
7DA3767AC373A12F3164F81B493F12D549AC50605430DAFCBD4A9F49EDCA82B594FF829ED3BA
E596A825A618D49A96A16B61F8E8B0E5B3FA032561747B96FA1935D74D0130AE01ACCB3DA668
A887F6D09741836DE17DABB950D84738DC5FF722838B507DFA7F4A88DE4D9AAB12FF9A341DB2
7ABB24FB8686161443341A975CC810AD1A7E352037DAFC33682A5556E6FE46BCD08277461C74
CAF2EC1CA2DB253D82DC72FFCF5CD471900B7C0F2390AAA4EB6196020E305EDCE04643A2FAAA
4FA9DF91D3E21121DA099CE25975D4C950DFF59F5E4CA3F426AF7B33B958ED1FF3E1D1970EEA
0B97DA7212E8A42124372638CFFDB6C5DAC17629C3D04FF2344DF5CB39F6F156B6B8A4BF38C7
7D421A26ED40EB2E4E1D274CE7B5934C69506C1705AD076C58CCC5E27C580EC2DD978DD1074D
286163D79BAF91E3FF30A507CF1C1691F60E28C780B8F2B2CD7A66E18413094DD4381A15CC3A
2B8CA189320DF07DD3A25580DCDF91A2B33B3D8FC89CE71CC0878C0D5D4FD12545BDC7FE4AF1
B9CBA1652DC8C076DF6DD029AD8B09D75631B4DE63B3EE38B3D133D0D3B7D6C991CBAE09A8AC
A77AD4E0351AD54D2A4A1A2C84B62A8DC9646EA4CFD1B66AF0707EB5FCFFA78223898C0F377A
D55E5657661BC1DEE331CBD9FEC4677181D3577978EC08DBDA4C684CD0266CE6D1E487CFAC64
EF8462873D034AD7D22518A7E767BA80E8514317710A71A228F76A66AD59B345C4DBF03E056E
B6C9B2C444F2199C8488C037C37934D449F0049E14C588523D9ACC7850538DA9EA98E537418F
811AFB492818C285BDB80A31987B41A1671A77AB530EBE57D8B71B6F9C95F7474FAEC60705C2
132010887AD668B1D7D53E26B480590C28367553EF4CD87EE973A99346FBD55A2AB67635DBF2
DF12D4CED638B733A9214DA2B898CBD41632807B34FAFDA648B3C1F53D0E5C835B0CD3803CCB
34A447B76A5BCA240CB0B1DB849D40DCE5FC8F2E3F711FF47E7B0E1A71CABBCB4C42E2651F48
2C194C301B4FFDE9F787F9AC37C620AD634E7D1BEE6BF1DC92ACB38C1E6FFC4F531F5E8959E5
5C5D6A97DAF9B11841EE4B14C4BA58E7F0DC9AFF440E2A5E61B046B0D47D4ED606B4055077BF
C0D7C033B3E4FB817A02BE0891FA360B62058CFABFA60198F426BB7CA31877E4273912547E17
38446C2816CCC6B796898310CE86F1F01654CF02B7E6F647E9A884041655A76D9D646E2E0098
B15123DE9ECE8580C5E8B36946F2AECBD1922D21D15092617486D2A7DA0419C430FF83A76428
D183C15D0520B821C22E0AA806EAEDD6DF9392B6DD93DB8F22072044883F7102DC2ABF3AB094
B1CFF83BFAFDBC0F115D1CA965885356039BD90C76A78BFF2B7F931EC1A762B750146183F408
0B7161D9E313C90A3D0BA031DCA89F5155EF2C77D1E9949D07A2A318ED5BB9F43EA2DF854DD1
5C45C09595450B0CC355DB139F6A15792D516FFBF05D2FFDE2CCB492BC5F8582C88695EB42FF
075F1393D04E19E05BBB51E286F578EE126792068106DB3960CA7E7DA8838C52381D1853E731
F46AFC759825CDFD1C50CCA5E63E1A24A9D3EB21A032CD4333648AB4B6725EF7EE644BC1C072
06312E241AE8C4206F8D211752AC7CB76F2569E2213C113A3D4F22772FB6C2DF9461DA1B36A0
860CF2DD52CEBA0CB8FA5134D94438458DC4EF5661660931F0A13A88452FABBA8805471B38D7
76FCFC616C602F91AD0072B92A13DA5808F716287712DE4F6ACC57630B3C4343C37C5156FB61
0F2455795CC9E6804DE0C7B6B16DA5B274460BDFAA1A5249A3219CAA1DBDA045CE35C3B34D62
8D0A6E043935F09635D6063592DFEE4E8713FB04A74E0BBF8BDD6EFDDD86D6EAB693DF65D7E7
1B96D3AB69D78763F6C06B6EE1FC2B8BFC274D33E58F7C13E46F884F64CD2FF2091D63D8D0D2
305704D42A18C353B55956F11057A920DC00A5C78EE5C61E0AB73272866A3B5C6A46683CD4F7
61F267FC8E98A5EE0E55A9D8CBA48CDE5215C96D0FB18F757705697C13055D7F2AF893A097B5
94FC5200A1FFF0D231487F94C6217AD21609874754AFB8DE70A84F92EB3999AD348EE6BAEFB4
76097FF1CB8BDAFCE224290BFAA04D3184D02EA2C8525232B1F62D8A3EBC5ED8D2AA1F7B009C
83D427E281551583FF6D1690692648D7E65E7C98B67C8D181CE0736F1518F1509C2B13EF0135
118FADB78E58FB01F90FD846FD9E7FDEA4A8CC481333305B1E954D0037FDFB31D34BDAFF1E1C
0AD0F30683BFCB8510C30ECA21008147A17589E72A8B2971C2C6E8D45259BE84E4884FA79791
F7BC3ABFD138B8B4556BB75E4F68BB934676F740E015396C5DDCD224834F53DCC17FB33BC79E
15374249C1D06A1BF20F3B29858DDB1CFD470449E098195AA1A64C187FBFE6488B89DB49851B
AB87C77B617543570E105C27E7AC73583F02D0541AFD6139AE5EBD8382464456731B67797884
12DFC026575E27A197C5295E3A261864C9AA91442ED12D3024DB79CD1025564F9CBF56862440
00BF2CAA92DF14DB97BD2A10535891FF3A84008209D9CAD7566B8800EE7287EDE867D79ECADA
749AA5E7AD22B01A9F211AB18E5F755E6736BB2FDB47E4152AAF887AFF350A7A74EB69430287
AFC58D46E2C171ABA4CCA01792B0DD4B0A67624D82B71B19C331E355A909EAC5BB94802233E6
E3310F97DA3C5D40EA74ED3CE0D283233D1C5907FE29DAD678A9C3309402167881D3DAA74E3F
E4255AC1A73F15F90DDB601D827332115538F1BF93811A35B441E4442327D7FA2DD901F3D66B
7E79E09F83F9BEF5F5FE1C01FEE76381AD3394861155CD08FDF2EC5778E4CBA57ACDEFE6A351
91C613CF12C946AD8B2B40B6026B5BD4B9CD909D1779782F4AF32D295B2E8F881A18D2CB0570
104768449EE2E960F082921BE9AD82731065B3C3EF18ABA3F9BEEE050545D766B4BB012CB05E
36C98916000B22F7DD0D60090FD5812D9C7E0B7F109EEB4C225C9B6260F687A39429E4EE4DCB
2B1C5F8CFAE108E005887B30A949DF06BCFC34700B69A5103330E400E4666A1D5C758B6D5C2A
D8A733882AC3CF1E6A1395534C3A9300371D3992436227635313531D453AE6142BC47F086F80
5FAAE0543B21D52962343B25F64BD46CA8F63F25BEC767324D38576447056A6F508EFB68E491
AF661B46F7BA81DA215FE797A16EF03CFA53DB0B51E39A7C71897AC5BA31D902964AAF3B148E
7ADA10FB7603D4C9B1585312DB95625D45A286228DBE2217D6BBA65C9A7DCBBDB7BACB5BEEFA
3C8A43F848F473D9BF37ABE92A2CA91D26707AC230F577F7A1618A02D2DCA08BB84B3343F917
5EBB3E89B36A46EB75B83B62DF50B0108D6118F790DABBDE765D53B27CAC6ABE7B5440325ADE
E21BE51B9367EB9CDF8FED87A081679E7AE6AEFBB6E6589CC42556FD865F312B54CFF53284CD
F8B442C4B3326EEB8D39ABB1E0D2E95B316E87B7615B0C37E908D4391F1AD9D2715E94BF8DE5
7A1C624512C23FBA4D519150B26A4F13BE2E9CED538D80EF807612D561DC8D3F5B602F4886B8
C9F2466C5C948EC6DAE5B87D00C03CAFF6C7C241F4B965A6C6368A30013EE2AD5E1E50009430
8AECC238F659E736965842B290ADE6F05B5152A27FBDE7A90FD97CD59509F5F05FAB13461BD7
374399BC6DA554ACD718E4F67D8696718FACF56D5AC10468CAC7833BA92C74BF186EC50FDBB0
43223974986E2012C1D18DF40F5A9C52FD3997DF5F9E5F3A827D50B6EBD6909E7A0DE29FB979
20A03E32422CD71D66BF5C52357A8D8EB241C6C8BE42B67CFAC2C3777A0FA43D2838DB8250E2
B5B8EFD3C36780B19339332F67D477CD3600B04C05B87B7A41D0DEF6BF82FADA771804A5A756
BEC34265B6FC9E11790F8D1306D36C0514F6BCC76E93B584BDF86384AC22A96E31549EEC6890
9FD34BFCC467CC742DFA628B15ABB7AA6A181DC3AC0FD08A20979480ABC06FCFBD81E7D4EA35
8839DB58C30C3A7EB5D698CCA371F7630939149EB897B24F6D957C084CF0E2932331FB5C0B50
1068B4551812A9B9ABD4EC27DF7CE824D672FFE6E5971ECF816F447482130819902D26039390
F84FB513D2D89662DEFD5725EB153A074C84DAB1D4D666D6E1A4AE2B078AC16F80CAA6314A1F
63FB6D7EB530CCD833EE1F4946790344CA86668CB3DE69C3013C73C971D7BF583095539DBE02
E8F18E2DA3BF9FDE9CC5A5E859F9E5BAC8721E36A1D50192140ED21FA6FCC212ED167A50E940
B38A0AB78D3053507500D768D1EA9C7BCC7B3100A05D1DB9350EE33C7A492F4543B45E25740A
A99A76A1DC7940B8B52883974B07A407DF7560CDF1B103C75746FCFC418580816597424C0AA3
6E0DD38EAF524E593512174A0EBCAC0488958B01C1199D786F93CCEFC14D219B2DBABD5B50C5
7AC6C195FE51A6FAC81DB1FAE5052F21B3AF4CE8280BDEB5F27E15F069ECE57B0B628858947E
BCF41C69D0C023D67CD21B9E0DB1366BA5ABEBFB9C98752A6C63CF1C8333D7185403199B82E9
E5FA15D33E646E63459352F829FC039EF185E004CC63FE21BFBEEE4C8102CEF70F56AAB4E35C
4A7AD51C85D985F42D54E4CF5678BA7EF4BB3C768056FD223FBD6AE0A390E0E7489F5582D4AD
805A6ED2E5CC0502BE6F58CEB1E3DE8CD4425A053F84FF85CA7A1B9C679B9B57457F91C441D9
28946925545234C45D58AE796A7F21B960C8DD3195854FF59E6914DCCA262AF6E5DB7F150976
B91527A1F0F00CAA0953E082F5DFEA46C0029BED4EFF22BE6A32A9BB591334B168DA599128F4
B31034E20C0EFD5E532B9DED85E5633AE8631E83EC1D6069FF76AA302B99F88E0E4070E4B93E
1CFE528123928AE67733BF6FE6068C22328F16AE3FA5B130D9651B531EA4E197AE3D3C169485
03F1842D967EB3C5504E13986933CC0A3228269139D68AAF3480875149E25ACD6AA8E14F5C21
FD12096E274A1CB1223159AE0B531804C1A8F8DBB9101D3D0E435292F0452990AC4A64605865
10253ED58CC6FC71EEA6EA99C6F96F029B65F1C24CF911A35076564CEF64DBBF82F87DE0C4F2
FAF3E56A1659D2B56DDA42A3F63E277645B9BCD5C92C05C8B05ADF7535B3AA4C341358C7C792
7B8E9937C087E5E142B14DBE5E5F709634AE97BC9F2AA82A2F3C3DC16B1ABBD1E3F33559F867
0E1DC70A9E3B0B717EA458518357740B75A9B2B9CB076E81BB95D786D4720DD59120200DFE86
0B6E40F2C723DADB84BAE83A80A7C874B9D36A1843D3AB1DC330EB986D25D6E036940F89670C
D41D7FF20A9E19EE36A1C334C779093950BEA2854369F4EF24DDE7B17E4581C9C2F5E5D749BF
C7A6A9433EF9DC465362BB2B252D7505369B40AB4ED1280C690599765D3F6C395D4F3955DC9E
7ADCACD0F85B34E33C1D5B0DA79E54132E115002728FBCC9DEF9AD99C3C72EF5FB77D883F47E
417BD26CC8A13824297BBE6102CF7F60013B3410E61D06F4D9AFE6D9EAFC92B97459A0433A89
28FD24240F6F3E388373EFAC1BEDCB5DAD56B55D248DFA546329CE77F4F94C388362E8361956
38066D636A1E9DE34A86088831A498A52821E2843D704BC01D386E7F268855AF107AB35982B5
9A474A271C205B19EF717C66CDCFFF8E53E207C2C1FBFB8129F045F0C150A05333787D5DD2D7
322B3EC6F9193A891C3C1B414F27FEA3635A1C1D88C21C18CDC91805F3214E8536500B67AC22
EE4FC1AAF6A12BE4F8FE82E021A734937F0A05EB3DE81D728121FA862A4993320C1FAFB719EF
1851929AC2EFBE7C1E8D2A3E35B25DBE28DAC5DDCE834663B196E17BE78FEF40BE1FF3885293
DC9B6DB2A79734080730556C0B64D66176078983B062CB073D32000E12E8CCE47FF23F877078
B5A42207A050C62E39733BCDF87F6B71E39758F531CF55A874FE76548CCF8ECD227D9C0D76DA
8F0EA5B1971E71559203F2C731BF31F9563A58D6D110EA507BB7734D3BAA443805C67207F333
7FFE88E0A052EAB7B73296E7011FBEBC3984ABF533821F38A1483B88EED29606B25619ACF5E2
1E6764DFAC4559E8AB2E8B987C05CB3F23F7A9B18FC54C10E59B1DCE3E3BEE7299F9E98CB58D
F0FB48AA79C6B87476E4BCB73DE1EB9603CEF10B6FF191174E23741CFC9711EE68311A8E739D
C52A1B69B6BD1AFD81DF4F6B1AE5DF916FAF6C6FA778F9330059FB88B5E97BA8B864E485B274
7A1A7CF32E259AB7737530E55B2FE980CCC088C3F5E2815E960BEAA9ECAD530436A2C0B86F3C
3AEF098A8DD927AD13F9FF34B87A1A9F07F455B913CF1147270ACC6DB471E53DC3715CFF25AC
42D6786C3E9D90EA77873B301CAB084B147271C0CDD6E088BF710114AC00E1D6D215E5445605
034B771390D0FF76D2F7DC341A065F905F258D223B0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark

%%EndProcSet
%%BeginProcSet: texps.pro
TeXDict begin /rf{findfont dup length 1 add dict begin{1 index /FID ne 2
index /UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics
exch def dict begin Encoding{exch dup type /integertype ne{pop pop 1 sub
dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}
ifelse}forall Metrics /Metrics currentdict end def[2 index currentdict
end definefont 3 -1 roll makefont /setfont load]cvx def}def
/ObliqueSlant{dup sin S cos div neg}B /SlantFont{4 index mul add}def
/ExtendFont{3 -1 roll mul exch}def /ReEncodeFont{/Encoding exch def}def
end
%%EndProcSet
TeXDict begin 40258431 52099146 1000 600 600 (labman.dvi)
@start /Fa 2 122 df<013F137C9038FFC1FF3A01C1E383803A0380F703C0390700F60F
000E13FE4813FC12180038EC0700003049C7FCA2EA200100005BA313035CA301075B5D14
C000385CD87C0F130600FC140E011F130C011B131C39F03BE038D8707113F0393FE0FFC0
260F803FC7FC221F7E9D28>120 D<EA01E0D807F8130ED80E3C131FD81C3E133F003814
3E12301270D8607E137ED8E07C137C12C013FC484813FC000014F812015B1401000314F0
13E0A21403000714E013C0A2140715C00003130FEBE01F143F3901F07F8038007FEFEB1F
8FEB001F1500A2003E133EA2007E5B5C387C01F0387003E0383007C0383C0F80D80FFEC7
FCEA03F0202C7E9D23>I E /Fb 3 104 df<EB7F803801FFE0000713F8487F487F487FA2
481480A2B612C0A96C1480A26C1400A26C5B6C5B6C5B000113E038007F801A1B7C9D23>
15 D<141F14FFEB03F0EB0FC0EB1F8014005B133EB3A2137E137C13FC485A485AEA7FC0
48C7FCEA7FC0EA03F06C7E6C7E137C137E133EB3A2133F7F1480EB0FC0EB03F0EB00FF14
1F18437BB123>102 D<12FCB47EEA0FE0EA01F0EA00FC137C137E133EB3A37F1480130F
EB07E0EB01FEEB007FEB01FEEB07E0EB0F80131F1400133EB3A3137E137C13FCEA01F0EA
0FE0EAFF8000FCC7FC18437BB123>I E /Fc 3 52 df<13381378EA01F8121F12FE12E0
1200B3AB487EB512F8A215267BA521>49 D<13FF000313E0380E03F0381800F848137C48
137E00787F12FC6CEB1F80A4127CC7FC15005C143E147E147C5C495A495A5C495A010EC7
FC5B5B903870018013E0EA0180390300030012065A001FB5FC5A485BB5FCA219267DA521
>I<13FF000313E0380F01F8381C007C0030137E003C133E007E133FA4123CC7123E147E
147C5C495AEB07E03801FF8091C7FC380001E06D7E147C80143F801580A21238127C12FE
A21500485B0078133E00705B6C5B381F01F03807FFC0C690C7FC19277DA521>I
E /Fd 6 62 df<147CEB01FEEB07C790380F8380EB1F0181EB3E00A2137EA2137C137EA2
14015D140392C9FC5C140E6D5A1418143802F090380FFFF05C6D5A04011300EE00FC6D6C
1470011F1560013F15E0D977F0495AD9E3F85CD801C31403260381FC91C7FC00075D48C6
6C130E486D130C486D131C003E6D6C5A007EECC03091381FE07000FE010F5B6F5AEC07F9
6EB45A6C6D90C712306E5A157F6C6C6D6C13604B6C13E03A3FC001EFE03C1FE003C7F803
C03C0FF01F83FE0F802707FFFE00B51200000101F8EB3FFE26003FC0EB07F034387DB53C
>38 D<14C01301EB0380EB0F00130E5B133C5B5BA2485A485AA212075B120F90C7FC5AA2
121E123EA3123C127CA55AB0127CA5123C123EA3121E121FA27E7F12077F1203A26C7E6C
7EA213787F131C7F130FEB0380EB01C01300124A79B71E>40 D<12C07E1270123C121C7E
120F6C7E6C7EA26C7E6C7EA27F1378137C133C133EA2131E131FA37F1480A5EB07C0B0EB
0F80A514005BA3131E133EA2133C137C137813F85BA2485A485AA2485A48C7FC120E5A12
3C12705A5A124A7CB71E>I<156015F0B3A4007FB812C0B912E0A26C17C0C800F0C8FCB3
A4156033327CAB3C>43 D<EB3FC0EBFFF0000313FC380F80FF391E007F80001CEB3FC048
EB1FE048130F15F00060130712FC6C14F87E1403A3007E1307123CC7FC15F0A2140F15E0
EC1FC0A2EC3F801500147E5C495A5C495A495A495A49C7FC133E133C4913185B485A4848
1330485A48C7FC001C1470001FB512F05A5AB612E0A31D327CB126>50
D<007FB812C0B912E0A26C17C0CCFCAC007FB812C0B912E0A26C17C033147C9C3C>61
D E /Fe 1 111 df<000F13FC381FC3FF3931C707803861EC0301F813C0EAC1F0A213E0
3903C00780A3EC0F00EA0780A2EC1E041506D80F00130C143C15181538001EEB1C70EC1F
E0000CEB07801F177D9526>110 D E /Ff 6 57 df<13FF000313C0380781E0380F00F0
001E137848133CA248131EA400F8131FAD0078131EA2007C133E003C133CA26C13786C13
F0380781E03803FFC0C6130018227DA01E>48 D<13E01201120712FF12F91201B3A7487E
B512C0A212217AA01E>I<EA01FC3807FF80381C0FC0383003E0386001F0EB00F812F86C
13FCA2147C1278003013FCC7FC14F8A2EB01F0EB03E014C0EB0780EB0F00131E13385B5B
3801C00CEA0380380600185A5A383FFFF85AB512F0A216217CA01E>I<13FF000313C038
0F03E0381C00F014F8003E13FC147CA2001E13FC120CC712F8A2EB01F0EB03E0EB0FC038
01FF00A2380003E0EB00F01478147C143E143F1230127812FCA2143E48137E0060137C00
3813F8381E03F0380FFFC00001130018227DA01E>I<EB0FC0EB7FF03801F0383803C018
3807803C380F007C121E001C1338003C1300A2127C1278EB7FC038F9FFE038FB80F038FE
0038143C48131EA248131FA41278A36C131EA2001C133C001E13386C1370380781E03801
FFC038007F0018227DA01E>54 D<137F3803FFC0380781E0380E00704813380018131C12
38A3123C003F1338381FC078EBE0F0380FF9E03807FF80120114C0000713F0380F0FF838
1C03FC383801FE3870007E141F48130F1407A314060070130E0078130C6C1338001F13F0
3807FFC0C6130018227DA01E>56 D E /Fg 137[33 37 22 26 26
2[29 37 52 18 2[18 1[33 1[26 33 27 1[29 94[35 2[{
 TeXBase1Encoding ReEncodeFont }16 66.666667 /Palatino-Italic
rf /Fh 107[33 33 24[33 37 34 55 38 40 22 28 26 37 40
36 39 59 19 37 1[19 39 37 22 32 41 29 37 33 3[22 1[22
44 3[48 1[41 5[55 4[22 5[47 8[17 33 33 1[33 33 33 33
33 33 33 1[17 22 17 2[22 22 18 35[40 40 2[{
 TeXBase1Encoding ReEncodeFont }53 66.666667 /Palatino-Roman
rf /Fi 14 80 df<1C0C1C1E1C3E1C7E1CFCF301F8F303F0F307E0F30FC0F31F80F33F00
1B7E63505A505A505A505A505A50C7FC1A7E624F5A4F5A4F5A4F5A4F5A4FC8FC197E614E
5A4E5A4E5A4E5A4E5A4EC9FC187E604D5A4D5A4D5A4D5A4D5A4DCAFC177E5F4C5A4C5A4C
5A4C5A4C5A4CCBFC167E5E4B5A4B5A4B5A4B5A4B5A4BCCFC157E5D4A5A4A5A4A5A4A5A4A
5A4ACDFC147E5C495A495A495A495A495A49CEFC137E5B485A485A485A485A485A48CFFC
127E5A5A1260575782D453>0 D<1C0C1C3E1CFEF303FCF30FF8F33FE0F3FF80973803FE
00F20FF8F23FE0F2FF80DF03FEC7FCF10FF8F13FE0F1FF80DE03FEC8FCF00FF8F03FE0F0
FF80DD03FEC9FCEF0FF8EF3FE0EFFF80DC03FECAFCEE0FF8EE3FE0EEFF80DB03FECBFCED
0FF8ED3FE0EDFF80DA03FECCFCEC0FF8EC3FE0ECFF80D903FECDFCEB0FF8EB3FE0EBFF80
D803FECEFCEA0FF8EA3FE0EA7F8000FECFFC12F81260572E82AB53>8
D<1302130380497E8080497E8080497E15804913C015E015F04913F815FC90B512FE15FF
4814F815C048EBFE0014F84813C091C7FCEA0FFC13F0EA1FC090C8FC123C123012405A20
20809F53>I<1C1C1CFE1B07F33FFC973801FFF0080F138097387FFC00963803FFE0071F
90C7FCF1FFF8060713C0DE3FFEC8FC943801FFF0050F1380DD3FFCC9FC933801FFE0040F
90CAFCEE7FF8923803FFE0031F90CBFCEDFFF8020713C0DA3FFECCFC903801FFF0010F13
80D97FFCCDFC3803FFE0001F90CEFCEA7FF8EAFFC048CFFC12705720829D53>16
D<15011502150C153C15F81403EC0FF0143FECFFE01303011F13C0137F0003B51280121F
B612007E6C5B7E6C5B7E7E6C5B7E6D5A133F131F6D5A130713036D5A1300144020204DD2
53>18 D<1506151E157EEC01FE1407143F14FF1307133F48B5FC120FB6FCA2120F1201EA
003F13071300143F14071401EC007E151E15061F187E8B53>27 D<1640ED0F80913803FF
0090380FFFFEB65A6C5C5D6C5C5D6C5C92C7FC6C5B5C6C5B5C6C5BA26C5B5C6C90C8FC5B
137CA213381330221950A953>42 D<12C012F012FCB4FC13C013F813FEEBFFC014F814FF
15E015FEA215E0150014F814C049C7FC13F813C090C8FC12FC12F012C01F184E8B53>45
D<12F0D8FFF0EB01C090B612806CECFE005D15F06C5C158092C7FC6C5B14F85C6C5B5C5C
6C48C8FC5B5B6C5A5B5B6C5A90C9FC2217509C53>49 D<1318A4133CA3137EA313FFA348
1380A34813C0A24813E0A34813F0A24813F8A24813FCA24813FEA2B6FCA2181F8CD053>
54 D<B6FCA26C13FEA26C13FCA26C13F8A26C13F0A26C13E0A36C13C0A26C1380A36C13
00A3137EA3133CA31318A4181F8CA053>63 D<126012F87E127E7E6C7E6C7E6C7E6C7E6C
7E6C7E137E7F6D7E6D7E6D7E6D7E6D7E6D7E147E806E7E6E7E6E7E6E7E6E7E6E7E157E81
6F7E6F7E6F7E6F7E6F7E6F7E167E82707E707E707E707E707E707E177E83717E717E717E
717E717E717E187E84727E727E727E727E727E727E197E85737E737E737E737E737E737E
1A7E86747E747E747E747E747E747E1B7E87F31F80F30FC0F307E0F303F0F301F8F300FC
1C7E1C3E1C1E1C0C575782D453>I<126012F0A27EA21278A2127CA2123CA2123EA2121E
A2121FA27EA27FA21207A27FA21203A27FA21201A27FA21200A27FA21378A2137CA2133C
A2133EA2131E131FA27FA280A21307A280A21303A280A21301A280A21300A280A21478A2
147CA2143CA2143EA2141EA2141FA280A21580A21407A2EC0300195782D415>67
D<1208A2120CA2120E120FA27FA27F7FA27F487EA27F7FA27F148014C0A24813E014F014
F814FC14FE4813FF14FE14E0EBFE0013E000FEC7FC12E0182284D115>79
D E /Fj 4 40 df[<EA7FFFB67E15FF6C15F8D80001ECFF8090C714F80301EBFF80DB00
0F13F0040013FE94380FFFC0050013F8F01FFF060313C09538007FF8F10FFE963801FF80
9638007FE0F20FF8F203FE973800FF80F33FE0F30FF8F303FEF300FFF43FC0F40FF0F403
F8F401FEF4007FF51FC0777EF503F8777EF5007E787E787EF607E0F603F8787EF6007E8B
797EF70FE0797EF701F8797E207E8C7A7E7A7E7A7E7A7E7A7E7A7E217E8D7B7E210F7B7E
8E7B7E7B7E7B7E227C8E223F7C7E220F7C7E8F7C7E22017C7E8F237C8F233F8F7D7EA17E
23077D7EA27D7EA27D7EA17EA1127CA17EA2A17EA2A16C7EA2A16C7EA2A16C7EA2A16C7E
A2A11200A17FA2A1137CA2A1133CA1133EA2A17FA2A17FA180A2A11307A180A2A11303A1
80A2A11301A180A2A11300A2A180A2A11478A2A1147CA2A1143CA3A1143EA2A1141EA3A1
141FA2A180A4A11580A2A11407A8A115C0A2A11403ADA1EC0180>170
170 294 131 332 36 D[<A1EC0180A1EC03C0ADA11407A2A11580A8A1140FA2A11500A4
A15CA2A1141EA3A1143EA2A1143CA3A1147CA2A11478A2A114F8A2A15CA2A11301A2A15C
A11303A2A15CA11307A2A15CA1130FA2A191C7FCA15BA2A1133EA2A1133CA1137CA2A15B
A2A15BA11201A2A1485AA2A1485AA2A1485AA2A148C8FCA2A1123EA2A15AA112FCA15A59
5AA2595AA2595A230FA15A59C9FC6B233E6B23FC6B585A2203585A6B585A221F58CAFC22
3E6A22FC575A575A575A6A575A211F57CBFC217E69565A565A565A565A565A56CCFC207E
68555AF707F0555AF71F8055CDFC1F7E545A545AF607E0F61FC0545A0C7ECEFC535A535A
F50FE0535A0B7FCFFCF401FEF403F8F40FF0F43FC00AFFD0FCF303FEF30FF8F33FE0F3FF
80E003FED1FCF20FF8F27FE0963801FF80DF0FFED2FCF17FF8953803FFC0061F90D3FCF0
FFF8050F13C0DDFFFED4FC040F13F04BB5128092B500F8D5FC49B61280007FB600F8D6FC
B7D7FC15806C90D7C7FC>170 170 294 297 332 I[<126012F0AD7EA21278A7127CA212
3CA5123EA2121EA3121FA27EA27FA21207A27FA21203A27FA212017FA212007FA2137813
7CA2133C133EA27FA27F80A26D7EA2130380A26D7EA26D7EA2147CA280A280A26E7E8114
076E7EA26E7EA26E7E81157C81153F816F7E8215076F7E826F7E1500167C167E8282707E
83707E707E707E1600177C177E83717E717E717E717E717E717E187E84727E727E727E72
7EF001FC727E193F737E737EF107F0737EF100FC1A7F747EF20FC0F207F0747EF200FE1B
7FF31FC0F30FF0F303F8F301FE9838007F80F41FE0F40FF8F403FE993800FF80F53FE0F5
0FF8F503FE9A3800FFC0F63FF0F60FFE9B3803FF809B38007FF0F71FFE9C3803FFE00D00
13FC9D381FFFC00E0313FE9D39003FFFF00F07EBFFC0E7007FEBFFF0100391B51280E800
1F15C0FB007FA1D8001F1380>170 170 128 297 332 I[<A190381FFF80A1007FB512C0
111FB6FC1003B71280107F02F0C7FC0F07B500C0C8FC0F3F01F0C9FC9D2603FFFECAFC0E
1F13C0E6FFFCCBFC0D0313E0E51FFECCFCF77FF09B3803FF80E40FFECDFCF63FF0F6FFC0
E303FECEFCF50FF8F53FE0F5FF80E203FECFFCF40FF8F41FE0F47F80E101FED0FCF303F8
F30FF0F31FC0097FD1FC1BFEF203F8505AF20FC0F23F8050D2FC1AFCF103F84F5AF10FC0
4F5A4FD3FC19FE4E5AF003F04E5A4E5A4E5A4ED4FC187E604D5A4D5A4D5A4D5A4D5A4DD5
FC177E177C5F16014C5A4C5A4C5A5F4CD6FC5E167E167C5E15014B5A5E4B5A150F5E4BD7
FC5D153E5D15FC5D4A5AA24A5AA24A5A140F5D4AD7C6FCA2143EA25CA25CA2495AA2495A
A25C1307A2495AA291D7C7FC5BA2133EA2133C137CA2137813F8A25B1201A25B1203A25B
A21207A25BA2120FA290D7C8FCA25AA2121EA3123EA2123CA5127CA21278A712F8A25AAD
1260>170 170 128 131 332 I E /Fk 11 123 df<171C177EEE01FEEE07FCEE1FF0EE
7FC0923801FF00ED07FCED1FF0ED7FC04A48C7FCEC07FCEC1FF0EC7FC04948C8FCEB07FC
EB1FF0EB7FC04848C9FCEA07FCEA1FF0EA7FC048CAFCA2EA7FC0EA1FF0EA07FCEA01FF38
007FC0EB1FF0EB07FCEB01FF9038007FC0EC1FF0EC07FCEC01FF9138007FC0ED1FF0ED07
FCED01FF9238007FC0EE1FF0EE07FCEE01FEEE007E171C2F2E7AA93C>60
D<1530157815F8A215F01401A215E01403A215C01407A21580140FA215005CA2143EA214
3C147CA2147814F8A25C1301A25C1303A25C1307A2495AA291C7FC5BA2131E133EA2133C
137CA2137813F8A25B1201A25B1203A2485AA25B120FA290C8FC5AA2121E123EA2123C12
7CA2127812F8A25A12601D4B7CB726>I<127012FCB4FCEA7FC0EA1FF0EA07FCEA01FF38
007FC0EB1FF0EB07FCEB01FF9038007FC0EC1FF0EC07FCEC01FF9138007FC0ED1FF0ED07
FCED01FF9238007FC0EE1FF0EE07FCEE01FEA2EE07FCEE1FF0EE7FC0923801FF00ED07FC
ED1FF0ED7FC04A48C7FCEC07FCEC1FF0EC7FC04948C8FCEB07FCEB1FF0EB7FC04848C9FC
EA07FCEA1FF0EA7FC048CAFC12FC12702F2E7AA93C>I<EB01F8EB07FE90381F071C9038
7C03FEEBF801EA01F00003130048485B5B120F381F80015DEA3F00A21403485C127EA214
0700FE5C5A1640020F1360EDC0E016C0127CEC1FC1023F1380003CEB7F81003EEBEF833A
1E01C7C300390F0787C73907FE03FE3900F800F823227EA029>97
D<133FEA1FFFA25B1200A35BA21201A25BA21203A25BA21207A2EBE0F8EBE3FF390FEF07
809038FC03C001F813E0EBF001D81FE013F013C0138015F8123FA21300A248130315F012
7EA2140700FE14E05AA2EC0FC0A2EC1F80007C14005C147E003C137C003E5B381E01F038
0F07C06CB4C7FCEA00FC1D357EB321>I<147F903803FFC090380FC0F090383F0038137C
4913F83801F0013803E0031207EA0FC090388001F0001F90C7FC123F90C8FCA25A127EA4
5AA3127C150C151C15386C147015E06CEB03C0390F800F003807C07E3801FFF038007F80
1E227EA021>I<ED01F815FFA216F01507A316E0A2150FA216C0A2151FA21680A2153FA2
D901F81300EB07FE90381F077F90387C03FF496C5AEA01F000031300485A495B120F381F
8001A2D83F005BA214035A007E5CA2140712FE485C1640020F136016E0EDC0C0127CEC1F
C1023F1380003CEB7F81003EEBEF833A1E01C7C300390F0787C73907FE03FE3900F800F8
25357EB328>I<D801E013FE3A07F803FF803A0E3E0F07E0001C90383C03F039181F7001
003813E026303FC07F12700060138014001503D8E07F5CEA407E1200150701FE5C5B150F
5E120149131FEE8080EE81C00003023F13804914011603037F13000007147E495CED3E0E
5E000FEC1E3849EB0FF0D80380EB03C02A227EA02E>110 D<90391F801F8090397FE07F
E09039E0F0E0703A01C0F9C0F83903807D833807007F000E1403000C15F0001C137E0018
EC01C002FEC7FC00385B1210C7FC13015CA31303A25C1640010714E016C0001C5B007E14
01010F148000FE1403011FEB0700011B130E39F839F01C397070F878393FE07FE0390F80
1F8025227EA02C>120 D<13F0D803FCEB01C0D8071EEB03E0D80E1F1307121C00381380
0030140F013F14C000701300126049131FD8E07E14801240EA00FE49133F000115005BA2
5D0003147E5BA215FE5D5BA214015DEBF00314070001130F3900F83FF0EB3FFBEB0FC3EB
00075DA20007130FD81F805B003F495AA24AC7FCEB007E003E137C00385B381803F0381E
07C0D807FFC8FCEA01F823317EA026>I<903807800390381FE00790383FF00690387FF8
0E9038FFFC1C48EBFE789038E03FF03803800190C712E0EC01C0C7EA0380EC0700140E14
3C14705C495A495A49C7FC130E133C0170130C49131C484813184848133848C71278D80E
C013F0380FFE03391F3FFFE0D8381F13C0486C1380D86007130038E003FE38C000F02022
7DA024>I E /Fl 9 111 df<007FB712FCB812FEA26C16FC2F047A943C>0
D<0060153000F815F86C1401007EEC03F06CEC07E06C6CEB0FC06C6CEB1F806C6CEB3F00
6C6C137E6C6C5B6C6C485A90387E03F06D485A90381F8FC090380FDF806DB4C7FC6D5A6D
5AA2497E497E90380FDF8090381F8FC090383F07E090387E03F0496C7E48486C7E484813
7E48487F4848EB1F804848EB0FC048C7EA07E0007EEC03F048EC01F84814000060153025
2475A43C>2 D<130E131FA639700E01C000F8EB03E000FE130F00FF131F397F8E3FC039
1FEEFF003803FFF8C613E0EB3F80A2EBFFE0000313F8381FEEFF397F8E3FC039FF0E1FE0
00FE130F00F813030070EB01C0D8001FC7FCA6130E1B207BA226>I<013F16402601FFE0
15E04813F8487F4813FF4880D83FC06D1301273E001FE014C048D907F8130300786D6C13
070070D900FFEB0F8000F091387FE07F486EB512006F5B03075B6F5B03005B0040ED1F80
33127C9B3C>24 D<140C141E143FA24A7EA34A7EA2903801F3E0A2903803E1F0A214C001
077FA290380F807CA249487EA2011E131E013E131FA2496D7EA2496D7EA2491303000181
A248486D7EA248486D7EA2491478000F157CA248C87EA2003E81A2003C81007C1680A248
ED07C0A24815030060ED01802A307CAD33>94 D<EC07E0143FECFE00EB03F8495A495A5C
131F5CB3A5133F91C7FC137E5BEA03F8EA7FE048C8FCEA7FE0EA03F8C67E137E7F80131F
B3A580130F806D7E6D7EEB00FEEC3FE014071B4B7BB726>102 D<12FCEAFFC0EA07F0EA
01FC6C7E137F7F80131FB3A580130F6D7E6D7EEB01FC9038007FC0EC1FE0EC7FC0903801
FC00EB03F0495A495A131F5CB3A5133F91C7FC5B13FE485AEA07F0EAFFC000FCC8FC1B4B
7BB726>I<126012F0B3B3B3B31260044B78B715>106 D<126012F07EA21278127CA2123C
123EA2121E121FA27E7FA212077FA26C7EA212017FA212007FA21378137CA2133C133EA2
131E131FA27F80A26D7EA2130380A2130180A2130080A21478147CA2143C143EA280A280
1580A2140715C0A2140315E0A2140115F0A2140015F8A2157815301D4B7CB726>110
D E /Fm 17 94 df<017C166048B416F02607C3801401260F81C01403D900E04A5A001E
01784A5A003E6D141F003C013FEC7F80007C90271BE003FFC7FC0218B512BF007891381F
FC3E00F8011CC75A020C14FC5F4C5A16035F4C5A160F5F4CC8FC021C5B00780118133E00
7C5D16FC003C01385B003E90383001F0001EEB70036C01E05B903981C007C03907C3800F
2601FF005BD8007C49C9FC90C748EB07C0033EEB1FF04BEB3C3803FCEBF81C4B497E913A
01F001E00602030103130703E0497E912607C0071480020F15011580DA1F00018013C04A
010F1300143E5C14FC5C495A13035C495A130F4A0107130149C701C013805B013E160349
0203140001FC6F5A49020113064848913800F00E0003705A49ED3C3849ED1FF06C48ED07
C03A437BBD45>37 D<146014E0EB01C0EB0380EB0700130E131E5B5BA25B485AA2485AA2
12075B120F90C7FCA25A121EA2123EA35AA65AB2127CA67EA3121EA2121F7EA27F12077F
1203A26C7EA26C7E1378A27F7F130E7FEB0380EB01C0EB00E01460135278BD20>40
D<12C07E12707E7E7E120F6C7E6C7EA26C7E6C7EA21378A2137C133C133E131EA2131F7F
A21480A3EB07C0A6EB03E0B2EB07C0A6EB0F80A31400A25B131EA2133E133C137C1378A2
5BA2485A485AA2485A48C7FC120E5A5A5A5A5A13527CBD20>I<15301578B3A6007FB812
F8B912FCA26C17F8C80078C8FCB3A6153036367BAF41>43 D<EB03F8EB1FFF90387E0FC0
9038F803E03901E000F0484813780007147C48487FA248C77EA2481580A3007EEC0FC0A6
00FE15E0B3007E15C0A4007F141F6C1580A36C15006D5B000F143EA26C6C5B6C6C5B6C6C
485A6C6C485A90387E0FC0D91FFFC7FCEB03F8233A7DB72A>48 D<EB01C013031307131F
13FFB5FCA2131F1200B3B3A8497E007FB512F0A31C3879B72A>I<EB0FF0EB7FFE48B57E
3903E03FE0390F000FF0000E6D7E486D7E486D7E123000706D7E126012FCB4EC7F807FA5
6CC7FC121CC8FCEDFF00A34A5A5D14035D4A5A5D140F4A5A4A5A92C7FC147C5C495A495A
495A495A91C8FC011EEB01805B5B49130348481400485A485A000EC75A000FB6FC5A5A48
5CB6FCA321387CB72A>I<EB07F8EB3FFF4913C03901F80FF03903C007F848486C7E380E
0001000F80381FE0006D7FA56C5A6C5AC85A1401A25D4A5AA24A5A5DEC0F80027EC7FCEB
1FFCECFF809038000FE06E7EEC01FC816E7EED7F80A216C0A2153F16E0A2121EEA7F8048
7EA416C049137F007F1580007EC7FC0070ECFF006C495A121E390F8003F83907F00FF000
01B512C06C6C90C7FCEB0FF8233A7DB72A>I<1538A2157815F8A2140114031407A2140F
141F141B14331473146314C313011483EB030313071306130C131C131813301370136013
C01201EA038013005A120E120C5A123812305A12E0B712F8A3C73803F800AB4A7E0103B5
12F8A325397EB82A>I<0006140CD80780133C9038F003F890B5FC5D5D158092C7FC14FC
38067FE090C9FCABEB07F8EB3FFE9038780F803907E007E090388003F0496C7E12066E7E
C87EA28181A21680A4123E127F487EA490C71300485C12E000605C12700030495A00385C
6C1303001E495A6C6C485A3907E03F800001B5C7FC38007FFCEB1FE0213A7CB72A>I<EC
3FC0903801FFF0010713FC90380FE03E90383F800790387E001F49EB3F804848137F485A
A2485A000FEC3F0049131E001F91C7FCA2485AA3127F90C9FCEB01FC903807FF8039FF1E
07E090383801F0496C7E01607F01E0137E497FA249148016C0151FA290C713E0A57EA56C
7E16C0A2121FED3F807F000F15006C6C5B15FE6C6C5B6C6C485A3900FE07F090383FFFC0
6D90C7FCEB03FC233A7DB72A>I<12301238123E003FB612E0A316C05A168016000070C7
12060060140E5D151800E01438485C5D5DC712014A5A92C7FC5C140E140C141C5CA25CA2
14F0495AA21303A25C1307A2130FA3495AA3133FA5137FA96DC8FC131E233B7BB82A>I<
EB03F8EB1FFF017F13C09038FC07F03901E001F848486C7E4848137C90C77E48141E000E
141F001E80A3121FA27F5D01E0131E6C6C133E01FC133C6D5B6C6C6C5AECC1E06CEBF3C0
6C01FFC7FC6C5BEB3FFF6D13C081017F13F801F07F3903E07FFE3907801FFF48486C1380
481303003E6D13C0003CEB007F007C143F0078EC0FE000F814075A1503A21501A36C15C0
12781503007C15806CEC07006C5C6C6C131ED807E0137C3903F803F0C6B55A013F1380D9
07FCC7FC233A7DB72A>I<EB03F8EB1FFF017F13C09038FC07E03903F803F048486C7E48
486C7E49137E121F48487FA2007F158090C7FCA248EC1FC0A616E0A56C143FA27F123F00
1F147FA26C6C13FF6C6C13DF000313013901F0039F3900FC0F1FD93FFC13C0EB07F090C7
FC153F1680A316005D000F147E487E486C5BA24A5A4A5A49485A6C48485A001C495A260F
807FC7FC3807FFFC000113F038003FC0233A7DB72A>I<007FB812F8B912FCA26C17F8CC
FCAE007FB812F8B912FCA26C17F836167B9F41>61 D<EAFFF8A4EAF000B3B3B3B3A3EAFF
F8A40D5378BD17>91 D<EAFFF8A4EA0078B3B3B3B3A3EAFFF8A40D537FBD17>93
D E /Fn 20 123 df<121C127FEAFF80A213C0A3127F121C1200A412011380A212031300
5A1206120E5A5A5A12600A19798817>59 D<EF0380EF0FC0173FEFFF80933803FE00EE0F
F8EE3FE0EEFF80DB03FEC7FCED0FF8ED3FE0EDFF80DA03FEC8FCEC0FF8EC3FE0ECFF80D9
03FEC9FCEB0FF8EB3FE0EBFF80D803FECAFCEA0FF8EA3FE0EA7F8000FECBFCA2EA7F80EA
3FE0EA0FF8EA03FEC66C7EEB3FE0EB0FF8EB03FE903800FF80EC3FE0EC0FF8EC03FE9138
00FF80ED3FE0ED0FF8ED03FE923800FF80EE3FE0EE0FF8EE03FE933800FF80EF3FC0170F
EF0380323279AD41>I<150C151E153EA2153C157CA2157815F8A215F01401A215E01403
A215C01407A21580140FA215005CA2141E143EA2143C147CA2147814F8A25C1301A25C13
03A2495AA25C130FA291C7FC5BA2131E133EA2133C137CA2137813F8A25B1201A25B1203
A25B1207A25B120FA290C8FC5AA2121E123EA2123C127CA2127812F8A25A12601F537BBD
2A>I<126012FCB4FCEA7FC0EA1FF0EA07FCEA01FF38007FC0EB1FF0EB07FCEB01FF9038
007FC0EC1FF0EC07FCEC01FF9138007FC0ED1FF0ED07FCED01FF9238007FC0EE1FF0EE07
FCEE01FF9338007F80EF1FC0A2EF7F80933801FF00EE07FCEE1FF0EE7FC04B48C7FCED07
FCED1FF0ED7FC04A48C8FCEC07FCEC1FF0EC7FC04948C9FCEB07FCEB1FF0EB7FC04848CA
FCEA07FCEA3FF0EA7FC048CBFC12FC1270323279AD41>I<1760177017F01601A21603A2
1607160FA24C7EA216331673166316C3A2ED0183A2ED0303150683150C160115181530A2
1560A215C014011580DA03007FA202061300140E140C5C021FB5FC5CA20260C7FC5C8349
5A8349C8FC1306A25BA25B13385B01F01680487E000716FFB56C013F13FF5EA2383C7DBB
3E>65 D<147E903803FF8090390FC1C38090391F00EFC0017E137F49133F485A4848EB1F
8012075B000F143F48481400A2485A5D007F147E90C7FCA215FE485C5AA214015D48150C
A21403EDF01C16181407007C1538007E010F1330003E131F027B13706C01E113E03A0F83
C0F9C03A03FF007F80D800FCEB1F0026267DA42C>97 D<133FEA1FFFA3C67E137EA313FE
5BA312015BA312035BA31207EBE0FCEBE3FF9038E707C0390FFE03E09038F801F001F013
F8EBE000485A15FC5BA2123F90C7FCA214015A127EA2140312FE4814F8A2140715F05AEC
0FE0A215C0EC1F80143F00781400007C137E5C383C01F86C485A380F07C06CB4C7FCEA01
FC1E3B7CB924>I<EC3FC0903801FFF0903807E03C90380F800E90383F0007017E131F49
137F484813FF485A485A120F4913FE001F143848481300A2127F90C8FCA35A5AA45AA315
031507007E1406150E003E143C003F14706C14E0390F8007C03907C03F003801FFF83800
3FC020267DA424>I<163FED1FFFA3ED007F167EA216FEA216FCA21501A216F8A21503A2
16F0A21507A2027E13E0903803FF8790380FC1CF90381F00EF017EEB7FC049133F485A48
48131F000715805B000F143F485A1600485A5D127F90C7127EA215FE5A485CA21401A248
ECF80CA21403161CEDF0181407007C1538007E010F1330003E131F027B13706C01E113E0
3A0F83C0F9C03A03FF007F80D800FCEB1F00283B7DB92B>I<EC3FC0903801FFF0903807
E07890381F801C90387E001E49130E485A485A1207485A49131E001F141C153C484813F8
EC03E0007FEB3FC09038FFFE0014E090C8FC5A5AA7007E140315071506003E140E153C6C
14706C6C13E0EC07C03903E03F003801FFF838003FC020267DA427>I<EB03F0EA01FFA3
EA00075CA3130F5CA3131F5CA3133F91C9FCA35B90387E03F8EC0FFF91383C0F809039FE
F007C0D9FDC07FEBFF80EC0003485A5BA249130712035BA2150F00075D5BA2151F000F5D
5B153F93C7FC121F4990387F0180157EEDFE03003F02FC130090C7FC5EEDF80648150E00
7E150C161C5E00FEEC787048EC3FE00038EC0F80293B7CB930>104
D<14E0EB03F8A21307A314F0EB01C090C7FCAB13F8EA03FEEA070F000E1380121C121812
381230EA701F1260133F00E0130012C05BEA007EA213FE5B1201A25B12035BA200071318
13E01438000F133013C01470EB806014E014C01381EB838038078700EA03FEEA00F81539
7EB71D>I<EB0FC0EA03FF5AA2EA001F1480A2133FA21400A25BA2137EA213FEA25BA212
01A25BA21203A25BA21207A25BA2120FA25BA2121FA25BA2123FA290C7FCA25AA2EA7E03
A2EAFE07130612FCA2130E130C131C1318EA7C38EA3C70EA1FE0EA0780123B7DB919>
108 D<D803E0137F3A07F801FFE03A0E3C0781F03A1C3E1E00F826383F387F00305B4A13
7C00705B00605BA200E090C712FC485A137EA20000140101FE5C5BA2150300015D5B1507
5E120349010F133016C0031F13700007ED80605B17E0EE00C0000F15014915801603EE07
00001FEC0F0E49EB07FC0007C7EA01F02C267EA432>110 D<90390F8003F090391FE00F
FC903939F03C1F903A70F8700F80903AE0FDE007C09038C0FF80030013E0000149130301
8015F05CEA038113015CA2D800031407A25CA20107140FA24A14E0A2010F141F17C05CEE
3F80131FEE7F004A137E16FE013F5C6E485A4B5A6E485A90397F700F80DA383FC7FC9038
7E1FFCEC07E001FEC9FCA25BA21201A25BA21203A25B1207B512C0A32C3583A42A>112
D<3903E001F83907F807FE390E3C1E07391C3E381F3A183F703F800038EBE07F0030EBC0
FF00705B00601500EC007E153CD8E07F90C7FCEAC07EA2120013FE5BA312015BA312035B
A312075BA3120F5BA3121F5B0007C9FC21267EA425>114 D<01F816F0D803FE9138E001
F8D8070F903801F003000ED9800314FC121C12180038020713010030EDE000D8701F167C
1260030F143CD8E03F163800C001005B5BD8007E131F183001FE5C5B033F147000011760
4991C7FCA218E000034A14C049137E17011880170318005F03FE1306170E000101015C01
F801BF5B3B00FC039F8070903A7E0F0FC0E0903A1FFC03FFC0902703F0007FC7FC36267E
A43B>119 D<903907E001F090391FF807FC9039783E0E0F9039E01F1C1FD801C0903838
3F803A03800FF07F0100EBE0FF5A000E4A1300000C157E021F133C001C4AC7FC1218A2C7
123FA292C8FCA25CA2147EA214FEA24A130CA20101141C001E1518003F5BD87F81143801
835C00FF1560010714E03AFE0E7C01C0D87C1C495A2778383E0FC7FC391FF00FFC3907C0
03F029267EA42F>I<13F8D803FE1470D8070F14F8000EEB8001121C1218003814030030
15F0EA701F1260013F130700E0010013E012C05BD8007E130F16C013FE5B151F00011580
5BA2153F000315005BA25D157EA315FE5D1401000113033800F80790387C1FF8EB3FF9EB
0FE1EB00035DA2000E1307D83F805B007F495AA24A5A92C7FCEB003E007C5B00705B6C48
5A381E07C06CB4C8FCEA01FC25367EA429>I<D901E01360D90FF813E0496C13C090383F
FE0190397FFF038090B5EA07009038F81FFF3901E003FE9038C0001C495B5DC85A4A5A4A
5A4AC7FC140E5C5C14F0495AEB038049C8FC130E5B4913035B495B484813064848130E48
C75AD80FFC137C391FFF81F8381E0FFFD838075B486C5B00605CD8E00190C7FC38C0007C
23267DA427>I E /Fo 119[45 13[45 45 45 45 45 45 45 45
45 1[45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45
45 45 1[45 1[45 45 45 45 45 45 45 45 45 45 45 45 45 45
45 45 2[45 45 45 45 45 45 45 45 45 1[45 45 45 45 45 45
45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45
45 45 45 2[45 45 33[{ TeXBase1Encoding ReEncodeFont }83
75.000000 /Courier rf /Fp 133[50 55 50 83 55 61 33 44
39 61 61 55 61 89 33 61 1[33 61 55 39 50 61 44 61 50
7[66 1[100 1[78 66 61 72 1[61 83 83 100 61 2[39 83 2[61
83 72 66 78 7[50 50 50 50 50 50 50 50 50 50 29 25 33
3[33 33 2[89 34[61 2[{ TeXBase1Encoding ReEncodeFont }60
100.000003 /Palatino-Bold rf /Fq 104[75 37 1[37 37 24[37
42 39 62 42 45 24 32 30 42 45 41 43 66 22 42 17 22 43
42 25 36 46 33 41 37 21 2[25 1[25 50 50 1[75 54 58 46
39 50 1[45 59 62 71 46 2[25 62 57 42 46 58 53 46 58 3[45
2[19 37 37 37 37 37 37 37 37 37 37 45 19 25 19 45 1[25
25 21 58 63 3[21 29[45 45 2[{ TeXBase1Encoding ReEncodeFont }80
75.000000 /Palatino-Roman rf /Fr 107[37 37 24[33 37 37
54 37 42 25 29 29 1[37 33 42 58 21 33 21 21 37 37 21
29 37 30 35 33 7[50 1[71 1[58 46 42 50 1[46 1[58 71 42
2[25 58 54 42 46 1[50 1[54 6[19 37 37 37 37 37 37 37
37 37 37 22 19 25 19 2[25 25 2[66 33[41 39 2[{
 TeXBase1Encoding ReEncodeFont }64 75.000000 /Palatino-Italic
rf /Fs 133[37 42 37 1[42 46 25 33 29 46 46 42 46 66 25
46 1[25 46 42 29 37 46 33 46 37 7[50 1[75 3[46 54 3[62
75 3[29 62 1[42 46 62 54 1[58 7[37 37 37 37 37 37 37
37 37 37 1[19 25 19 45 5[66 37[{ TeXBase1Encoding ReEncodeFont }52
75.000000 /Palatino-Bold rf /Ft 5 22 df<007FB81280B912C0A26C178032047996
41>0 D<121C127FEAFF80A5EA7F00121C0909799917>I<0060150600F8150F6C151F007E
153F6C157E6C6C14FC6C6CEB01F86C6CEB03F06C6CEB07E06C6CEB0FC06C6CEB1F80017E
EB3F006D137E6D6C5A90380FC1F8903807E3F0903803F7E06DB45A6D5B6EC7FCA24A7E49
7F903803F7E0903807E3F090380FC1F890381F80FC90383F007E017E7F49EB1F804848EB
0FC04848EB07E04848EB03F04848EB01F84848EB00FC48C8127E007E153F48151F48150F
00601506282874A841>I<EB0FE0EB7FFC497E0003EBFF804814C04814E04814F04814F8
A24814FCA3B612FEA86C14FCA36C14F8A26C14F06C14E06C14C06C1480C6EBFE006D5AEB
0FE01F207BA42A>15 D<126012F812FEEA7F80EA3FE0EA0FF8EA03FEC66C7EEB3FE0EB0F
F8EB03FE903800FF80EC3FE0EC0FF8EC03FE913800FF80ED3FE0ED0FF8ED03FE923800FF
80EE3FE0EE0FF8EE03FE933800FF80EF3FC0171FEF7F80933801FF00EE07FCEE1FF0EE7F
C04B48C7FCED07FCED1FF0ED7FC04A48C8FCEC07FCEC1FF0EC7FC04948C9FCEB07FCEB1F
F0EB7FC04848CAFCEA07FCEA1FF0EA7FC048CBFC12FC1270CCFCAE007FB81280B912C0A2
6C1780324479B441>21 D E /Fu 134[66 60 100 66 73 40 53
47 2[66 73 106 40 1[40 40 3[60 1[53 73 60 13[73 86 100
1[100 7[100 1[73 100 10[60 60 60 60 60 60 60 60 60 60
1[30 46[{ TeXBase1Encoding ReEncodeFont }36 119.999948
/Palatino-Bold rf /Fv 133[103 115 103 172 115 126 69
92 80 1[126 115 126 184 69 126 1[69 126 115 80 103 126
92 126 103 9[207 161 161 138 126 149 1[126 172 1[207
126 2[80 172 172 115 126 172 149 138 161 7[103 103 103
103 103 103 103 103 103 103 61 2[52 2[69 69 40[{
 TeXBase1Encoding ReEncodeFont }57 207.333362 /Palatino-Bold
rf /Fw 133[37 42 42 60 42 46 28 32 32 38 42 37 46 65
23 37 23 23 42 42 23 32 42 34 38 37 12[51 46 55 1[51
65 1[78 9[55 1[60 6[21 11[21 28 21 41[44 2[{
 TeXBase1Encoding ReEncodeFont }39 83.333337 /Palatino-Italic
rf /Fx 104[83 42 1[42 42 24[42 46 43 69 47 50 27 35 33
46 50 45 48 73 24 46 19 24 48 46 28 40 51 37 46 42 23
2[28 1[28 55 55 55 83 60 65 51 44 55 65 50 65 69 79 51
2[28 69 63 46 51 64 59 51 65 62 37 1[50 1[21 21 42 42
42 42 42 42 42 42 42 42 50 21 28 21 50 32 28 28 23 65
70 3[23 29[50 50 2[{ TeXBase1Encoding ReEncodeFont }86
83.333337 /Palatino-Roman rf /Fy 134[46 2[46 51 28 37
32 51 51 46 51 74 28 51 1[28 51 46 1[42 51 37 51 42 12[55
4[69 2[51 2[32 7[65 18[21 28 45[{ TeXBase1Encoding ReEncodeFont }28
83.333337 /Palatino-Bold rf /Fz 1 14 df<933803FFE0047F13FF0303B612E0030F
15F8923A7FFE003FFFDBFFC001017FDA03FEC8EA3FE0DA0FF8ED0FF8DA1FC0ED01FC4A48
6F7E02FECAEA3F804948717ED903F0EF07E04948717E4948717E4948717E49CC127E017E
85017C8549737E0001874919074848737EA24848737E000F8749190090CE1278481B7CA2
003E87A2003C1B1EA2007C1B1FA2007887A200F81C80A2481B07AC6C1B0FA200781C00A2
007C63A2003C1B1EA2003E1B3EA26C63A26C1B786D1AF86D19010007636C6C4F5AA26C6C
4F5A6D190F000063017C4FC7FC017E616D197E6D6C606D6C4D5A6D6C4D5A6D6C4D5AD901
FCEF1FC06D6C4D5ADA3F8004FEC8FC6E6C4B5ADA0FF8ED0FF8DA03FEED3FE0912600FFC0
903801FF80DB7FFE013F90C9FC030FB612F8030315E0DB007F91CAFC040313E0595C7BC6
64>13 D E /FA 134[55 51 83 56 60 32 42 39 56 60 54 58
88 29 55 1[29 58 55 33 48 61 44 55 50 10[72 78 61 52
2[60 1[83 94 2[33 5[77 71 61 78 7[50 50 50 50 50 50 50
1[50 2[25 1[25 44[{ TeXBase1Encoding ReEncodeFont }46
100.000003 /Palatino-Roman rf /FB 134[80 3[87 47 1[57
2[78 83 1[42 3[83 1[48 69 2[79 72 13[75 96 1[87 2[136
88 8[102 1[112 65[{ TeXBase1Encoding ReEncodeFont }19
143.999997 /Palatino-Roman rf end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 600dpi
TeXDict begin
%%PaperSize: Letter
%%BeginPaperSize: Letter
/setpagedevice where {
pop 1 dict dup /PageSize [ 612 792 ] put setpagedevice
} {
statusdict /lettertray known {
statusdict begin lettertray end
/letter where { pop letter } if
} {
/letter where {
pop letter
} {
statusdict /setpage known {
statusdict begin
612 792 0 setpage
end
} if
} ifelse
} ifelse
} ifelse
%%EndPaperSize

%%EndSetup
%%Page: 1 1
1 0 bop 486 1460 a FB(A)35 b(Laboratory)g(Manual)g(for)g(the)h(SP)-13
b(ARC)1236 1906 y FA(Arthur)26 b(B.)f(Maccabe)1370 2022
y(Jef)n(f)g(V)-9 b(andyke)915 2138 y(Department)25 b(of)h(Computer)f
(Science)972 2255 y(The)g(University)h(of)f(New)g(Mexico)1094
2371 y(Albuquer)n(que,)f(NM)50 b(87131)887 3203 y(Copyright)1394
3200 y(c)1367 3203 y Fz(\015)o FA(1993,)24 b(1994,)g(1995,)g(1996)436
4036 y(Permission)i(is)f(granted)h(to)f(make)g(copies)g(for)h(classr)n
(oom)h(use)1290 4273 y(January)f(16,)e(1996)p eop
%%Page: 0 2
0 1 bop 725 333 a Fy(Introduction)725 432 y Fx(This)31
b(laboratory)g(manual)g(was)g(developed)f(to)i(pr)o(ovide)e(a)h
(\223hands)f(on\224)i(intr)o(oduction)f(to)h(the)600
532 y(SP)-8 b(ARC)22 b(ar)o(chitectur)o(e.)27 b(The)22
b(labs)g(ar)o(e)f(based)g(on)h(ISEM,)f(an)h(instr)o(uctional)h(SP)-8
b(ARC)22 b(emulator)g(devel-)600 632 y(oped)e(at)h(the)g(University)g
(of)f(New)h(Mexico.)725 731 y(The)h(ISEM)g(package)g(is)h(available)f
(via)g(anonymous)j(ftp.)31 b(T)-8 b(o)24 b(obtain)f(a)f(copy)h(ftp)g
(to)g(cs.unm.edu)600 831 y(and)32 b(cd)g(to)h(pub/ISEM.)e(The)i(README)
f(\002le)g(in)i(this)f(dir)o(ectory)e(should)j(pr)o(ovide)d(you)j(with)
f(the)600 930 y(information)24 b(needed)d(to)i(obtain)g(a)f(working)i
(copy)f(for)f(your)h(envir)o(onment.)32 b(ISEM)21 b(curr)o(ently)h(r)o
(uns)600 1030 y(on)i(most)h(Unix)f(boxes.,)g(Ther)o(e)f(ar)o(e)f(plans)
i(to)g(port)g(ISEM)e(to)i(the)g(DOS/W)-5 b(indows)26
b(envir)o(onment)e(as)600 1130 y(well)30 b(as)g(the)g(Mac.)53
b(If)29 b(you)i(have)e(any)h(dif)o(\002culty)g(getting)h(a)e(copy)h(of)
g(ISEM)f(or)h(would)h(like)f(mor)o(e)600 1229 y(information)22
b(r)o(egar)o(ding)d(the)i(status)g(of)f(the)h(ports,)g(send)g(email)f
(to)i(isem@cs.unm.edu.)725 1329 y(In)27 b(addition)h(to)f(an)h(instr)o
(uction)h(set)e(emulator)h(for)f(the)g(SP)-8 b(ARC,)28
b(the)f(ISEM)f(package)h(includes)600 1429 y(emulations)21
b(for)f(several)f(devices)g(\(a)h(character)e(mapped)h(display)-9
b(,)20 b(a)f(bitmapped)h(display)-9 b(,)19 b(a)h(UAR)m(T)-6
b(,)600 1528 y(etc.\),)25 b(an)g(assembler)-6 b(,)25
b(and)g(a)g(linker)-6 b(.)39 b(The)25 b(assember)f(is)i(a)e(slightly)j
(modi\002ed)e(version)h(of)f(the)g(GNU)600 1628 y(assembler)19
b(\(gas)f(version)i(2.1.1\).)j(The)c(primary)g(modi\002cation)h(is)f
(the)h(addition)f(of)g(several)f(synthetic)600 1727 y(operations)i(to)g
(support)g(loads)f(and)h(stor)o(es)f(fr)o(om/to)h(arbitrary)e
(locations)j(in)f(memory)-9 b(.)25 b(These)20 b(oper)o(-)600
1827 y(ations)h(ar)o(e)f(described)f(in)j(the)e(\002rst)i(few)e
(laboratory)g(write)h(ups.)725 1927 y(The)d(lab)g(maunal)g(is)h
(complete)f(in)h(that)f(it)h(covers)f(all)g(of)g(the)h(SP)-8
b(ARC)18 b(operations)g(and)g(instr)o(uction)600 2026
y(formats.)51 b(As)28 b(such,)k(students)d(should)h(not)g(r)o(equir)o
(e)e(individual)h(copies)h(of)f Fw(The)f(SP)-11 b(ARC)31
b(Ar)o(chitec-)600 2126 y(tur)o(e)23 b(Manual)p Fx(.)35
b(However)-6 b(,)24 b(we)f(have)g(found)h(it)g(useful)f(to)h(have)f
(copies)h(of)g(the)f(SP)-8 b(ARC)24 b(Ar)o(chitectur)o(e)600
2226 y(Manual)c(available)f(to)i(students)h(on)f(a)f(r)o(efer)o(ence)e
(basis.)725 2325 y(This)i(lab)f(manual)h(has)g(been)g(designed)g(to)g
(accompany)g Fw(Computer)f(Systems:)25 b(Ar)o(chitectur)o(e,)19
b(Or)o(ga-)600 2425 y(nization,)g(and)f(Pr)o(ogramming)f
Fx(by)i(Maccabe)e(\(Richar)o(d)h(D.)h(Irwin,)h(1993\).)i(However)-6
b(,)19 b(the)g(manual)g(does)600 2524 y(not)i(dir)o(ectly)f(r)o(efer)o
(ence)f(the)i(text)f(and,)g(as)h(such,)g(could)f(be)h(used)f(with)i
(other)f(text)f(books.)p eop
%%Page: 1 3
1 2 bop 0 474 3300 12 v 0 723 a Fv(Laboratory)53 b(1)0
976 y(Using)e(ISEM)h(\(the)g(Instructional)0 1188 y(SP)-15
b(ARC)52 b(Emulator\))p 0 1304 1200 12 v 0 1661 a Fu(1.1)119
b(Goal)0 1850 y Fx(T)-8 b(o)21 b(describe)f(the)g(translation)h(of)g
(assembly)f(language)g(pr)o(ograms)g(and)g(intr)o(oduce)g(basic)g
(featur)o(es)f(of)0 1950 y(ISEM,)g(the)i(instr)o(uctional)h(SP)-8
b(ARC)21 b(emulator)-6 b(.)0 2235 y Fu(1.2)119 b(Objectives)0
2424 y Fx(After)20 b(completing)h(this)h(lab,)e(you)h(will)h(be)e(able)
g(to:)125 2588 y Ft(\017)41 b Fx(Assemble)20 b(and)h(link)g(SP)-8
b(ARC)21 b(pr)o(ograms,)125 2687 y Ft(\017)41 b Fx(Load)20
b(SP)-8 b(ARC)20 b(pr)o(ograms,)125 2786 y Ft(\017)41
b Fx(Run)21 b(SP)-8 b(ARC)21 b(pr)o(ograms,)125 2885
y Ft(\017)41 b Fx(Examine/modify)21 b(memory)g(locations,)g(and)125
2984 y Ft(\017)41 b Fx(Examine/modify)21 b(r)o(egisters.)0
3269 y Fu(1.3)119 b(Discussion)0 3458 y Fx(In)29 b(this)g(lab)f(we)h
(describe)e(the)i(translation)g(pr)o(ocess)f(and)g(intr)o(oduce)g(the)h
(basic)f(featur)o(es)f(of)h(ISEM.)0 3558 y(W)-8 b(e)30
b(begin)g(by)g(describing)g(the)f(translation)i(pr)o(ocess:)43
b(the)30 b(steps)f(used)h(to)g(translate)f(an)h(assembly)0
3657 y(language)e(pr)o(ogram)f(into)h(an)g(executable)f(pr)o(ogram.)46
b(After)26 b(describing)i(the)g(translation)h(pr)o(ocess,)0
3757 y(we)21 b(describe)f(how)h(you)h(can)e(execute)g(and)g(test)h
(executable)f(pr)o(ograms)g(using)i(ISEM.)125 3857 y(The)29
b(\002rst)h(thing)g(you)g(need)f(is)g(a)g(simple)h(SP)-8
b(ARC)29 b(pr)o(ogram.)51 b(Figur)o(e)29 b(1.1)f(illustrates)i(a)f
(simple)0 3956 y(SP)-8 b(ARC)21 b(pr)o(ogram.)k(W)-8
b(e)20 b(will)i(use)f(this)g(pr)o(ogram)f(in)h(the)g(r)o(emainder)f(of)
h(this)g(lab.)p 0 4071 3300 4 v 0 4159 a Fs(Activity)d(1.1)93
b Fr(Using)19 b(a)g(text)g(editor)-6 b(,)19 b(enter)f(the)h(pr)o(ogram)
h(shown)f(in)f(Figur)o(e)f(1.1)i(into)f(a)h(\002le)g(called)g
Fq(foo.s)p Fr(.)p 0 4208 V 0 4494 a Fp(1.3.1)99 b(Assembling)25
b(and)f(Linking)h(Programs)0 4652 y Fx(Once)h(you)g(have)f(a)g(SP)-8
b(ARC)25 b(pr)o(ogram,)h(you)g(will)g(need)f(to)h(assemble)g(and)f
(link)h(your)g(pr)o(ogram)f(be-)0 4752 y(for)o(e)h(you)i(can)f(r)o(un)h
(it)f(using)h(ISEM.)e(The)h(assembler)g(translates)g
Fw(assembly)h(language)e(pr)o(ograms)g Fx(into)0 4851
y Fw(object)21 b(pr)o(ogram)p Fx(.)26 b(The)21 b(linker)h(transforms)f
(object)h(pr)o(ograms)f(into)h Fw(executable)f(pr)o(ograms)f
Fx(that)h(you)h(can)0 4951 y(execute)e(using)i(ISEM)125
5051 y(T)-8 b(o)30 b(assemble)f(a)h(SP)-8 b(ARC)29 b(pr)o(ogram,)j(you)
e(need)f(to)h(specify)g(the)g(\002le)g(that)f(holds)i(the)f(assembly)0
5150 y(language)20 b(pr)o(ogram)g(and)h(the)f(\002le)h(that)g(will)g
(hold)g(the)g(r)o(esulting)g(object)g(pr)o(ogram.)k(Assembly)c(com-)0
5250 y(mands)26 b(start)f(with)i(the)f(name)g(of)f(the)h(assembler)-6
b(,)27 b Fw(isem-as)p Fx(,)g(followed)f(by)g(\(optional\))f(listing)i
(speci-)0 5350 y(\002cations,)d(followed)f(by)g(an)f(output)i(\002le)f
(speci\002cation,)g(followed)g(by)g(the)g(name)g(of)g(the)g(sour)o(ce)f
(\002le.)1629 5560 y(1)p eop
%%Page: 2 4
2 3 bop 600 100 a Fx(2)1224 b(Lab)20 b(1.)40 b(Using)22
b(ISEM)d(\(the)i(Instr)o(uctional)h(SP)-8 b(ARC)20 b(Emulator\))1138
250 y Fo(.data)761 b(!)45 b(variables)824 341 y(x:)224
b(.word)44 b(0x42)537 b(!)45 b(initialize)e(x)i(to)f(0x42)824
432 y(y:)224 b(.word)44 b(0x20)537 b(!)45 b(initialize)e(y)i(to)f(0x20)
824 524 y(z:)224 b(.word)44 b(0)672 b(!)45 b(initialize)e(z)i(to)f(0)
1138 706 y(.text)761 b(!)45 b(instructions)824 798 y(start:)1138
889 y(set)179 b(x,)44 b(\045r2)403 b(!)45 b(&x)f(-->)h(\045r2)1138
980 y(ld)224 b([\045r2],)44 b(\045r2)223 b(!)45 b(x)g(-->)f(\045r2)1138
1072 y(set)179 b(y,)44 b(\045r3)403 b(!)45 b(&y)f(-->)h(\045r3)1138
1163 y(ld)224 b([\045r3],)44 b(\045r3)223 b(!)45 b(y)g(-->)f(\045r3)
1138 1254 y(add)179 b(\045r2,)44 b(\045r2,)g(\045r2)89
b(!)45 b(r2)f(+)h(r2)g(-->)f(\045r2)1138 1346 y(add)179
b(\045r2,)44 b(\045r3,)g(\045r2)89 b(!)45 b(r2)f(+)h(r3)g(-->)f(\045r2)
1138 1437 y(set)179 b(z,)44 b(\045r3)403 b(!)45 b(&z)f(-->)h(\045r3)
1138 1528 y(st)224 b(\045r2,)44 b([\045r3])223 b(!)45
b(r2)f(-->)h(x)824 1711 y(end:)134 b(ta)224 b(0)1097
1893 y Fx(Figur)o(e)20 b(1.1)g(A)g(sample)h(SP)-8 b(ARC)21
b(pr)o(ogram)f(implementing)i Fn(z)k Fm(=)d(2)p Fn(x)18
b Fm(+)g Fn(y)p 765 2019 2970 4 v 765 2107 a Fs(Hexadecimal)77
b Fq(ISEM)19 b(r)o(eports)f(all)i(of)g(its)f(r)o(esults)g(in)h
(hexadecimal.)26 b(T)-7 b(o)19 b(simplify)f(your)h(interaction)765
2198 y(with)28 b(ISEM,)e(we)h(will)f(use)g(hexadecimal)g(notation)j(in)
e(our)f(pr)o(ograms.)44 b(The)27 b(pr)o(ogram)e(shown)j(in)765
2289 y(Figur)o(e)17 b(1.1)i(uses)f(the)h(hexadecimal)f(constants:)24
b(0x42)c(and)f(0x20.)p 765 2339 V 600 2670 a Fx(W)-8
b(e)25 b(will)g(use)g(the)f(listing)i(speci\002cation)f(\223)p
Ft(\000)p Fx(als\224)e(\(to)i(generate)f(a)g(sour)o(ce)g(listing)i(and)
e(a)g(list)h(of)g(sym-)600 2769 y(bols\).)53 b(The)29
b(output)i(speci\002cation)f(consists)h(of)f(a)f(-o)h(followed)g(by)g
(the)g(name)f(of)h(the)g(output)g(\002le.)600 2869 y(Figur)o(e)20
b(1.2)g(illustrates)h(the)g(interaction)g(that)g(r)o(esults)f(when)h
(you)h(assemble)e(the)h(pr)o(ogram)f(in)h(foo.s.)p 600
2985 3300 4 v 600 3073 a Fs(Activity)d(1.2)93 b Fr(Assemble)19
b(the)g(pr)o(ogram)g(in)f Fq(foo.s)p Fr(,)g(placing)h(the)g(object)f
(code)i(in)e(the)h(\002le)g Fq(foo.o)p Fr(.)p 600 3122
V 725 3273 a Fx(The)f(linker)h(is)g(called)f Fw(isem-ld)p
Fx(.)25 b(Linker)18 b(commands)h(start)g(with)g(the)g(name)g(of)f(the)h
(linker)-6 b(,)19 b(isem-ld,)600 3372 y(followed)j(by)g(an)f(output)h
(speci\002cation,)g(followed)g(by)g(the)g(name)g(of)f(the)h(\002le)g
(containing)h(the)f(object)600 3472 y(pr)o(ogram.)p 600
3588 V 600 3676 a Fs(Activity)c(1.3)93 b Fr(Link)18 b(the)h(object)g
(code)g(in)f Fq(foo.o)p Fr(,)g(placing)h(the)g(executable)f(pr)o(ogram)
i(in)e(the)h(\002le)g Fq(foo)p Fr(.)p 600 3725 V 600
4011 a Fp(1.3.2)99 b(T)-11 b(esting)26 b(Y)-7 b(our)25
b(Program)600 4169 y Fx(Once)g(you)g(have)e(assembled)h(and)g(linked)h
(your)g(assembly)f(language)g(pr)o(ogram,)h(you)g(can)f(execute)600
4268 y(your)d(pr)o(ogram)f(using)i(ISEM.)d(T)-8 b(o)21
b(start)g(ISEM,)e(you)j(need)e(to)h(issue)g(the)g(ISEM)f(command,)h
(\223isem\224.)725 4368 y(When)33 b(you)h(start)f(ISEM,)e(you)j(will)g
(see)f(an)g(intr)o(oductory)g(message)g(followed)h(by)f(the)g(ISEM)600
4468 y(pr)o(ompt)28 b(\(\223ISEM)p Fn(>)p Fx(\224\).)46
b(When)29 b(you)g(see)f(this)h(pr)o(ompt,)h(you)f(can)f(issue)h(an)g
(ISEM)e(command.)49 b(Fig-)600 4567 y(ur)o(e)20 b(1.3)f(illustrates)i
(the)g(interaction)g(you)h(should)f(expect)f(to)h(see)g(when)g(you)g
(start)g(up)g(ISEM.)600 4793 y Fy(The)f(load)g(command)600
4951 y Fx(The)26 b Fw(load)f Fx(command)h(is)f(used)h(to)g(load)f
(executable)g(pr)o(ograms)g(into)h(the)g(ISEM)e(envir)o(onment.)41
b(The)600 5051 y(load)22 b(command)g(consists)h(of)f(the)g(name)g(of)g
(the)g(command)g(\(load\))f(followed)i(by)f(the)g(name)f(of)h(a)g
(\002le)600 5150 y(containing)g(an)f(executable)e(pr)o(ogram.)725
5250 y(Figur)o(e)j(1.4)g(illustrates)h(the)g(ISEM)f(load)g(command.)33
b(In)23 b(examining)g(this)h(interaction,)g(note)f(that)600
5350 y(ISEM)f(tells)h(you)g(wher)o(e)f(it)h(loaded)f(the)h(pr)o(ogram)f
(text)g(\(instr)o(uctions\))i(and)e(data)g(\(variables\).)29
b(ISEM)p eop
%%Page: 3 5
3 4 bop 0 100 a Fx(Lab)20 b(1.)41 b(Using)21 b(ISEM)e(\(the)i(Instr)o
(uctional)h(SP)-8 b(ARC)21 b(Emulator\))1223 b(3)224
250 y Fo(\045)64 b Fs(isem-as)19 b Fl(\000)p Fs(als)g
Fl(\000)p Fs(o)f(foo.o)f(foo.s)224 341 y Fo(SPARC)44
b(GAS)89 b(foo.s)1075 b(page)45 b(1)359 524 y(1)1210
b(.data)761 b(!)45 b(variables)359 615 y(2)f(0030)g(00000042)268
b(x:)224 b(.word)44 b(0x42)537 b(!)45 b(initialize)e(x)0
706 y(to)h(0x42)359 798 y(3)g(0034)g(00000020)268 b(y:)224
b(.word)44 b(0x20)537 b(!)45 b(initialize)e(y)0 889 y(to)h(0x20)359
980 y(4)g(0038)g(00000000)268 b(z:)224 b(.word)44 b(0)672
b(!)45 b(initialize)e(z)0 1072 y(to)h(0)359 1163 y(5)359
1254 y(6)1210 b(.text)761 b(!)45 b(instructions)359 1346
y(7)896 b(start:)359 1437 y(8)44 b(0000)g(05000000)582
b(set)179 b(x,)44 b(\045r2)403 b(!)45 b(&x)f(-->)h(\045r2)359
1528 y(8)268 b(8410A000)359 1619 y(9)44 b(0008)g(C4008000)582
b(ld)224 b([\045r2],)44 b(\045r2)223 b(!)45 b(x)g(-->)f(\045r2)314
1711 y(10)g(000c)g(07000000)582 b(set)179 b(y,)44 b(\045r3)403
b(!)45 b(&y)f(-->)h(\045r3)314 1802 y(10)268 b(8610E000)314
1893 y(11)44 b(0014)g(C600C000)582 b(ld)224 b([\045r3],)44
b(\045r3)223 b(!)45 b(y)g(-->)f(\045r3)314 1985 y(12)g(0018)g(84008002)
582 b(add)179 b(\045r2,)44 b(\045r2,)g(\045r2)89 b(!)45
b(r2)f(+)h(r2)g(-->)0 2076 y(\045r2)314 2167 y(13)f(001c)g(84008003)582
b(add)179 b(\045r2,)44 b(\045r3,)g(\045r2)89 b(!)45 b(r2)f(+)h(r3)g
(-->)0 2259 y(\045r2)314 2350 y(14)f(0020)g(07000000)582
b(set)179 b(z,)44 b(\045r3)403 b(!)45 b(&z)f(-->)h(\045r3)314
2441 y(14)268 b(8610E000)314 2533 y(15)44 b(0028)g(C420C000)582
b(st)224 b(\045r2,)44 b([\045r3])223 b(!)45 b(r2)f(-->)h(x)314
2624 y(16)f(002c)g(91D02000)582 b(ta)224 b(0)314 2715
y(17)896 b(end:)224 2898 y(SPARC)44 b(GAS)89 b(foo.s)1075
b(page)45 b(2)224 3172 y(DEFINED)f(SYMBOLS)897 3263 y(foo.s:2)312
b(2:00000030)43 b(x)897 3355 y(foo.s:3)312 b(2:00000034)43
b(y)897 3446 y(foo.s:4)312 b(2:00000038)43 b(z)897 3537
y(foo.s:7)312 b(1:00000000)43 b(start)897 3629 y(foo.s:17)267
b(1:00000030)43 b(end)224 3811 y(UNDEFINED)g(SYMBOLS)832
3994 y Fx(Figur)o(e)20 b(1.2)g(Illustrating)h(the)g(isem-as)g(command.)
p 165 4120 2970 4 v 165 4208 a Fs(File)29 b(Names)105
b Fq(T)-7 b(raditionally)f(,)30 b(\002le)f(name)h(suf)o(\002xes)d
(indicate)j(the)f(type)g(of)g(pr)o(ogram)e(stor)o(ed)g(in)j(a)165
4299 y(\002le.)23 b(Files)18 b(that)i(contain)h(assembly)d(language)g
(pr)o(ograms)f(have)j(a)f(suf)o(\002x)f(of)h(\223.s\224.)24
b(Files)17 b(that)k(contain)165 4391 y(object)16 b(pr)o(ograms)e(have)i
(a)g(suf)o(\002x)f(of)g(\223.o\224.)22 b(Files)14 b(that)j(contain)g
(executable)e(pr)o(ograms)f(do)h(not)h(usually)165 4482
y(have)k(a)f(suf)o(\002x.)285 4573 y(In)27 b(the)h(pr)o(eceding)d
(paragraphs,)i(we)g(used)f(the)h(\002les)f Fr(foo.s)h
Fq(\(for)f(the)h(assembly)f(language)g(pr)o(o-)165 4665
y(gram\),)18 b Fr(foo.o)g Fq(\(for)g(the)h(object)h(pr)o(ogram\),)c
(and)k Fr(foo)e Fq(\(for)g(the)i(executable)e(pr)o(ogram\).)p
165 4714 V 0 5046 a Fx(also)j(tells)g(you)g(the)g(curr)o(ent)f(value)g
(of)h(the)g(pr)o(ogram)f(counter)h(\(PC\))f(and)g(the)h(next)g(pr)o
(ogram)f(counter)0 5146 y(\(nPC\).)f(Finally)-9 b(,)20
b(ISEM)e(shows)j(you)f(the)f(next)h(instr)o(uction)h(that)e(it)h(will)g
(execute)e(\(i.e.,)h(the)g(instr)o(uction)0 5245 y(pointed)i(to)g(by)g
(the)g(PC\).)p eop
%%Page: 4 6
4 5 bop 600 100 a Fx(4)1224 b(Lab)20 b(1.)40 b(Using)22
b(ISEM)d(\(the)i(Instr)o(uctional)h(SP)-8 b(ARC)20 b(Emulator\))824
250 y Fo(\045)64 b Fs(isem)824 432 y Fo(Instructional)43
b(SPARC)h(Emulator)824 524 y(Copyright)f(1993)i(-)f(Computer)g(Science)
f(Department)1586 615 y(University)g(of)i(New)f(Mexico)824
798 y(ISEM)g(comes)g(with)g(ABSOLUTELY)g(NO)g(WARRANTY)824
980 y(ISEM)g(Ver)h(1.00a)f(:)g(Mon)h(Nov)f(1)h(20:25:01)e(MST)h(1993)
1484 1163 y Fx(Figur)o(e)21 b(1.3)e(Illustrating)j(the)e(isem)i
(command.)824 1286 y Fo(ISEM)p Fk(>)63 b Fs(load)18 b(foo)824
1377 y Fo(Loading)44 b(File:)g(foo)824 1469 y(2000)g(bytes)g(loaded)g
(into)g(Text)g(region)g(at)h(address)e(8:0)824 1560 y(2000)h(bytes)g
(loaded)g(into)g(Data)g(region)g(at)h(address)e(a:2000)914
1743 y(PC:)h(08:00000020)178 b(nPC:)44 b(00000024)178
b(PSR:)44 b(0000003e)178 b(N:0)44 b(Z:0)h(V:0)600 1834
y(C:0)1362 2017 y(start)179 b(:)89 b(sethi)134 b(0x8,)44
b(\045g2)1490 2199 y Fx(Figur)o(e)20 b(1.4)g(Illustrating)h(the)g(load)
f(command.)p 600 2392 3300 4 v 600 2480 a Fs(Activity)e(1.4)93
b Fr(Start)19 b(ISEM)e(and)i(load)g(the)g(\002le)g Fq(foo)p
Fr(.)p 600 2529 V 725 2681 a Fx(Note)26 b(that)g(the)g(instr)o(uction)i
(\(sethi)52 b(0x8,)25 b(\045g2\))g(doesn't)i(look)g(like)f(the)g
(\002rst)h(instr)o(uction)g(in)g(the)600 2780 y(sample)17
b(pr)o(ogram)f(\(set)33 b(x,)16 b(\045r2\).)23 b(W)-8
b(e)17 b(will)g(discuss)g(the)g(r)o(eason)f(for)h(this)g(when)g(we)g
(consider)g Fw(synthetic)600 2880 y(operations)f Fx(in)h(Lab)e(9.)24
b(For)16 b(now)-8 b(,)19 b(it)d(is)h(suf)o(\002cient)f(to)h(know)g
(that)f(set)h(instr)o(uction)h(may)e(be)g(implemented)600
2979 y(using)22 b(two)f(instr)o(uctions:)27 b(a)21 b(sethi)g(instr)o
(uction)h(followed)f(by)g(an)g(or)g(instr)o(uction.)600
3206 y Fy(The)f(trace)g(command)600 3364 y Fx(Y)-8 b(ou)28
b(can)f(execute)f(your)i(pr)o(ogram,)f(one)h(instr)o(uction)h(at)d(a)h
(time,)i(using)f(the)f Fw(trace)g Fx(command.)45 b(The)600
3463 y(trace)20 b(command)i(executes)f(a)g(single)h(instr)o(uction)i
(and)d(r)o(eports)g(the)g(values)g(stor)o(ed)g(in)h(the)g(r)o
(egisters,)600 3563 y(followed)f(by)g(the)g(next)g(instr)o(uction)h(to)
f(be)g(executed.)725 3663 y(Figur)o(e)i(1.5)f(illustrates)h(thr)o(ee)g
(successive)g(executions)h(of)f(the)h(trace)e(command.)34
b(Note)24 b(that)f(r)o(eg-)600 3762 y(ister)i(2)f(\(\002rst)g(r)o(ow)-8
b(,)26 b(thir)o(d)e(column\))h(now)h(has)e(the)h(value)f
(0x00000042\227the)c(value)k(used)h(in)g(the)g(ini-)600
3862 y(tialization)c(of)f(x.)725 3961 y(T)-8 b(o)27 b(complete)h(the)f
(execution)h(of)f(the)g(sample)g(pr)o(ogram,)h(you)g(need)f(to)h(issue)
f(nine)h(mor)o(e)f(trace)600 4061 y(commands)g(\(a)e(total)h(of)h
(twelve)f(trace)f(commands\).)42 b(As)26 b(you)h(issue)f(trace)g
(commands,)h(note)g(how)600 4161 y(the)e(values)f(in)i(r)o(egisters)e
(2)g(and)g(3)h(change.)37 b(When)25 b(you)h(have)e(executed)g(all)g(of)
h(the)g(instr)o(uctions)i(in)600 4260 y(the)e(sample)g(pr)o(ogram,)g
(ISEM)e(will)j(print)f(the)g(message)g(\223Pr)o(ogram)f(exited)g
(normally)-9 b(.\224)38 b(Figur)o(e)24 b(1.6)600 4360
y(illustrates)d(the)g(execution)g(of)f(the)h(last)g(two)g(trace)f
(commands.)p 600 4455 V 600 4543 a Fs(Activity)e(1.5)93
b Fr(Execute)19 b(the)g(sample)g(pr)o(ogram)h(by)f(issuing)e(twelve)i
(trace)g(commands.)p 600 4592 V 600 4786 a Fy(The)h(dump)g(command)600
4944 y Fx(The)25 b(trace)g(command)h(is)g(useful)f(because)g(it)g(lets)
h(you)g(see)f(how)i(each)e(instr)o(uction)i(af)o(fects)c(the)j(r)o(eg-)
600 5044 y(isters)g(when)g(it)g(is)f(executed.)39 b(Y)-8
b(ou)27 b(can)e(also)g(examine)h(the)f(contents)i(of)e(memory)h(using)h
(the)e Fw(dump)600 5144 y Fx(command.)h(Y)-8 b(ou)22
b(can)e(issue)h(a)g(dump)f(command)h(any)g(time)g(you)h(see)e(the)h
(ISEM)p Fn(>)e Fx(pr)o(ompt.)725 5243 y(T)-8 b(o)23 b(use)h(the)f(dump)
g(command,)h(you)g(need)f(to)h(specify)f(the)g(range)g(of)g(memory)h
(values)f(that)g(you)600 5343 y(want)h(to)h(examine.)35
b(A)24 b(range)f(of)h(memory)h(locations)g(is)f(speci\002ed)g(using)h
(two)g(memory)g(addr)o(esses)p eop
%%Page: 5 7
5 6 bop 0 100 a Fx(Lab)20 b(1.)41 b(Using)21 b(ISEM)e(\(the)i(Instr)o
(uctional)h(SP)-8 b(ARC)21 b(Emulator\))1223 b(5)224
250 y Fo(ISEM)p Fk(>)63 b Fs(trace)314 341 y Fo(----0---)43
b(----1---)h(----2---)f(----3---)h(----4---)f(----5---)h(----6---)0
432 y(----7---)224 524 y(G)h(00000000)e(00000000)h(00002000)f(00000000)
h(00000000)f(00000000)h(00000000)0 615 y(00000000)224
706 y(O)h(00000000)e(00000000)h(00000000)f(00000000)h(00000000)f
(00000000)h(00000000)0 798 y(00000000)224 889 y(L)h(00000000)e
(00000000)h(00000000)f(00000000)h(00000000)f(00000000)h(00000000)0
980 y(00000000)224 1072 y(I)h(00000000)e(00000000)h(00000000)f
(00000000)h(00000000)f(00000000)h(00000000)0 1163 y(00000000)314
1254 y(PC:)g(08:00000024)178 b(nPC:)44 b(00000028)178
b(PSR:)44 b(0000003e)178 b(N:0)44 b(Z:0)h(V:0)0 1346
y(C:0)762 1528 y(start+04)f(:)89 b(or)269 b(\045g2,)44
b(0x60,)g(\045g2)224 1711 y(ISEM)p Fk(>)63 b Fs(trace)314
1802 y Fo(----0---)43 b(----1---)h(----2---)f(----3---)h(----4---)f
(----5---)h(----6---)0 1893 y(----7---)224 1985 y(G)h(00000000)e
(00000000)h(00002060)f(00000000)h(00000000)f(00000000)h(00000000)0
2076 y(00000000)224 2167 y(O)h(00000000)e(00000000)h(00000000)f
(00000000)h(00000000)f(00000000)h(00000000)0 2259 y(00000000)224
2350 y(L)h(00000000)e(00000000)h(00000000)f(00000000)h(00000000)f
(00000000)h(00000000)0 2441 y(00000000)224 2533 y(I)h(00000000)e
(00000000)h(00000000)f(00000000)h(00000000)f(00000000)h(00000000)0
2624 y(00000000)314 2715 y(PC:)g(08:00000028)178 b(nPC:)44
b(0000002c)178 b(PSR:)44 b(0000003e)178 b(N:0)44 b(Z:0)h(V:0)0
2807 y(C:0)762 2989 y(start+08)f(:)89 b(ld)269 b([\045g2],)44
b(\045g2)224 3172 y(ISEM)p Fk(>)63 b Fs(trace)314 3263
y Fo(----0---)43 b(----1---)h(----2---)f(----3---)h(----4---)f
(----5---)h(----6---)0 3355 y(----7---)224 3446 y(G)h(00000000)e
(00000000)h(00000042)f(00000000)h(00000000)f(00000000)h(00000000)0
3537 y(00000000)224 3629 y(O)h(00000000)e(00000000)h(00000000)f
(00000000)h(00000000)f(00000000)h(00000000)0 3720 y(00000000)224
3811 y(L)h(00000000)e(00000000)h(00000000)f(00000000)h(00000000)f
(00000000)h(00000000)0 3903 y(00000000)224 3994 y(I)h(00000000)e
(00000000)h(00000000)f(00000000)h(00000000)f(00000000)h(00000000)0
4085 y(00000000)314 4177 y(PC:)g(08:0000002c)178 b(nPC:)44
b(00000030)178 b(PSR:)44 b(0000003e)178 b(N:0)44 b(Z:0)h(V:0)0
4268 y(C:0)762 4451 y(start+0c)f(:)89 b(sethi)134 b(0x8,)44
b(\045g3)881 4633 y Fx(Figur)o(e)21 b(1.5)e(Illustrating)j(the)f(trace)
e(command.)0 4906 y(separated)k(by)h(a)g(comma.)37 b(Memory)25
b(addr)o(esses)e(can)h(be)g(speci\002ed)g(using)h(an)g(integer)f(value)
g(or)h(the)0 5005 y(name)16 b(of)g(a)f(label.)23 b(For)17
b(example,)e(to)i(see)e(the)h(\002nal)h(value)e(stor)o(ed)g(in)h(the)g
(memory)h(location)g(associated)0 5105 y(with)22 b(the)e(label)h
(\223z\224)e(you)i(could)g(use)g(the)g(range)f(\223z,)g(z\224.)125
5205 y(Figur)o(e)d(1.7)f(illustrates)i(the)g(dump)g(command.)25
b(The)17 b(dump)h(command)g(r)o(eports)f(memory)h(values)0
5304 y(in)23 b(pairs)e(of)i(hexadecimal)e(digits.)30
b(Each)22 b(wor)o(d)g(of)g(memory)h(is)f(32)g(bits)g(and,)g(as)g(such,)
h(r)o(equir)o(es)e(four)p eop
%%Page: 6 8
6 7 bop 600 100 a Fx(6)1224 b(Lab)20 b(1.)40 b(Using)22
b(ISEM)d(\(the)i(Instr)o(uctional)h(SP)-8 b(ARC)20 b(Emulator\))824
250 y Fo(ISEM)p Fk(>)63 b Fs(trace)914 341 y Fo(----0---)43
b(----1---)h(----2---)f(----3---)h(----4---)f(----5---)h(----6---)600
432 y(----7---)824 524 y(G)h(00000000)e(00000000)h(000000a4)f(00002068)
h(00000000)f(00000000)h(00000000)600 615 y(00000000)824
706 y(O)h(00000000)e(00000000)h(00000000)f(00000000)h(00000000)f
(00000000)h(00000000)600 798 y(00000000)824 889 y(L)h(00000000)e
(00000000)h(00000000)f(00000000)h(00000000)f(00000000)h(00000000)600
980 y(00000000)824 1072 y(I)h(00000000)e(00000000)h(00000000)f
(00000000)h(00000000)f(00000000)h(00000000)600 1163 y(00000000)914
1254 y(PC:)g(08:0000004c)178 b(nPC:)44 b(00000050)178
b(PSR:)44 b(0000003e)178 b(N:0)44 b(Z:0)h(V:0)600 1346
y(C:0)1362 1528 y(start+2c)f(:)89 b(ta)269 b([\045g0)44
b(+)h(0x0])824 1711 y(ISEM)p Fk(>)63 b Fs(trace)824 1802
y Fo(Program)44 b(exited)g(normally.)914 1893 y(----0---)f(----1---)h
(----2---)f(----3---)h(----4---)f(----5---)h(----6---)600
1985 y(----7---)824 2076 y(G)h(00000000)e(00000000)h(000000a4)f
(00002068)h(00000000)f(00000000)h(00000000)600 2167 y(00000000)824
2259 y(O)h(00000000)e(00000000)h(00000000)f(00000000)h(00000000)f
(00000000)h(00000000)600 2350 y(00000000)824 2441 y(L)h(00000000)e
(0000004c)h(00000050)f(00000000)h(00000000)f(00000000)h(00000000)600
2533 y(00000000)824 2624 y(I)h(00000000)e(00000000)h(00000000)f
(00000000)h(00000000)f(00000000)h(00000000)600 2715 y(00000000)914
2807 y(PC:)g(09:00000800)178 b(nPC:)44 b(00000804)178
b(PSR:)44 b(0000009d)178 b(N:0)44 b(Z:0)h(V:0)600 2898
y(C:0)1407 3081 y(end+7b0)f(:)89 b(jmpl)179 b([\045l2],)44
b(\045g0)1215 3263 y Fx(Figur)o(e)20 b(1.6)f(Completing)j(execution)f
(of)g(the)g(sample)f(pr)o(ogram.)600 3521 y(pairs)27
b(of)h(hexadecimal)e(digits.)47 b(In)28 b(examining)g(Figur)o(e)g(1.7,)
f(note)i(that)e(\223z\224)f(holds)j(the)f(value)f(0xa4)600
3620 y(\(the)21 b(\002nal)g(value)f(in)h(r)o(egister)f(\045r2\).)824
3736 y Fo(ISEM)p Fk(>)63 b Fs(dump)18 b(z,z)824 3827
y Fo(0a:00002068)88 b(00)44 b(00)h(00)f(a4)h(00)f(00)h(00)f(00)1121
b(........)1458 4010 y Fx(Figur)o(e)21 b(1.7)e(Illustrating)j(the)f
(dump)f(command.)p 600 4201 3300 4 v 600 4289 a Fs(Activity)e(1.6)93
b Fr(Use)19 b(the)g(dump)g(command)h(to)f(examine)g(the)g(values)f
(stor)o(ed)h(in)f(the)h(memory)h(locations)e Fq(x)p Fr(,)g
Fq(y)p Fr(,)g(and)h Fq(z)p Fr(.)p 600 4338 V 765 4498
2970 4 v 765 4585 a Fs(Memory)29 b(Addresses)105 b Fq(When)30
b(you)f(ar)o(e)f(interacting)i(with)h(ISEM,)e(memory)f(addr)o(esses)e
(can)31 b(be)765 4677 y(speci\002ed)18 b(using)g(integer)g(constants)i
(or)e(the)h(labels)f(de\002ned)h(in)g(an)g(assembly)f(language)g(pr)o
(ogram.)p 765 4726 V 600 5092 a Fy(The)i(symb)h(command)600
5250 y Fx(Because)g(memory)h(addr)o(esses)e(can)i(be)f(speci\002ed)h
(using)h(the)f(labels)f(de\002ned)g(in)i(an)e(executable)g(pr)o(o-)600
5350 y(gram,)35 b(you)d(may)g(be)g(inter)o(ested)f(in)i(knowing)h
(which)f(labels)f(have)f(de\002ned)h(values.)59 b(After)31
b(you)p eop
%%Page: 7 9
7 8 bop 0 100 a Fx(Lab)20 b(1.)41 b(Using)21 b(ISEM)e(\(the)i(Instr)o
(uctional)h(SP)-8 b(ARC)21 b(Emulator\))1223 b(7)0 333
y(have)21 b(loaded)g(an)g(executable)f(pr)o(ogram,)h(you)h(can)f(use)h
(the)f Fw(symb)h Fx(command)g(to)f(display)h(the)f(values)0
432 y(de\002ned)f(by)h(the)g(pr)o(ogram.)k(Figur)o(e)20
b(1.8)g(illustrates)h(the)f(symb)i(command.)224 550 y
Fo(ISEM)p Fk(>)63 b Fs(symb)224 642 y Fo(Symbol)44 b(List)1076
733 y(end)g(:)h(00000050)986 824 y(start)f(:)h(00000020)1166
916 y(x)f(:)h(00002060)1166 1007 y(y)f(:)h(00002064)1166
1098 y(z)f(:)h(00002068)870 1281 y Fx(Figur)o(e)21 b(1.8)e
(Illustrating)i(the)g(symb)h(command.)p 0 1482 3300 4
v 0 1570 a Fs(Activity)c(1.7)93 b Fr(Use)19 b(the)g(symb)g(command)h
(to)f(examine)f(the)h(labels)f(de\002ned)i(by)f(the)g(sample)g(pr)o
(ogram.)p 0 1618 V 0 1811 a Fy(The)h(edit)g(command)0
1969 y Fx(The)d Fw(edit)g Fx(command)g(sets)g(the)h(values)e(stor)o(ed)
h(in)g(memory)h(locations.)25 b(Each)17 b(edit)g(command)g(r)o(equir)o
(es)0 2068 y(two)j(ar)o(guments,)f(the)h(memory)g(location)g(to)g(edit)
f(and)g(the)g(value)g(to)h(stor)o(e)f(in)h(the)f(memory)i(location.)0
2168 y(For)29 b(example,)g(you)h(could)e(use)h(the)g(command)g
(\223edit)f(x)g(0x20\224)f(to)i(set)f(the)h(value)f(of)h(the)f(memory)0
2268 y(location)21 b(labeled)f(\223x\224)g(to)h(the)g(value)f(0x20.)p
0 2350 V 0 2438 a Fs(Activity)e(1.8)93 b Fr(Use)19 b(the)g(edit)g
(command)h(to)e(change)i(the)f(values)g(associated)g(with)g
Fq(x)f Fr(and)h Fq(y)p Fr(.)p 0 2488 V 0 2680 a Fy(The)h(reg)h(command)
0 2838 y Fx(Y)-8 b(ou)32 b(can)e(use)h(the)g Fw(r)o(eg)f
Fx(command)h(to)h(set)e(the)h(values)g(in)g(the)g(r)o(egisters.)55
b(The)30 b(r)o(eg)g(command)h(can)0 2937 y(have)c(zer)o(o,)g(one)h(or)f
(two)h(ar)o(guments.)44 b(The)27 b(\002rst)h(ar)o(gument)f(\(if)f(pr)o
(esent\))g(must)i(be)f(the)g(name)g(of)g(a)0 3037 y(SP)-8
b(ARC)25 b(r)o(egister)-6 b(.)36 b(The)25 b(second)g(ar)o(gument)g
(\(if)f(pr)o(esent\))g(must)h(be)f(a)h(value.)37 b(W)-5
b(ith)26 b(zer)o(o)d(ar)o(guments)0 3137 y(the)30 b(r)o(eg)f(command)h
(prints)g(the)g(contents)h(of)f(all)g(of)g(the)f(SP)-8
b(ARC)30 b(r)o(egisters.)52 b(W)-5 b(ith)31 b(one)g(ar)o(gument)0
3236 y(the)25 b(r)o(eg)g(command)h(prints)f(the)h(value)f(of)g(the)g
(speci\002ed)g(r)o(egister)-6 b(.)38 b(W)-5 b(ith)27
b(thr)o(ee)d(ar)o(guments)h(the)h(r)o(eg)0 3336 y(command)32
b(sets)g(the)f(r)o(egister)g(speci\002ed)g(by)h(the)g(\002rst)f(ar)o
(gument)g(to)h(the)g(value)f(speci\002ed)g(by)h(the)0
3436 y(second)21 b(ar)o(gument.)125 3535 y(T)-8 b(able)22
b(1.1)f(summarizes)i(the)g(names)f(of)h(the)g(SP)-8 b(ARC)22
b(r)o(egisters.)31 b(For)23 b(now)-8 b(,)24 b(you)f(only)h(need)e(to)h
(be)0 3635 y(familiar)d(with)h(the)g(integer)g(r)o(egisters)f(and)g
(the)h(pr)o(ogram)f(counters.)26 b(W)-8 b(e)21 b(will)g(consider)g(the)
g(r)o(emain-)0 3734 y(ing)g(r)o(egisters)g(in)g(later)f(labs.)1169
3996 y(T)-8 b(able)21 b(1.1)e(SP)-8 b(ARC)21 b(Registers)875
4141 y Fq(Gr)o(oup)d(name)630 b(Register)17 b(names)p
825 4172 1650 4 v 875 4236 a(Integer)h(r)o(egisters)510
b(\045r0\226\045r31)875 4327 y(Pr)o(ogram)17 b(counters)456
b(\045pc,)18 b(\045npc)875 4419 y(Multiply/divide)f(r)o(egister)227
b(\045y)875 4510 y(Floating)18 b(point)h(r)o(egisters)279
b(\045f0\226\045f31)875 4601 y(Floating)18 b(point)h(queue)358
b(\045fq)875 4693 y(Floating)18 b(point)h(status)g(r)o(egister)98
b(\045fsr)875 4784 y(Pr)o(ocessor)16 b(status)k(r)o(egister)247
b(\045psr)875 4875 y(W)l(indow)18 b(invalid)h(mask)314
b(\045wim)875 4967 y(T)-7 b(rap)19 b(base)f(r)o(egister)462
b(\045tbr)p 0 5254 3300 4 v 0 5342 a Fs(Activity)18 b(1.9)93
b Fr(Use)19 b(the)g(r)o(eg)g(command)h(to)e(examine)h(the)g(values)g
(of)g(the)g(r)o(egisters.)p 0 5391 V eop
%%Page: 8 10
8 9 bop 600 100 a Fx(8)1224 b(Lab)20 b(1.)40 b(Using)22
b(ISEM)d(\(the)i(Instr)o(uctional)h(SP)-8 b(ARC)20 b(Emulator\))725
333 y(For)26 b(example,)i(the)e(command)h(\223r)o(eg)f(\045pc)g
(start\224)g(r)o(esets)g(the)h(PC)f(to)h(the)g(start)f(of)h(the)g(pr)o
(ogram.)600 432 y(Y)-8 b(ou)22 b(can)e(use)h(this)h(command)f(when)g
(you)g(want)g(to)g(r)o(er)o(un)g(the)g(sample)f(pr)o(ogram.)600
652 y Fy(The)g(run)h(command)600 810 y Fx(Y)-8 b(ou)37
b(can)e(use)h(the)g Fw(run)g Fx(command)g(to)g(execute)f(your)h(pr)o
(ogram,)i(starting)e(with)h(the)e(instr)o(uction)600
910 y(pointed)27 b(to)f(by)h(the)f(PC.)g(This)h(command)g(does)g(not)g
(take)f(any)g(ar)o(guments)g(and)g(executes)g(instr)o(uc-)600
1009 y(tions)g(until)f(it)g(encounters)h(a)e(br)o(eakpoint,)h(an)g
(illegal)g(instr)o(uction,)i(or)e(a)f(pr)o(ogram)g(termination)i(in-)
600 1109 y(str)o(uction)c(\(ta)41 b(0\).)p 600 1186 3300
4 v 600 1274 a Fs(Activity)24 b(1.10)101 b Fr(Use)26
b(the)g(r)o(eg)f(command)i(to)e(r)o(eset)h(the)f(value)h(of)f(\045pc.)
45 b(Then)25 b(use)g(the)h(run)e(command)j(to)e(r)o(erun)g(the)600
1366 y(sample)19 b(pr)o(ogram.)p 600 1415 V 725 1531
a Fx(Figur)o(e)24 b(1.9)f(illustrates)i(the)g(r)o(un)g(command.)37
b(This)25 b(interaction)g(starts)g(by)f(setting)i(the)e(\045pc)g(and)
600 1631 y(then)j(issuing)g(the)f(r)o(un)h(command.)42
b(Note)26 b(that)g(the)g(r)o(un)h(command)f(pr)o(oduces)f(an)h(err)o
(or)f(message.)600 1731 y(In)d(this)g(case,)e(the)i(r)o(un)g(command)f
(stopped)h(executing)f(pr)o(ogram)g(instr)o(uctions)i(because)d(it)i
(encoun-)600 1830 y(ter)o(ed)g(an)g(illegal)h(instr)o(uction.)34
b(Whenever)23 b(you)g(load)g(a)f(pr)o(ogram,)h(ISEM)e(makes)i(sur)o(e)g
(that)f(ther)o(e)h(is)600 1930 y(an)e(illegal)f(instr)o(uction)j
(following)f(the)f(last)g(instr)o(uction)h(in)f(your)g(pr)o(ogram.)824
2039 y Fo(ISEM)p Fk(>)63 b Fs(reg)18 b(\045pc)h(start)824
2130 y Fo(Register:)43 b(\045pc)i(=)f(20)824 2313 y(ISEM)p
Fk(>)63 b Fs(run)824 2404 y Fo(Program)44 b(exited)g(normally.)1338
2587 y Fx(Figur)o(e)20 b(1.9)g(Illustrating)h(the)g(r)o(eg)f(and)g(r)o
(un)i(commands.)600 2892 y Fy(The)e(break)g(command)600
3050 y Fx(Y)-8 b(ou)32 b(can)e(use)h(the)g Fw(br)o(eak)g
Fx(command)g(to)g(set)g(br)o(eakpoints)f(\(the)h(r)o(un)g(command)g
(terminates)f(when)600 3150 y(it)i(encounters)f(a)g(br)o(eakpoint\).)56
b(T)-8 b(o)32 b(set)f(a)g(br)o(eakpoint,)i(you)f(can)f(issue)h(a)f(br)o
(eak)f(command)h(with)600 3250 y(a)g(single)g(ar)o(gument,)i(the)f
(addr)o(ess)d(of)i(the)g(br)o(eakpoint.)56 b(After)30
b(you)i(have)e(set)h(a)g(br)o(eakpoint,)i(the)600 3349
y(r)o(un)22 b(command)h(will)f(stop)h(executing)f(your)g(pr)o(ogram)f
(just)i Fw(after)f Fx(it)g(executes)g(the)g(instr)o(uction)h(at)f(the)
600 3449 y(speci\002ed)e(addr)o(ess.)725 3548 y(Figur)o(e)h(1.10)f
(illustrates)j(the)f(use)g(of)g(the)g(br)o(eak)f(command.)29
b(In)23 b(this)f(case,)g(the)g(br)o(eakpoint)f(stops)600
3648 y(the)e(pr)o(ogram)g(20)f(bytes)h(after)f(the)h(start)f
(label\227just)i(befor)o(e)e(the)h(\223add)36 b(\045r2,)18
b(\045r2,)g(\045r2\224)g(instr)o(uction.)600 3748 y(Note)j(that)g(ISEM)
e(r)o(eports)h(the)h(br)o(eakpoint)f(addr)o(ess)g(in)h(hexadecimal.)824
3857 y Fo(ISEM)p Fk(>)63 b Fs(reg)18 b(\045pc)h(start)824
3948 y Fo(Register:)43 b(\045pc)i(=)f(20)824 4131 y(ISEM)p
Fk(>)63 b Fs(break)18 b(start+20)824 4313 y Fo(ISEM)p
Fk(>)63 b Fs(run)824 4405 y Fo(Breakpoint)43 b(encountered)g(at)i
(start+14)1447 4587 y Fx(Figur)o(e)21 b(1.10)e(Illustrating)i(the)g(br)
o(eak)e(command.)600 4893 y Fy(The)h(help)g(command)600
5051 y Fx(The)30 b(help)h(command)g(may)f(be)g(the)g(most)i(important)e
(command)h(pr)o(ovided)e(by)i(ISEM.)e(The)h(help)600
5150 y(command)j(takes)f(a)g(single,)k(optional)d(ar)o(gument.)60
b(When)32 b(it)h(is)g(supplied,)i(the)d(ar)o(gument)g(is)h(the)600
5250 y(name)27 b(of)h(the)g(item)g(that)f(you)h(would)g(like)g(mor)o(e)
g(information)g(about.)46 b(W)-5 b(ithout)29 b(any)f(ar)o(guments,)600
5350 y(the)21 b(help)g(command)g(tells)g(you)g(the)g(items)g(that)g
(help)g(knows)h(about.)p eop
%%Page: 9 11
9 10 bop 0 100 a Fx(Lab)20 b(1.)41 b(Using)21 b(ISEM)e(\(the)i(Instr)o
(uctional)h(SP)-8 b(ARC)21 b(Emulator\))1223 b(9)0 333
y Fy(The)20 b(quit)g(command)0 491 y Fx(When)h(you)g(ar)o(e)f(done)h
(interacting)g(with)g(ISEM,)f(you)h(can)f(issue)h(the)g
Fw(quit)g Fx(command.)0 733 y Fp(1.3.3)99 b(Memory)24
b(regions)0 891 y Fx(The)34 b(ISEM/SP)-8 b(ARC)32 b(ar)o(chitectur)o(e)
g(pr)o(ovides)h(two)h(separate)e(r)o(egions)i(of)g(memory:)52
b(one)34 b(for)f(text)0 991 y(\(code\))d(and)g(another)h(for)g(data.)55
b(This)31 b(means)g(that)g(ther)o(e)f(ar)o(e)f(two)j(memory)f
(locations)h(with)g(the)0 1091 y(addr)o(ess)18 b(100,)f(one)j(in)g(the)
f(pr)o(ogram)g(memory)h(and)e(another)i(in)f(the)h(data)e(memory)-9
b(.)25 b(ISEM)18 b(is)i(r)o(eason-)0 1190 y(ably)k(intelligent)i(about)
f(when)g(it)g(uses)g(each)f(of)h(these)f(memories.)38
b(ISEM)24 b(always)g(fetches)h(instr)o(uc-)0 1290 y(tions)c(fr)o(om)e
(the)g(pr)o(ogram)g(memory)h(and)f(the)h(load)f(and)g(stor)o(e)h
(operations)g(always)f(r)o(efer)f(to)i(the)f(data)0 1390
y(memory)-9 b(.)25 b(In)18 b(addition,)g(the)g(load)g(command)g(always)
g(loads)f(pr)o(ograms)h(into)g(the)g(pr)o(ogram)f(memory)0
1489 y(and)j(the)h(dump)g(and)f(edit)h(commands)g(use)g(the)g(data)e
(memory)j(by)f(default.)0 1775 y Fu(1.4)119 b(Summary)0
1964 y Fx(In)21 b(this)g(lab)f(we)g(have)g(described)f(the)h(steps)h
(in)g(the)f(translation)h(pr)o(ocess)f(and)f(intr)o(oduced)h(that)g
(basic)0 2064 y(functions)i(pr)o(ovided)d(by)i(ISEM.)125
2163 y(The)34 b(ISEM)g(assembler)-6 b(,)37 b(isem-as,)h(translates)d
(an)f(assembly)h(language)g(pr)o(ogram)f(into)i(object)0
2263 y(code.)41 b(The)25 b(linker)-6 b(,)28 b(isem-ld,)f(translates)e
(an)h(object)g(code)g(pr)o(ogram)f(into)i(an)e(executable)g(pr)o
(ogram.)0 2363 y(Figur)o(e)e(1.1)-5 b(1)21 b(summarizes)i(the)g(steps)g
(uses)h(to)f(translate)f(an)h(assembly)g(language)g(pr)o(ogram)f(into)i
(an)0 2462 y(executable)19 b(pr)o(ogram.)575 2653 y Fq(foo.s)403
2712 y Fj(')p 403 2876 4 1 v 403 3044 a(&)901 2712 y($)p
901 2876 V 901 3044 a(\045)p 571 3044 167 4 v 571 2712
V 500 2848 a Fq(assembly)576 2940 y(code)p 903 2878 499
4 v 1318 2876 a Fi(-)703 3149 y Fq(isem-as)f Fl(\000)p
Fq(als)g Fl(\000)p Fq(o)g(foo.o)g(foo.s)1567 2653 y(foo.o)1399
2712 y Fj(')p 1399 2876 4 1 v 1399 3044 a(&)1897 2712
y($)p 1897 2876 V 1897 3044 a(\045)p 1567 3044 167 4
v 1567 2712 V 1554 2848 a Fq(object)1572 2940 y(code)p
1899 2878 499 4 v 2314 2876 a Fi(-)1810 3149 y Fq(isem-ld)f
Fl(\000)p Fq(o)h(foo)g(foo.o)2593 2653 y(foo)2396 2712
y Fj(')p 2396 2876 4 1 v 2396 3044 a(&)2894 2712 y($)p
2894 2876 V 2894 3044 a(\045)p 2563 3044 167 4 v 2563
2712 V 2472 2848 a Fq(executable)2569 2940 y(code)1130
3432 y Fx(Figur)o(e)j(1.1)-5 b(1)19 b(T)-7 b(ranslation)21
b(steps)125 3631 y(When)31 b(you)g(have)f(an)h(executable)e(pr)o
(ogram,)k(you)e(can)f(use)h(ISEM)f(to)h(execute)f(and)g(test)h(your)0
3731 y(pr)o(ogram.)k(Figur)o(e)23 b(1.12)f(illustrates)j(the)f(basic)f
(components)j(of)e(ISEM)e(and)i(shows)h(the)f(commands)0
3831 y(that)30 b(manipulate)g(these)h(components.)55
b(T)-8 b(able)30 b(1.2)f(summarizes)h(the)h(ISEM)e(commands)i(that)f
(we)0 3930 y(have)20 b(discussed)h(in)g(this)h(lab.)0
4216 y Fu(1.5)119 b(Review)30 b(Questions)104 4405 y
Fx(1.)41 b(What)17 b(is)g(the)g(name)h(of)f(the)g(tool)h(that)f
(translates)g(an)g(assembly)g(language)g(pr)o(ogram)g(into)h(object)208
4505 y(code?)57 b(What)32 b(is)g(the)g(name)f(of)h(the)g(tool)g(that)g
(translates)f(object)h(code)f(into)i(an)e(executable)208
4604 y(pr)o(ogram?)104 4704 y(2.)41 b(What)20 b(does)h(the)g(trace)f
(command)h(do?)104 4804 y(3.)41 b(What)20 b(does)h(the)g(dump)g
(command)g(do?)104 4903 y(4.)41 b(What)20 b(does)h(the)g(symb)g
(command)g(do?)104 5003 y(5.)41 b(What)20 b(does)h(the)g(edit)f
(command)i(do?)104 5103 y(6.)41 b(What)20 b(does)h(the)g(r)o(eg)f
(command)h(do?)104 5202 y(7.)41 b(What)20 b(does)h(the)g(r)o(un)g
(command)g(do?)104 5302 y(8.)41 b(What)20 b(is)h(a)g(br)o(eakpoint?)k
(Explain)20 b(how)i(to)f(set)g(a)f(br)o(eakpoint)g(in)h(ISEM.)p
eop
%%Page: 10 12
10 11 bop 600 100 a Fx(10)1182 b(Lab)20 b(1.)40 b(Using)22
b(ISEM)d(\(the)i(Instr)o(uctional)h(SP)-8 b(ARC)20 b(Emulator\))p
702 250 605 4 v 702 947 4 698 v 1304 947 V 702 950 605
4 v 879 571 a Fq(Symbol)924 662 y(table)p 1499 250 1203
4 v 1499 1445 4 1196 v 2698 1445 V 1499 1448 1203 4 v
1958 365 a(Memory)p 1599 449 406 4 v 1599 1346 4 897
v 2001 1346 V 1599 1349 406 4 v 1723 923 a(Data)p 2197
449 V 2197 1346 4 897 v 2599 1346 V 2197 1349 406 4 v
2331 870 a(T)-7 b(ext)2297 961 y(\(code\))3195 365 y(Registers)p
2894 250 904 4 v 2894 1545 4 1296 v 3794 1545 V 2894
1548 904 4 v 2994 1346 705 4 v 2994 1445 4 100 v 3275
1411 a(\045pc)p 3695 1445 V 2994 1448 705 4 v 2994 449
V 2994 1246 4 798 v 3695 1246 V 2994 1249 705 4 v 3262
1222 a(\045r31)p 2997 1148 698 4 v 3262 1122 a(\045r30)p
2997 1048 V 3337 923 a(.)3337 956 y(.)3337 989 y(.)p
2997 849 V 3281 823 a(\045r3)p 2997 749 V 3281 724 a(\045r2)p
2997 650 V 3105 618 a(\045r1)18 b(\(r)o(eserved\))p 2997
550 V 3176 518 a(\045r0)g(\(zer)o(o\))1231 1820 y(load)p
1302 1744 4 200 v 1283 1545 a Fi(C)1262 1462 y(C)1241
1379 y(C)1221 1296 y(C)1200 1213 y(C)1179 1130 y(C)1158
1047 y(C)1154 1030 y(C)-21 b(O)1304 1545 y(\000)1387
1462 y(\000)1470 1379 y(\000)1519 1329 y(\000)-83 b(\022)1304
1545 y(\020)1387 1517 y(\020)1470 1489 y(\020)1553 1462
y(\020)1636 1434 y(\020)1719 1406 y(\020)1802 1379 y(\020)1885
1351 y(\020)1968 1323 y(\020)2051 1296 y(\020)2117 1274
y(\020)g(1)p 854 1744 4 798 v 855 1744 a(?)765 1811 y
Fq(symb)p 1900 1744 4 299 v 1901 1744 a Fi(?)1801 1811
y Fq(dump)p 2298 1744 V 2300 1528 a Fi(6)2236 1820 y
Fq(edit)p 3344 1644 4 100 v 3346 1628 a Fi(6)p 3344 1744
V 3346 1744 a(?)3293 1801 y Fq(r)o(eg)1576 2109 y Fx(Figur)o(e)20
b(1.12)f(The)i(components)h(of)f(ISEM)1640 2376 y(T)-8
b(able)21 b(1.2)e(The)i(commands)g(of)g(ISEM)739 2500
y Fq(Syntax)698 b(Meaning)p 689 2530 3123 4 v 739 2594
a Fs(break)18 b Fr(addr)o(ess)487 b Fq(Set)19 b(an)h(execution)e(br)o
(eakpoint.)739 2686 y Fs(dump)g Fq([)p Fr(addr)o(ess)h
Fq([,)f Fr(addr)o(ess)p Fq(]])100 b(Display)18 b(the)h(contents)h(of)e
(memory)739 2777 y Fs(edit)g Fr(addr)o(ess)i(value)367
b Fq(Set)19 b(the)h(contents)g(of)e(a)h(memory)e(location.)739
2868 y Fs(help)h Fq([)p Fr(topic)p Fq(])554 b(Pr)o(ovide)18
b(information)g(about)i(an)g(isem)d(topic)i(or)f(command.)739
2960 y Fs(load)g Fr(\002lename)503 b Fq(Load)19 b(an)g(executable)g(pr)
o(ogram.)739 3051 y Fs(quit)780 b Fq(Exit)18 b(ISEM.)739
3142 y Fs(symb)735 b Fq(Display)18 b(the)h(symbol)f(table.)739
3234 y Fs(reg)g Fq([)p Fr(r)o(egister)h Fq([,)f Fr(value)p
Fq(]])251 b(Display)18 b(or)g(set)g(the)i(contents)g(of)e(a)h(r)o
(egister)-6 b(.)739 3325 y Fs(run)801 b Fq(Execute)18
b(instr)o(uctions)i(to)e(a)i(br)o(eakpoint)e(or)g(illegal)f(instr)o
(uction.)739 3416 y Fs(trace)761 b Fq(Execute)18 b(the)i(next)f(instr)o
(uction.)1362 3532 y Fh(Notes:)1328 3611 y(Items)d(in)h(squar)o(e)g
(brackets)g(\(\223[\224)g(.)10 b(.)g(.)g(\223]\224\))16
b(ar)o(e)h(optional.)1353 3690 y Fg(addr)o(ess)100 b
Fh(a)17 b(memory)f(addr)o(ess)g(\(may)g(be)h(a)f(label)h(or)h(number)
1407 3769 y Fg(value)101 b Fh(an)16 b(integer)g(value)h(\(0x.)10
b(.)g(.)g(means)15 b(hexadecimal)i(notation\))1328 3848
y Fg(\002lename)100 b Fh(the)16 b(name)g(of)h(a)f(\002le)1349
3926 y Fg(r)o(egister)100 b Fh(the)16 b(name)g(of)h(a)f(r)o(egister)600
4283 y Fu(1.6)119 b(Exercises)704 4472 y Fx(1.)41 b(After)25
b(you)i(have)e(successfully)i(assembled)f(the)g(sample)g(pr)o(ogram,)h
(perform)f(the)h(following)808 4572 y(modi\002cations)g(to)h(the)e
(second)h(line)g(of)g(the)g(pr)o(ogram)f(\(x:)g(.wor)o(d)53
b(0x42\).)41 b(In)27 b(each)f(case,)h(you)808 4671 y(should)22
b(start)f(with)i(the)e(original)h(sample)g(pr)o(ogram)f(and)g(you)h
(should)g(write)g(down)g(the)g(err)o(or)808 4771 y(message)e(\(if)g
(any\))h(pr)o(oduced)e(by)i(the)g(assembler)-6 b(.)886
4904 y(a.)41 b(r)o(emove)20 b(the)h(\223:\224)k(following)d(\223x\224,)
882 5003 y(b.)41 b(r)o(emove)20 b(the)h(\223.\224)k(pr)o(eceding)19
b(\223wor)o(d\224.)704 5136 y(2.)41 b(After)25 b(you)i(have)e
(successfully)i(assembled)f(the)g(sample)g(pr)o(ogram,)h(perform)f(the)
h(following)808 5236 y(modi\002cations)e(to)f(the)g(eleventh)g(line)g
(of)g(the)g(pr)o(ogram)f(\(ld)48 b([\045r3],)22 b(\045r3\).)33
b(In)24 b(each)g(case,)f(you)808 5335 y(should)f(start)f(with)i(the)e
(original)h(sample)g(pr)o(ogram)f(and)g(you)h(should)g(write)g(down)g
(the)g(err)o(or)p eop
%%Page: 11 13
11 12 bop 0 100 a Fx(Lab)20 b(1.)41 b(Using)21 b(ISEM)e(\(the)i(Instr)o
(uctional)h(SP)-8 b(ARC)21 b(Emulator\))1187 b(1)-5 b(1)208
333 y(message)20 b(\(if)g(any\))h(pr)o(oduced)e(by)i(the)g(assembler)-6
b(.)286 465 y(a.)41 b(r)o(emove)20 b(the)h(\223[\224)f(and)g(\223]\224)
f(surr)o(ounding)j(\002rst)f(\223\045r3\224,)282 565
y(b.)41 b(r)o(emove)20 b(the)h(\223\045\224)f(pr)o(eceding)f(the)i
(\002rst)g(\223r3\224.)104 698 y(3.)41 b(Load)20 b(the)h(sample)g(pr)o
(ogram)f(into)i(ISEM,)e(r)o(un)h(it,)g(and)g(then)g(issue)g(the)h
(following)g(ISEM)e(com-)208 798 y(mands.)33 b(In)23
b(each)g(case,)g(describe)f(the)i(output)f(pr)o(oduced)f(by)h(ISEM)g
(and)f(explain)h(why)h(ISEM)208 897 y(pr)o(oduced)18
b(the)h(r)o(esults)g(that)h(it)g(pr)o(oduced)e(\(you)h(may)h(need)f(to)
h(use)f(the)h(help)f(command)h(to)g(get)208 997 y(further)g
(information)h(about)g(the)g(commands\).)286 1130 y(a.)41
b(dump)21 b(x,z)282 1229 y(b.)41 b(dump)21 b(z,x)291
1329 y(c.)41 b(dump)21 b(z)277 1429 y(d.)41 b(dump)21
b(x)288 1528 y(e.)41 b(dump)21 b(start,end)104 1661 y(4.)41
b(In)17 b(examining)h(Figur)o(e)e(1.4,)h(note)g(that)h(the)f(value)f
(of)i(the)f(PC)g(is)h(given)f(as)g(\22308:00000020\224.)h(What)208
1761 y(does)i(the)h(\22308:\224)j(mean?)104 1860 y(5.)41
b(In)23 b(examining)h(Figur)o(e)f(1.7,)g(note)g(that)h(the)f(addr)o
(ess)f(for)h Fw(z)g Fx(is)h(given)g(as)f(\2230a:00002068\224.)k(What)
208 1960 y(does)20 b(the)h(\2230a:\224)j(mean?)p eop
%%Page: 12 14
12 13 bop 600 100 a Fx(12)1182 b(Lab)20 b(1.)40 b(Using)22
b(ISEM)d(\(the)i(Instr)o(uctional)h(SP)-8 b(ARC)20 b(Emulator\))p
eop
%%Page: 13 15
13 14 bop 0 474 3300 12 v 0 723 a Fv(Laboratory)53 b(2)0
976 y(Assembly)e(Language)h(Programming)p 0 1092 1200
12 v 0 1449 a Fu(2.1)119 b(Goal)0 1638 y Fx(T)-8 b(o)21
b(intr)o(oduce)g(the)g(fundamentals)f(of)h(assembly)g(language)f(pr)o
(ogramming.)0 1924 y Fu(2.2)119 b(Objectives)0 2113 y
Fx(After)20 b(completing)h(this)h(lab,)e(you)h(will)h(be)e(able)g(to)h
(write)g(assembly)g(language)g(pr)o(ograms)f(that)h(use:)125
2296 y Ft(\017)41 b Fx(The)20 b(.text)h(and)f(.data)f(assembler)i(dir)o
(ectives,)125 2396 y Ft(\017)41 b Fx(The)20 b(.wor)o(d)g(assembler)h
(dir)o(ective,)125 2495 y Ft(\017)41 b Fx(The)20 b(integer)h(r)o
(egisters)f(\(\045r0\226\045r31\),)125 2595 y Ft(\017)41
b Fx(The)20 b(\(synthetic\))h(set)g(operation,)125 2694
y Ft(\017)41 b Fx(The)20 b(load)h(and)f(stor)o(e)g(operations,)125
2794 y Ft(\017)41 b Fx(The)20 b(signed)h(integer)g(addition)g(and)f
(subtraction)h(operations,)g(and)125 2894 y Ft(\017)41
b Fx(The)20 b(\(synthetic\))h(mov)h(operation.)0 3179
y Fu(2.3)119 b(Discussion)0 3369 y Fx(In)22 b(this)g(lab)f(we)h(intr)o
(oduce)f(the)h(fundamentals)f(of)h(SP)-8 b(ARC)21 b(assembly)h
(language)f(pr)o(ogramming.)29 b(In)0 3468 y(particular)-6
b(,)24 b(we)h(consider)g(basic)f(assembler)g(dir)o(ectives,)h(r)o
(egister)f(naming)h(conventions,)i(the)e(\(syn-)0 3568
y(thetic\))d(load)h(and)f(stor)o(e)g(operations,)h(the)g(integer)g
(addition)f(and)h(subtraction)f(operations,)i(and)e(the)0
3668 y(\(synthetic\))e(r)o(egister)f(copy)g(and)g(r)o(egister)g(set)h
(operations.)25 b(W)-8 b(e)20 b(begin)g(by)f(considering)i(the)e(str)o
(uctur)o(e)0 3767 y(of)i(assembly)g(language)f(pr)o(ograms.)0
4010 y Fp(2.3.1)99 b(Assembly)25 b(language)0 4168 y
Fx(Assembly)31 b(language)f(pr)o(ograms)f(ar)o(e)g(line-oriented.)54
b(That)30 b(is,)j(the)e(assembler)f(translates)g(an)g(as-)0
4268 y(sembly)21 b(language)g(pr)o(ogram)f(one)i(line)f(at)f(a)h(time.)
26 b(The)21 b(assembler)g(r)o(ecognizes)f(four)h(types)g(of)g(lines:)0
4367 y(empty)g(lines,)g(label)f(de\002nition)i(lines,)f(dir)o(ective)f
(lines,)h(and)f(instr)o(uction)j(lines.)125 4550 y Ft(\017)41
b Fx(A)20 b(line)i(that)f(only)h(has)f(spaces)g(or)g(tabs)g(\(i.e.,)f
(white)i(space\))e(is)h(an)g Fw(empty)f(line)p Fx(.)27
b(Empty)22 b(lines)f(ar)o(e)208 4649 y(ignor)o(ed)f(by)h(the)g
(assembler)-6 b(.)125 4749 y Ft(\017)41 b Fx(A)28 b Fw(label)i
(de\002nition)e(line)h Fx(consists)i(of)d(a)h(label)f(de\002nition.)51
b(A)28 b(label)g(de\002nition)i(consists)g(of)f(an)208
4849 y(identi\002er)18 b(followed)h(by)g(a)f(colon)h(\(\223:\224\).)k
(As)c(in)g(most)g(pr)o(ogramming)g(languages,)g(an)f(identi\002er)208
4948 y(must)27 b(start)g(with)g(a)g(letter)f(\(or)h(an)g(underscor)o
(e\))f(and)g(may)h(be)g(followed)g(by)g(any)g(number)g(of)208
5048 y(letters,)20 b(underscor)o(es,)g(and)g(digits.)125
5148 y Ft(\017)41 b Fx(A)28 b Fw(dir)o(ective)g(line)i
Fx(consists)g(of)f(an)g(optional)g(label)g(de\002nition,)j(followed)d
(by)g(the)g(name)g(of)g(an)208 5247 y(assembler)23 b(dir)o(ective,)g
(followed)h(by)g(the)g(ar)o(guments)g(for)f(the)h(dir)o(ective.)33
b(In)25 b(this)f(lab)f(we)h(will)208 5347 y(consider)c(thr)o(ee)g
(assembler)h(dir)o(ectives:)j(.data,)19 b(.wor)o(d,)h(and)g(.text.)1608
5560 y(13)p eop
%%Page: 14 16
14 15 bop 600 100 a Fx(14)1671 b(Lab)20 b(2.)40 b(Assembly)22
b(Language)e(Pr)o(ogramming)725 333 y Ft(\017)41 b Fx(An)27
b Fw(instruction)h(line)g Fx(consists)h(of)e(an)h(optional)g(label)f
(de\002nition,)j(followed)e(by)g(the)g(name)f(of)808
432 y(an)22 b(operation,)g(followed)h(by)f(the)g(operands.)29
b(In)23 b(this)g(lab)e(we)i(will)f(consider)h(\002ve)f(operations:)808
532 y(load,)e(stor)o(e,)g(set,)h(add,)e(and)h(sub.)725
715 y(Every)33 b(line)h(can)f(conclude)h(with)g(a)g(comment.)65
b(Comments)35 b(begin)f(with)g(the)g(character)e(\223!\224.)600
814 y(Whenever)23 b(it)h(encounters)g(a)f(\223!\224,)h(the)f(assembler)
h(ignor)o(es)f(the)h(\223!\224)34 b(and)23 b(the)h(r)o(emaining)f
(characters)600 914 y(on)e(the)g(line.)p 600 1010 3300
4 v 600 1098 a Fs(Activity)16 b(2.1)92 b Fr(Consider)16
b(the)h(SP)-10 b(ARC)16 b(pr)o(ogram)i(pr)o(esented)f(in)f(Figur)o(e)g
(1.1.)23 b(For)16 b(each)i(nonempty)f(line)f(in)g(the)h(pr)o(ogram,)600
1190 y(identify)h(any)h(labels)f(de\002ned)i(and)e(identify)h(any)f
(assembler)h(dir)o(ectives)g(and)g(assembly)g(language)f(instructions.)
p 600 1238 V 600 1443 a Fp(2.3.2)99 b(Directives)600
1601 y Fx(In)26 b(this)h(lab)e(we)h(intr)o(oduce)g(thr)o(ee)f(dir)o
(ectives:)35 b(.data,)25 b(.text,)i(and)e(.wor)o(d.)41
b(The)26 b(\002rst)g(two)g(\(.data)e(and)600 1701 y(.text\))g(ar)o(e)g
(used)h(to)g(separate)f(variable)g(declarations)g(and)h(assembly)g
(language)g(instr)o(uctions.)40 b(The)600 1800 y(.wor)o(d)20
b(dir)o(ective)g(is)h(used)f(to)h(allocate)f(and)h(initialize)f(space)g
(for)h(a)f(variable.)725 1900 y(Each)33 b(gr)o(oup)i(of)f(variable)f
(declarations)h(should)h(be)f(pr)o(eceded)f(by)h(a)g(.data)f(dir)o
(ective.)66 b(Each)600 2000 y(gr)o(oup)28 b(of)h(assembly)f(language)h
(instr)o(uctions)h(should)f(be)f(pr)o(eceded)f(by)h(a)g(.text)g(dir)o
(ective.)48 b(Using)600 2099 y(these)23 b(dir)o(ectives,)e(you)i(could)
g(mix)g(variable)e(declarations)h(and)g(assembly)h(language)f(instr)o
(uctions;)600 2199 y(however)-6 b(,)26 b(for)e(the)h(pr)o(esent,)g
(your)g(assembly)h(language)e(pr)o(ograms)g(should)i(consist)g(of)f(a)f
(gr)o(oup)h(of)600 2298 y(variable)19 b(declarations)i(followed)g(by)g
(a)f(gr)o(oup)g(of)h(assembly)g(language)f(instr)o(uctions.)725
2398 y(A)f(variable)f(declaration)h(starts)g(with)h(a)f(label)g
(de\002nition)i(\(the)e(name)h(of)f(the)h(variable\),)e(followed)600
2498 y(by)i(a)g(.wor)o(d)f(dir)o(ective,)g(followed)i(by)f(the)g
(initial)h(value)e(for)h(the)h(variable.)j(The)c(assembler)g(supports)
600 2597 y(a)27 b(fairly)f(\003exible)i(syntax)f(for)g(specifying)h
(the)f(initial)h(value.)44 b(For)28 b(now)-8 b(,)30 b(we)d(will)h(use)f
(simple)h(inte-)600 2697 y(ger)23 b(values)g(to)h(initialize)g(our)g
(variables.)33 b(By)23 b(default,)g(the)h(assembler)f(assumes)h(that)f
(numbers)h(ar)o(e)600 2797 y(expr)o(essed)g(using)j(decimal)e
(notation.)41 b(Y)-8 b(ou)27 b(can)e(use)g(hexadecimal)g(notation)i(if)
e(you)h(use)g(the)g(\2230x\224)600 2896 y(pr)o(e\002x.)f(Example)19
b(2.1)h(illustrates)h(a)f(gr)o(oup)h(of)f(variable)g(declarations.)p
600 3023 V 600 3102 a Fs(Example)26 b(2.1)75 b Fr(Give)26
b(dir)o(ectives)f(to)h(allocate)g(space)g(for)f(thr)o(ee)h(variables,)h
Fk(x)p Fr(,)f Fk(y)s Fr(,)g(and)f Fk(z)s Fr(.)43 b(Y)-8
b(ou)25 b(should)h(initialize)e(these)600 3194 y(variables)19
b(to)f(decimal)i(23,)f(hexadecimal)h(3fce,)f(and)g(decimal)g(42,)g(r)o
(espectively)m(.)1183 3360 y Fo(.data)492 b(!)45 b(start)f(a)g(group)g
(of)h(variable)e(declarations)824 3451 y(x:)269 b(.word)133
b(23)269 b(!)45 b(int)f(x)h(=)f(23;)824 3542 y(y:)269
b(.word)133 b(0x3fce)89 b(!)45 b(int)f(y)h(=)f(0x3fce;)824
3634 y(z:)269 b(.word)133 b(42)269 b(!)45 b(int)f(z)h(=)f(42;)p
600 3670 V 600 3963 a Fp(2.3.3)99 b(Labels)600 4121 y
Fx(In)25 b(an)f(assembly)h(language)g(pr)o(ogram,)f(a)g(label)g(is)h
(simply)h(a)e(name)h(for)f(an)h(addr)o(ess.)35 b(For)25
b(example,)600 4220 y(given)h(the)f(declarations)g(shown)i(in)e
(Example)g(2.1,)g(\223x\224)f(is)i(a)f(name)g(for)g(the)g(addr)o(ess)f
(of)h(a)g(memory)600 4320 y(location)j(that)g(was)g(initialized)f(to)h
(23.)45 b(On)29 b(the)f(SP)-8 b(ARC)27 b(an)h(addr)o(ess)e(is)i(a)f
(32-bit)g(value.)45 b(As)28 b(such,)600 4420 y(labels)20
b(ar)o(e)g(32-bit)f(values)i(when)g(they)g(ar)o(e)f(used)g(in)h
(assembly)g(language)g(pr)o(ograms.)600 4662 y Fp(2.3.4)99
b(Integer)24 b(registers)600 4820 y Fx(The)i(SP)-8 b(ARC)26
b(integer)g(unit)h(pr)o(ovides)e(thirty-two)i(general)f(purpose)g(r)o
(egisters.)41 b(Each)25 b(integer)h(r)o(eg-)600 4920
y(ister)h(holds)h(32-bits.)43 b(The)27 b(integer)g(r)o(egisters)f(ar)o
(e)g(called)g(\045r0)g(thr)o(ough)h(\045r31.)43 b(In)28
b(addition)e(to)i(the)600 5020 y(names)23 b(\045r0)f(thr)o(ough)i
(\045r31,)e(the)h(integer)h(r)o(egisters)e(have)h(alternate)f(names)h
(\(aliases\))f(as)h(shown)i(in)600 5119 y(T)-8 b(able)20
b(2.1.)725 5219 y(The)i(letter)h(used)g(in)g(each)g(gr)o(oup)f(of)h
(aliases)g(\(g,)g(o,)g(l,)h(or)f(i\))f(denotes)i(the)f(name)g(for)f
(the)h(gr)o(oup)g(of)600 5318 y(r)o(egisters.)36 b(The)24
b(gr)o(oup)h(names)f(ar)o(e)f(r)o(elated)g(to)i(pr)o(ocedur)o(e)d
(calling)j(conventions.)38 b(W)-8 b(e)24 b(will)i(discuss)p
eop
%%Page: 15 17
15 16 bop 0 100 a Fx(Lab)20 b(2.)41 b(Assembly)21 b(Language)f(Pr)o
(ogramming)1672 b(15)911 393 y(T)-8 b(able)20 b(2.1)g(Aliases)g(for)h
(the)g(integer)g(r)o(egisters)741 539 y Fq(Integer)d(r)o(egisters)97
b(Alternate)19 b(names)100 b(Gr)o(oup)18 b(name)p 691
569 1919 4 v 741 633 a(\045r0\226\045r7)337 b(\045g0\226\045g7)322
b(Global)19 b(r)o(egisters)741 725 y(\045r8\226\045r15)300
b(\045o0\226\045o7)324 b(Output)19 b(r)o(egisters)741
816 y(\045r16\226\045r23)263 b(\045l0\226\045l7)362 b(Local)18
b(r)o(egisters)741 907 y(\045r24\226\045r31)263 b(\045i0\226\045i7)362
b(Input)20 b(r)o(egisters)0 1267 y Fx(the)j(meanings)h(of)f(these)g(gr)
o(oup)g(names)h(when)f(we)h(consider)f(r)o(egister)f(windows)i(in)g
(Lab)e(1)-5 b(1.)32 b(In)24 b(the)0 1366 y(meantime,)30
b(we)f(will)g(use)g(the)g(\045r)f(names)g(in)h(our)g(assembly)g
(language)f(pr)o(ograms.)49 b(As)28 b(you)h(may)0 1466
y(have)g(noted,)j(ISEM)c(uses)h(the)h(alternate)e(names)i(when)g(it)g
(r)o(eports)f(the)g(contents)i(of)e(the)h(r)o(egisters)0
1566 y(and)20 b(when)i(it)f(shows)h(the)f(next)f(instr)o(uction)j(to)e
(execute.)p 165 1670 2970 4 v 165 1758 a Fs(Register)j(Names)100
b Fq(Register)22 b(names)i(on)f(the)i(SP)-7 b(ARC)24
b(always)f(start)h(with)h(a)f(per)o(cent)f(sign)g(\(\224\045\224\).)165
1849 y(For)18 b(example,)f(the)i(integer)f(r)o(egisters)e(ar)o(e)i
(named)h(\045r0)f(thr)o(ough)h(\045r31.)p 165 1899 V
0 2322 a Fp(2.3.5)99 b(\045r0)0 2480 y Fx(The)28 b(value)f(stor)o(ed)g
(in)h(\045r0)f(is)h(always)f(zer)o(o)g(and)g(cannot)h(be)f(alter)o(ed.)
45 b(If)27 b(an)h(instr)o(uction)h(speci\002es)0 2580
y(\045r0)23 b(is)i(used)f(as)g(the)g(destination,)i(the)e(r)o(esult)g
(is)g(simply)h(discar)o(ded.)34 b(It)25 b(is)f(not)h(an)f(err)o(or)f
(to)i(execute)0 2679 y(an)e(instr)o(uction)i(that)e(speci\002es)g
(\045r0)g(as)g(the)g(destination)h(for)f(the)g(r)o(esult;)h(however)-6
b(,)24 b(the)f(contents)h(of)0 2779 y(\045r0)c(will)h(not)h(be)e(alter)
o(ed)f(when)j(this)f(instr)o(uction)i(is)e(executed.)p
165 2884 V 165 2971 a Fs(\045r0)98 b Fq(Register)21 b(\045r0)h(always)h
(holds)f(the)h(value)g(zer)o(o.)34 b(The)23 b(value)f(stor)o(ed)f(in)i
(this)g(r)o(egister)d(cannot)165 3063 y(be)f(alter)o(ed.)p
165 3093 V 0 3516 a Fp(2.3.6)99 b(The)25 b(set)g(operation)0
3674 y Fx(The)20 b(set)g(operation)h(can)e(be)h(used)g(to)h(load)f(a)f
(32-bit)g(signed)i(integer)f(constant)h(into)g(a)e(r)o(egister)-6
b(.)25 b(Every)0 3774 y(set)33 b(instr)o(uction)h(has)e(two)h
(operands:)49 b(the)33 b(32-bit)e(value)h(followed)h(by)f(the)h
(destination)g(r)o(egister)-6 b(.)0 3874 y(T)e(able)20
b(2.2)g(summarizes)g(the)h(set)g(operation.)1162 4140
y(T)-8 b(able)20 b(2.2)g(The)g(set)h(operation)679 4286
y Fq(Operation)122 b(Assembler)17 b(syntax)100 b(Operation)18
b(implemented)p 629 4316 2042 4 v 679 4380 a(r)o(egister)e(set)100
b(set)f Fr(siconst)1538 4388 y Ff(32)1603 4380 y Fq(,)18
b Fr(rd)119 b Fq(r)o(eg[)p Fr(rd)p Fq(])17 b(=)i Fr(siconst)2338
4388 y Ff(32)667 4496 y Fh(Notes:)606 4575 y Fg(siconst)791
4584 y Ff(32)956 4575 y Fh(a)e(32-bit)g(signed)f(integer)g(constant)g
(\(can)h(be)g(speci\002ed)f(by)h(a)g(label\))798 4654
y Fg(rd)99 b Fh(the)16 b(destination)g(r)o(egister)p
165 4963 2970 4 v 165 5051 a Fs(Destination)22 b(last)97
b Fq(In)23 b(SP)-7 b(ARC)23 b(assembly)e(language)h(instr)o(uctions,)i
(the)f(destination)f(is)g(speci\002ed)165 5142 y(as)d(the)g(last)g
(operand.)p 165 5191 V eop
%%Page: 16 18
16 17 bop 600 100 a Fx(16)1671 b(Lab)20 b(2.)40 b(Assembly)22
b(Language)e(Pr)o(ogramming)p 600 333 3300 4 v 600 412
a Fs(Example)28 b(2.2)76 b Fr(Using)27 b(set)h(instructions,)h(write)e
(code)i(that)f(will)f(load)h(the)g(value)g(0x42)h(into)e(r)o(egister)h
(\045r2)h(and)f(the)600 504 y(addr)o(ess)19 b(of)g(x)g(\(fr)o(om)g
(Example)g(2.1\))g(into)f(r)o(egister)g(\045r3.)1183
670 y Fo(set)134 b(0x42,)44 b(\045r2)1183 761 y(set)134
b(x,)44 b(\045r3)p 600 797 V 600 1090 a Fp(2.3.7)99 b(The)25
b(load)g(and)g(store)g(operations)600 1248 y Fx(The)31
b(SP)-8 b(ARC)31 b(is)g(based)g(on)g(the)g(load/stor)o(e)g(ar)o
(chitectur)o(e.)54 b(This)32 b(means)f(that)g(r)o(egisters)g(ar)o(e)e
(used)600 1348 y(as)d(the)h(operands)e(for)i(all)f(data)f(manipulation)
i(operations.)43 b(The)26 b(operands)g(for)g(these)h(operations)600
1447 y(cannot)19 b(be)f(in)h(memory)h(locations.)25 b(T)-8
b(able)18 b(2.3)g(summarizes)g(simple)h(versions)h(of)e(the)h(load)f
(and)g(stor)o(e)600 1547 y(operations.)26 b(\(W)-8 b(e)20
b(will)i(cover)e(these)h(operations)g(in)h(mor)o(e)e(detail)g(in)h
(later)f(labs.\))1534 1814 y(T)-8 b(able)20 b(2.3)g(The)h(load)f(and)g
(stor)o(e)h(operations)1255 1959 y Fq(Operation)119 b(Assembler)17
b(syntax)100 b(Operation)18 b(implemented)p 1205 1990
2090 4 v 1255 2054 a(load)g(wor)o(d)114 b(ld)99 b([)p
Fr(rs)p Fq(],)18 b Fr(rd)309 b Fq(r)o(eg[)p Fr(rd)p Fq(])17
b(=)i(memory[r)o(eg[)p Fr(rs)p Fq(]])1255 2145 y(stor)o(e)e(wor)o(d)99
b(st)111 b Fr(rs)p Fq(,)19 b([)p Fr(rd)p Fq(])308 b(memory[r)o(eg[)p
Fr(rd)p Fq(]])16 b(=)j(r)o(eg[)p Fr(rs)p Fq(])1768 2261
y Fh(Notes:)1898 2340 y Fg(rd)100 b Fh(the)16 b(destination)f(r)o
(egister)1906 2418 y Fg(rs)99 b Fh(the)16 b(sour)o(ce)h(r)o(egister)p
765 2728 2970 4 v 765 2815 a Fs(Source)29 b(and)f(destination)g
(registers)105 b Fq(When)29 b(we)g(intr)o(oduce)g(assembly)f(language)h
(syntax,)i(the)765 2907 y(names)18 b Fr(rs)h Fq(and)f
Fr(rd)h Fq(ar)o(e)e(used)g(to)h(denote)g(sour)o(ce)f(and)i(destination)
f(r)o(egisters,)d(r)o(espectively)-8 b(.)21 b(When)d(an)765
2998 y(instr)o(uction)h(uses)f(multiple)g(sour)o(ce)g(r)o(egisters,)d
(we)k(use)f(subscripts)g(to)h(distinguish)f(these)h(r)o(egisters.)p
765 3047 V 600 3449 a Fp(2.3.8)99 b(The)25 b(addition)g(and)g
(subtraction)g(operations)600 3607 y Fx(The)16 b(SP)-8
b(ARC)16 b(uses)g(2's)g(complement)g(r)o(epr)o(esentation)f(for)h
(signed)g(integer)g(values.)23 b(Signed)16 b(additions)600
3707 y(and)22 b(subtractions)h(ar)o(e)e(performed)h(using)h(32-bit)e
(arithmetic)i(\(the)f(sour)o(ce)g(and)g(destination)h(values)600
3807 y(ar)o(e)c(32)h(bits\).)725 3906 y(T)-8 b(able)24
b(2.4)f(summarizes)h(the)h(signed)f(addition)h(and)f(subtraction)g
(operations)h(pr)o(ovided)e(by)i(the)600 4006 y(SP)-8
b(ARC.)32 b(The)h(SP)-8 b(ARC)33 b(pr)o(ovides)f(two)h(instr)o(uction)h
(formats)f(for)f(each)g(of)h(the)f(arithmetic)h(opera-)600
4106 y(tions.)42 b(Both)26 b(formats)g(use)f(thr)o(ee)g(explicit)h
(operands\227two)g(sour)o(ce)f(operands,)i(and)e(a)g(destination)600
4205 y(operand.)51 b(In)29 b(the)h(\002rst)f(format)g(both)h(of)g(the)f
(sour)o(ce)g(operands)g(ar)o(e)f(in)i(r)o(egisters.)51
b(In)29 b(the)h(second)600 4305 y(format,)19 b(one)h(of)g(the)f(sour)o
(ce)g(operands)g(is)h(in)g(a)f(r)o(egister)g(while)h(the)g(other)g(is)g
(a)f(small)h(constant)g(value.)600 4404 y(This)k(constant)g(value)f
(may)h(be)f(negative)h(or)f(positive;)j(however)-6 b(,)24
b(its)g(2's)f(complement)h(r)o(epr)o(esenta-)600 4504
y(tion)k(must)g(\002t)g(in)g(13)e(bits.)46 b(Example)26
b(2.3)h(pr)o(esents)f(a)h(SP)-8 b(ARC)28 b(assembly)f(language)g(pr)o
(ogram)g(that)600 4604 y(illustrates)19 b(variable)f(declarations)g
(and)h(the)g(operations)g(\(load,)g(stor)o(e,)f(add,)g(and)h(sub\))g
(that)g(we)f(have)600 4703 y(described)i(in)h(this)g(lab.)p
765 4808 V 765 4896 a Fs(Integer)j(Constants)98 b Fq(W)-7
b(e)24 b(use)g(the)g(name)h Fr(siconst)2281 4904 y Fe(n)2348
4896 y Fq(to)f(denote)g(a)g(signed)g(integer)f(constant)j(in)e(as-)765
4987 y(sembly)j(language)h(syntax.)50 b(The)28 b(subscript)g
(indicates,)i Fk(n)p Fq(,)g(the)f(number)f(of)f(bits)h(used)f(in)i(the)
f(2's)765 5078 y(complement)19 b(r)o(epr)o(esentation)e(of)i(this)g
(value.)p 765 5128 V eop
%%Page: 17 19
17 18 bop 0 100 a Fx(Lab)20 b(2.)41 b(Assembly)21 b(Language)f(Pr)o
(ogramming)1672 b(17)741 393 y(T)-8 b(able)20 b(2.4)g(The)h(addition)f
(and)h(subtraction)g(operations)439 539 y Fq(Operation)386
b(Assembler)18 b(syntax)214 b(Operation)18 b(implemented)p
389 569 2522 4 v 439 633 a(integer)g(addition)191 b(add)100
b Fr(rs)1449 641 y Ff(1)1483 633 y Fq(,)p Fr(rs)1560
641 y Ff(2)1595 633 y Fq(,)18 b Fr(rd)266 b Fq(r)o(eg[)p
Fr(rd)p Fq(])17 b(=)i(r)o(eg[)p Fr(rs)2458 641 y Ff(1)2491
633 y Fq(])g(+)g(r)o(eg[)p Fr(rs)2789 641 y Ff(2)2822
633 y Fq(])1162 725 y(add)100 b Fr(rs)p Fq(,)18 b Fr(siconst)1695
733 y Ff(13)1760 725 y Fq(,)h Fr(rd)100 b Fq(r)o(eg[)p
Fr(rd)p Fq(])17 b(=)i(r)o(eg[)p Fr(rs)p Fq(])e(+)i Fr(siconst)2773
733 y Ff(13)439 816 y Fq(integer)f(subtraction)100 b(sub)111
b Fr(rs)1449 824 y Ff(1)1483 816 y Fq(,)19 b Fr(rs)1579
824 y Ff(2)1614 816 y Fq(,)f Fr(rd)247 b Fq(r)o(eg[)p
Fr(rd)p Fq(])17 b(=)i(r)o(eg[)p Fr(rs)2458 824 y Ff(1)2491
816 y Fq(])g Fl(\000)f Fq(r)o(eg[)p Fr(rs)2803 824 y
Ff(2)2836 816 y Fq(])1162 907 y(sub)111 b Fr(rs)p Fq(,)18
b Fr(siconst)1695 915 y Ff(13)1760 907 y Fq(,)h Fr(rd)100
b Fq(r)o(eg[)p Fr(rd)p Fq(])17 b(=)i(r)o(eg[)p Fr(rs)p
Fq(])e Fl(\000)h Fr(siconst)2787 915 y Ff(13)664 1023
y Fh(Note:)575 1102 y Fg(siconst)760 1111 y Ff(13)925
1102 y Fh(a)f(13-bit)g(\(2's)g(complement\))f(signed)g(integer)g
(constant.)0 1458 y Fp(2.3.9)99 b(Program)24 b(termination)0
1616 y Fx(Pr)o(ograms)16 b(to)h(be)f(r)o(un)h(in)g(the)g(ISEM)e(envir)o
(onment)i(should)g(terminate)f(their)h(execution)f(by)h(executing)0
1715 y(the)29 b(instr)o(uction)i(\223ta)56 b(0\224.)49
b(Whenever)29 b(this)g(instr)o(uction)i(is)e(executed,)g(ISEM)f(will)i
(stop)f(executing)0 1815 y(instr)o(uctions)23 b(and)d(print)h(the)g
(message)f(\223Pr)o(ogram)g(exited)g(normally\224.)p
0 1941 3300 4 v 0 2022 a Fs(Example)f(2.3)75 b Fr(W)o(rite)17
b(a)i(SP)-10 b(ARC)18 b(assembly)g(language)h(pr)o(ogram)g(to)g
(evaluate)f(the)h(statement)f Fk(a)j Fd(=)g(\()p Fk(a)15
b Fd(+)h Fk(b)p Fd(\))g Fl(\000)g Fd(\()p Fk(c)g Fl(\000)g
Fk(d)p Fd(\))p Fr(.)583 2188 y Fo(.data)224 2280 y(a:)269
b(.word)133 b(0x42)224 2371 y(b:)269 b(.word)133 b(0x43)224
2462 y(c:)269 b(.word)133 b(0x44)224 2554 y(d:)269 b(.word)133
b(0x45)583 2736 y(.text)224 2828 y(start:)89 b(set)223
b(a,)45 b(\045r1)583 2919 y(ld)268 b([\045r1],)44 b(\045r2)314
b(!)44 b Fk(a)h Fo(-->)f(\045r2)583 3010 y(set)223 b(b,)45
b(\045r1)583 3102 y(ld)268 b([\045r1],)44 b(\045r3)314
b(!)44 b Fk(b)h Fo(-->)f(\045r3)583 3193 y(set)223 b(c,)45
b(\045r1)583 3284 y(ld)268 b([\045r1],)44 b(\045r4)314
b(!)44 b Fk(c)h Fo(-->)g(\045r4)583 3375 y(set)223 b(d,)45
b(\045r1)583 3467 y(ld)268 b([\045r1],)44 b(\045r5)314
b(!)44 b Fk(d)h Fo(-->)f(\045r5)583 3649 y(add)223 b(\045r2,)45
b(\045r3,)f(\045r2)179 b(!)44 b Fk(a)17 b Fd(+)g Fk(b)45
b Fo(-->)f(\045r2)583 3741 y(sub)223 b(\045r4,)45 b(\045r5,)f(\045r3)
179 b(!)44 b Fk(c)18 b Fl(\000)e Fk(d)45 b Fo(-->)f(\045r3)583
3832 y(sub)223 b(\045r2,)45 b(\045r3,)f(\045r2)179 b(!)44
b Fd(\()p Fk(a)17 b Fd(+)g Fk(b)p Fd(\))g Fl(\000)f Fd(\()p
Fk(c)h Fl(\000)g Fk(d)p Fd(\))45 b Fo(-->)f(\045r2)583
3923 y(set)223 b(a,)45 b(\045r1)583 4015 y(st)268 b(\045r2,)45
b([\045r1])313 b(!)44 b Fd(\()p Fk(a)17 b Fd(+)g Fk(b)p
Fd(\))g Fl(\000)f Fd(\()p Fk(c)h Fl(\000)g Fk(d)p Fd(\))45
b Fo(-->)f(a)224 4197 y(end:)179 b(ta)268 b(0)p 0 4227
V 0 4371 V 0 4459 a Fs(Activity)16 b(2.2)92 b Fr(Using)17
b(a)g(text)g(editor)-6 b(,)18 b(enter)e(the)h(pr)o(ogram)h(shown)f(in)f
(Example)i(2.3)f(into)f(a)h(\002le,)h(assemble)f(it,)f(link)g(it,)h
(and)0 4550 y(test)i(it)f(using)g(isem.)p 0 4599 V 0
4806 a Fp(2.3.10)99 b(The)25 b(mov)g(operation)0 4964
y Fx(W)-8 b(e)25 b(conclude)g(this)g(lab)f(by)h(considering)g(another)g
(\(synthetic\))g(operation:)34 b(mov)-9 b(.)37 b(The)25
b(mov)g(opera-)0 5063 y(tion)e(is)f(used)f(to)h(copy)g(the)g(value)f
(stor)o(ed)g(in)i(one)f(r)o(egister)f(to)h(another)g(r)o(egister)-6
b(.)27 b(This)22 b(operation)g(can)0 5163 y(also)28 b(be)e(used)i(to)f
(load)g(a)g(small)h(integer)f(value)g(into)h(a)f(r)o(egister)-6
b(.)44 b(T)-8 b(able)27 b(2.5)f(summarizes)h(the)g(mov)0
5263 y(operations.)p eop
%%Page: 18 20
18 19 bop 600 100 a Fx(18)1671 b(Lab)20 b(2.)40 b(Assembly)22
b(Language)e(Pr)o(ogramming)1267 393 y(T)-8 b(able)20
b(2.5)g(The)h(r)o(egister)f(copy)h(and)f(r)o(egister)g(set)h
(operations)1121 539 y Fq(Operation)205 b(Assembler)18
b(syntax)138 b(Operation)19 b(implemented)p 1071 569
2359 4 v 1121 633 a(r)o(egister)d(copy)114 b(mov)100
b Fr(rs)p Fq(,)18 b Fr(rd)316 b Fq(r)o(eg[)p Fr(rd)p
Fq(])18 b(=)h(r)o(eg[)p Fr(rs)p Fq(])1121 725 y(load)f(constant)101
b(mov)f Fr(siconst)2121 733 y Ff(13)2186 725 y Fq(,)18
b Fr(rd)100 b Fq(r)o(eg[)p Fr(rd)p Fq(])18 b(=)h(signextend\()p
Fr(siconst)3291 733 y Ff(13)3354 725 y Fq(\))725 1072
y Fx(Because)c(you)i(can)f(always)g(use)g(the)h(set)f(operation)h(to)g
(load)f(a)g(13-bit)f(value)h(to)h(an)f(integer)g(r)o(egister)-6
b(,)600 1172 y(the)18 b(second)h(version)f(of)h(the)f(mov)h(operation)f
(is)h(r)o(edundant)e(for)h(integer)g(r)o(egisters.)24
b(However)-6 b(,)18 b(as)g(we)600 1272 y(will)26 b(discuss,)g(this)g
(version)f(of)g(the)h(mov)f(operation)g(is)h(used)f(to)g(load)g(the)g
(other)g(state)g(r)o(egisters)f(on)600 1371 y(the)d(SP)-8
b(ARC.)600 1654 y Fu(2.4)119 b(Summary)600 1844 y Fx(In)22
b(this)g(lab)g(we)f(have)g(intr)o(oduced)g(the)h(basics)g(of)f(SP)-8
b(ARC)22 b(assembly)g(language)f(pr)o(ogramming.)29 b(W)-8
b(e)600 1943 y(began)20 b(by)g(considering)h(the)f(str)o(uctur)o(e)g
(of)g(an)g(assembly)g(language)g(pr)o(ogram.)k(W)-8 b(e)20
b(then)h(consider)o(ed)600 2043 y(the)e(names)g(and)g(uses)g(of)g(the)h
(integer)f(r)o(egisters.)24 b(W)-8 b(e)19 b(then)h(intr)o(oduced)e(thr)
o(ee)h(assembler)f(dir)o(ectives:)600 2142 y(.text,)j(.data,)f(and)h
(.wor)o(d.)27 b(The)21 b(\002rst)h(two)g(\(.text)f(and)g(.data\))f(ar)o
(e)g(used)h(to)h(identify)f(sections)i(of)e(an)h(as-)600
2242 y(sembly)d(language)g(pr)o(ogram.)24 b(The)19 b(last)f(two)i
(\(.data)d(and)h(.wor)o(d\))g(ar)o(e)f(used)i(to)g(declar)o(e)e(and)h
(initialize)600 2342 y(variables.)24 b(W)-8 b(e)21 b(will)g(consider)g
(additional)g(assembler)f(dir)o(ectives)f(in)i(later)f(labs.)26
b(W)-8 b(e)20 b(concluded)h(the)600 2441 y(lab)f(by)h(intr)o(oducing)g
(six)g(assembly)g(language)g(operations:)26 b(set,)20
b(load,)g(stor)o(e,)h(add,)e(sub,)i(and)f(mov)-9 b(.)725
2541 y(Figur)o(e)26 b(2.1)f(pr)o(ovides)h(a)h(graphical)f(illustration)
h(for)g(several)f(of)g(the)h(operations)g(that)g(we)f(have)600
2641 y(intr)o(oduced)d(in)h(this)h(lab.)34 b(In)24 b(particular)-6
b(,)22 b(this)j(\002gur)o(e)e(illustrates)h(the)g(data)e(paths)i(used)f
(in)i(the)f(load,)600 2740 y(stor)o(e,)c(addition,)h(and)f(subtraction)
h(operations.)p 1188 2857 505 4 v 1188 4020 4 1163 v
1690 4020 V 1188 4023 505 4 v 1298 2956 a Fq(Memory)p
1271 3522 339 4 v 1271 3937 4 416 v 1368 3756 a(data)p
1607 3937 V 1271 3940 339 4 v 1271 3024 V 1271 3439 4
416 v 1379 3253 a(text)p 1607 3439 V 1271 3442 339 4
v 1607 3814 416 4 v 1939 3812 a Fi(-)1783 3797 y Fq(load)p
1607 3648 V 1607 3646 a Fi(\033)1775 3627 y Fq(stor)o(e)p
2018 3439 505 4 v 2018 4020 4 582 v 2162 3656 a(Integer)2140
3747 y(r)o(egisters)2088 3839 y(\(\045r0\226\045r31\))p
2520 4020 V 2018 4023 505 4 v 1607 3148 a Fi(\010)1690
3107 y(\010)1773 3065 y(\010)1856 3024 y(\010)1939 2982
y(\010)2022 2940 y(\010)-83 b(*)1939 3050 y Fq(ifetch)p
2101 2857 754 4 v 2101 2940 4 84 v 2153 2915 a(Instr)o(uction)20
b(Register)p 2852 2940 V 2101 2943 754 4 v 2852 2901
167 4 v 3016 3107 4 208 v 3018 3107 a Fi(?)3059 2962
y Fq(siconst)3286 2970 y Ff(13)p 2022 3110 1287 7 v 2271
3276 623 7 v 2145 3439 4 333 v 2146 3190 a Fi(6)p 2394
3439 4 167 v 2395 3356 a(6)p 2767 3522 4 250 v 2769 3522
a(?)p 3182 3522 4 416 v 332 w(?)2769 3812 y(@)2686 3729
y(@)p 2684 3646 4 125 v 2686 3523 167 4 v 2850 3605 4
84 v 2852 3606 250 4 v 3099 3605 4 84 v 3101 3523 167
4 v 3265 3646 4 125 v 3101 3812 a(\000)3184 3729 y(\000)p
2852 3814 250 4 v 2830 3711 a Fq(add/sub)p 2975 3937
4 125 v 2520 3938 457 4 v 2520 3936 a Fi(\033)1038 4285
y Fx(Figur)o(e)g(2.1)g(Illustrating)h(the)g(load,)f(stor)o(e,)h(add,)e
(and)h(subtract)h(operations)725 4479 y(The)k(set)h(and)f(mov)h
(operations)f(ar)o(e)g(synthetic)h(\(or)f(pseudo\))g(operations.)40
b(That)26 b(is,)g(these)g(oper)o(-)600 4579 y(ations)d(ar)o(e)e(not)i
(r)o(eally)f(SP)-8 b(ARC)23 b(operations.)31 b(Instead,)22
b(the)h(assembler)f(translates)g(these)h(operations)600
4678 y(into)29 b(one)g(or)f(mor)o(e)g(SP)-8 b(ARC)28
b(operations)h(when)g(it)f(assembles)h(your)f(pr)o(ogram.)47
b(W)-8 b(e)29 b(will)g(consider)600 4778 y(synthetic)22
b(operations)f(in)g(Lab)f(9)600 5061 y Fu(2.5)119 b(Review)30
b(Questions)704 5250 y Fx(1.)41 b(Explain)20 b(the)i(dif)o(fer)o(ence)c
(between)j(a)g(dir)o(ective,)f(an)h(operation,)g(and)f(an)h(instr)o
(uction.)29 b(Give)21 b(an)808 5350 y(example)f(of)g(each.)p
eop
%%Page: 19 21
19 20 bop 0 100 a Fx(Lab)20 b(2.)41 b(Assembly)21 b(Language)f(Pr)o
(ogramming)1672 b(19)104 333 y(2.)41 b(How)21 b(ar)o(e)e(the)i(integer)
g(r)o(egisters)f(named)h(on)g(the)g(SP)-8 b(ARC?)104
432 y(3.)41 b(How)21 b(many)g(integer)g(r)o(egisters)f(ar)o(e)f(ther)o
(e)h(on)i(the)f(SP)-8 b(ARC?)104 532 y(4.)41 b(For)28
b(each)g(of)g(the)g(integer)g(r)o(egisters)f(that)i(have)e(special)h
(attributes,)h(explain)f(the)g(special)g(at-)208 632
y(tributes.)104 731 y(5.)41 b(What)20 b(does)h Fw(siconst)852
743 y Fc(13)943 731 y Fx(mean)g(when)g(used)g(to)g(specify)f(assembly)h
(language)g(syntax?)104 831 y(6.)41 b(The)29 b(subtraction)h(operation)
g(has)g(two)g(sour)o(ce)g(operands.)51 b(Which)31 b(operand)e(is)h
(subtracted)208 930 y(fr)o(om)20 b(the)h(other?)104 1030
y(7.)41 b(Describe)20 b(when)h(you)h(would)f(use)g(the)g(set)f
(operation.)0 1316 y Fu(2.6)119 b(Exercises)104 1505
y Fx(1.)41 b(Suppose)15 b(that)h(the)g(SP)-8 b(ARC)16
b(did)f(not)h(pr)o(ovide)f(a)h(\(synthetic\))g(r)o(egister)f(copy)h
(operation,)g(explain)208 1605 y(how)21 b(you)h(could)e(emulate)h(this)
g(operation.)104 1704 y(2.)41 b(For)29 b(each)g(of)g(the)g(following)i
(statements,)h(write,)f(assemble,)g(and)d(test)i(a)f(SP)-8
b(ARC)29 b(assembly)208 1804 y(language)17 b(fragment)h(that)g
(implements)i(the)e(statement.)25 b(Be)18 b(certain)f(to)i(declar)o(e)d
(and)i(initialize)208 1903 y(all)i(variables)g(in)h(your)g(assembly)g
(language)g(pr)o(ograms.)286 2036 y(a.)41 b Fn(a)23 b
Fm(=)g Fn(c)18 b Fm(+)g Fn(d)p Fx(.)282 2136 y(b.)41
b Fn(a)23 b Fm(=)g(\()p Fn(c)18 b Fm(+)g Fn(d)p Fm(\))h
Ft(\000)f Fm(\()p Fn(c)h Fm(+)f Fn(b)g Fm(+)g Fn(d)h
Ft(\000)f Fn(e)p Fm(\))p Fx(.)291 2236 y(c.)41 b Fn(a)23
b Fm(=)g(\()p Fn(d)c Ft(\000)f Fm(13\))g(+)g(\()p Fn(a)g
Fm(+)g(23\))p Fx(.)277 2335 y(d.)41 b Fn(a)23 b Fm(=)g
Fn(d)18 b Fm(+)g(9832)p Fx(.)288 2435 y(e.)41 b Fn(a)23
b Fm(=)g(87765)16 b Ft(\000)i Fn(c)p Fx(.)p eop
%%Page: 20 22
20 21 bop 600 100 a Fx(20)1671 b(Lab)20 b(2.)40 b(Assembly)22
b(Language)e(Pr)o(ogramming)p eop
%%Page: 21 23
21 22 bop 0 474 3300 12 v 0 723 a Fv(Laboratory)53 b(3)0
976 y(Implementing)f(Control)f(Structures)p 0 1092 1200
12 v 0 1449 a Fu(3.1)119 b(Goal)0 1638 y Fx(T)-8 b(o)21
b(cover)g(the)g(implementation)h(of)e(contr)o(ol)h(str)o(uctur)o(es)g
(using)h(the)e(SP)-8 b(ARC)21 b(instr)o(uction)i(set.)0
1923 y Fu(3.2)119 b(Objectives)0 2112 y Fx(After)20 b(completing)h
(this)h(lab,)e(you)h(will)h(be)e(able)g(to)h(write)g(assembly)g
(language)g(pr)o(ograms)f(that)h(use:)125 2288 y Ft(\017)41
b Fx(The)20 b(condition)i(code)f(r)o(egister)-6 b(,)125
2387 y Ft(\017)41 b Fx(Operations)21 b(that)f(set)h(the)g(condition)h
(code)e(r)o(egister)-6 b(,)125 2485 y Ft(\017)41 b Fx(The)20
b(conditional)i(and)e(unconditional)i(branching)f(operations)h(of)e
(the)h(SP)-8 b(ARC,)21 b(and)125 2583 y Ft(\017)41 b
Fx(Conditional)21 b(nulli\002cation.)0 2868 y Fu(3.3)119
b(Discussion)0 3057 y Fx(In)30 b(this)h(lab)e(we)h(intr)o(oduce)g(a)f
(subset)h(of)g(the)g(SP)-8 b(ARC)30 b(branching)g(operations.)53
b(In)30 b(particular)-6 b(,)31 b(we)0 3157 y(intr)o(oduce)26
b(the)g(operations)g(that)g(pr)o(ovide)f(conditional)i(and)f
(unconditional)h(branching)f(based)f(on)0 3256 y(the)c(bits)g(in)g(a)f
(condition)j(code)d(r)o(egister)-6 b(.)125 3356 y(W)e(e)25
b(begin)g(by)h(considering)f(the)h(bits)f(in)h(the)f(condition)i(code)d
(r)o(egister)h(of)g(a)g(SP)-8 b(ARC)25 b(pr)o(ocessor)-6
b(.)0 3456 y(After)19 b(intr)o(oducing)h(these)g(bits,)g(we)g(consider)
g(the)g(operations)g(that)g(af)o(fect)d(the)j(bits)g(in)h(the)f
(condition)0 3555 y(code)27 b(r)o(egister)-6 b(.)46 b(W)-8
b(e)28 b(then)g(consider)g(the)g(conditional)h(and)e(unconditional)i
(branching)g(operations)0 3655 y(that)f(use)g(the)g(bits)g(in)g(the)g
(condition)h(code)f(r)o(egister)f(to)h(contr)o(ol)g(branching.)48
b(Next,)29 b(we)e(intr)o(oduce)0 3755 y(nulli\002cation)e
(\(annulment\))e(in)h(the)f(branching)h(operations)f(of)g(the)h(SP)-8
b(ARC.)23 b(W)-8 b(e)23 b(conclude)h(by)f(con-)0 3854
y(sidering)f(several)f(examples)g(to)h(illustrate)g(the)g(SP)-8
b(ARC)22 b(operations)g(and)f(by)h(intr)o(oducing)g(the)g(com-)0
3954 y(par)o(e)d(operation)i(pr)o(ovided)f(by)h(the)f(SP)-8
b(ARC.)0 4195 y Fp(3.3.1)99 b(The)25 b(condition)h(code)f(register)0
4353 y Fx(The)c(condition)i(code)e(r)o(egister)f(on)i(the)f(SP)-8
b(ARC)22 b(has)f(four)g(bits:)27 b(Z)22 b(\(Zer)o(o\),)e(N)h
(\(Negative\),)f(C)h(\(Carry\),)0 4453 y(and)k(V)g(\(oV)-9
b(er\003ow\).)39 b(The)26 b(standar)o(d)d(arithmetic)j(operations)f
(\(e.g.,)h(addition)f(and)g(subtraction\))g(do)0 4553
y(not)d(update)d(the)i(bits)g(in)h(the)f(condition)h(code)e(r)o
(egister)-6 b(.)25 b(Instead,)20 b(ther)o(e)g(ar)o(e)g(special)g
(operations)h(that)0 4652 y(update)28 b(the)h(condition)h(code)e(r)o
(egister)-6 b(.)49 b(T)-8 b(able)29 b(3.1)e(summarizes)i(a)f
(collection)i(of)f(operations)g(that)0 4752 y(update)19
b(the)h(bits)h(in)f(the)h(condition)g(code)f(r)o(egister)-6
b(.)24 b(The)c(names)h(for)f(these)g(operations)g(have)g(a)g(suf)o
(\002x)0 4851 y(of)h(\223cc\224)e(to)i(indicate)g(that)f(they)h(update)
f(the)h(bits)g(in)g(the)g(condition)h(code)f(r)o(egister)-6
b(.)125 4951 y(In)25 b(most)g(cases,)g(the)g(ef)o(fect)e(that)i(an)g
(operation)g(has)g(on)g(the)g(condition)h(codes)f(is)g(just)h(what)e
(you)0 5051 y(would)k(expect.)46 b(Most)28 b(of)g(these)g(operations)h
(set)e(the)h(Z)h(bit)f(when)g(the)g(r)o(esult)g(of)g(the)g(operation)g
(is)0 5150 y(zer)o(o,)c(and)h(clear)e(this)j(bit)e(when)i(the)f(r)o
(esult)f(is)h(nonzer)o(o.)37 b(Similarly)-9 b(,)25 b(most)h(of)e(these)
h(operations)g(set)0 5250 y(the)j(N)g(bit)g(when)h(the)f(r)o(esult)g
(of)g(the)g(operation)g(is)h(negative,)g(and)f(clear)f(this)h(bit)h
(when)f(the)g(r)o(esult)0 5350 y(is)e(nonnegative.)43
b(The)26 b(V)g(bit)g(is)g(usually)h(set)f(when)h(the)f(\(signed)g
(integer\))g(r)o(esult)g(of)g(the)g(operation)1608 5560
y(21)p eop
%%Page: 22 24
22 23 bop 600 100 a Fx(22)1736 b(Lab)20 b(3.)41 b(Implementing)22
b(Contr)o(ol)f(Str)o(uctur)o(es)1405 393 y(T)-8 b(able)21
b(3.1)e(Updating)h(the)h(condition)h(code)f(r)o(egister)1496
539 y Fq(Operation)633 b(Operation)18 b(name)p 1446 569
1608 4 v 1496 633 a(Signed)g(integer)g(addition)192 b(addcc)1496
725 y(Signed)18 b(integer)g(subtraction)101 b(subcc)600
1084 y Fx(cannot)20 b(be)g(stor)o(ed)f(in)i(32)e(bits,)h(and)f(clear)o
(ed)f(when)j(the)f(r)o(esult)f(can)h(be)f(stor)o(ed)h(in)g(32)f(bits.)
26 b(Finally)-9 b(,)20 b(the)600 1184 y(C)f(bit)h(is)f(set)h(when)g
(the)f(operation)h(generates)f(a)g(carry)f(out)i(of)f(the)h(most)g
(signi\002cant)g(bit,)g(and)f(clear)o(ed)600 1283 y(otherwise.)725
1383 y(In)k(most)g(contexts,)g(you)h(will)f(be)f(most)i(inter)o(ested)e
(in)h(the)g(N)g(and)f(Z)h(bits)g(of)g(the)f(condition)i(code)600
1483 y(r)o(egister)19 b(and)g(we)h(will)h(emphasize)e(these)h(bits)g
(in)g(the)g(r)o(emainder)e(of)i(this)h(lab.)j(W)-8 b(e)20
b(will)h(consider)f(the)600 1582 y(r)o(emaining)h(bits)g(in)g(the)g
(condition)h(code)e(r)o(egister)g(\(the)h(C)g(and)f(V)h(bits\))f(at)h
(gr)o(eater)e(length)i(in)h(Lab)d(13.)600 1825 y Fp(3.3.2)99
b(Branching)25 b(operations)600 1983 y Fx(The)f(SP)-8
b(ARC)24 b(pr)o(ovides)f(16)f(basic)i(branching)g(operations.)35
b(These)24 b(operations)g(ar)o(e)e(summarized)i(in)600
2083 y(T)-8 b(able)20 b(3.2.)k(Note)c(that)f(the)i(\002rst)f(two)g
(operations,)h(ba)e(\(branch)g(always\))g(and)h(bn)g(\(branch)f
(never\),)g(ar)o(e)600 2182 y(unconditional\227the)26
b(operation)e(speci\002es)h(whether)f(the)h(branch)f(is)g(taken.)36
b(The)25 b(r)o(emaining)f(oper)o(-)600 2282 y(ations)i(ar)o(e)d
(conditional)j(branching)g(operations.)39 b(When)25 b(these)g
(operations)h(ar)o(e)d(used,)j(the)f(branch)600 2381
y(is)k(only)h(taken)f(when)h(the)f(speci\002ed)f(condition)j(in)e(met.)
50 b(In)29 b(last)g(column)h(of)f(T)-8 b(able)29 b(3.2)f(we)h(use)f(a)
600 2481 y(boolean)f(expr)o(ession)g(involving)h(the)f(bits)g(of)g(the)
g(condition)h(code)e(r)o(egister)g(to)i(specify)e(the)h(condi-)600
2581 y(tion.)41 b(The)26 b(condition)h(is)f(satis\002ed)f(if)g(the)h
(boolean)g(expr)o(ession)g(r)o(esults)f(in)h(the)g(value)f(1;)i
(otherwise)600 2680 y(\(if)h(the)g(expr)o(ession)g(r)o(esults)g(in)h
(0\),)g(the)f(condition)h(is)g(not)g(satis\002ed)f(and)g(the)g(pr)o
(ocessor)g(continues)600 2780 y(with)j(sequential)f(execution)g(of)g
(instr)o(uctions.)55 b(The)30 b(tar)o(get)f(speci\002ed)h(in)g(an)g
(assembly)g(language)600 2880 y(instr)o(uction)22 b(is)g(a)e(label)g
(de\002ned)g(by)h(the)g(pr)o(ogram.)1418 3146 y(T)-8
b(able)21 b(3.2)e(Branching)i(operations)g(on)h(the)f(SP)-8
b(ARC)1030 3242 y Fq(Operation)770 b(Assembler)17 b(syntax)100
b(Branch)19 b(condition)p 980 3273 2541 4 v 1030 3336
a(Branch)g(always)624 b(ba)184 b Fr(tar)o(get)248 b Fq(1)19
b(\(always\))1030 3428 y(Branch)g(never)669 b(bn)178
b Fr(tar)o(get)248 b Fq(0)19 b(\(never\))1030 3519 y(Branch)g(not)g
(equal)547 b(bne)142 b Fr(tar)o(get)248 b Fq(not)19 b(Z)1030
3610 y(Branch)g(equal)674 b(be)185 b Fr(tar)o(get)248
b Fq(Z)1030 3702 y(Branch)19 b(gr)o(eater)622 b(bg)179
b Fr(tar)o(get)248 b Fq(not)19 b(\(Z)f(or)g(\(N)h(xor)f(V\)\))1030
3793 y(Branch)h(less)f(or)g(equal)445 b(ble)163 b Fr(tar)o(get)248
b Fq(Z)18 b(or)g(\(N)h(xor)e(V\))1030 3884 y(Branch)i(gr)o(eater)e(or)h
(equal)334 b(bge)143 b Fr(tar)o(get)248 b Fq(not)19 b(\(N)g(xor)e(V\))
1030 3976 y(Branch)i(less)734 b(bl)199 b Fr(tar)o(get)248
b Fq(N)18 b(xor)g(V)1030 4067 y(Branch)h(gr)o(eater)-6
b(,)17 b(unsigned)283 b(bgu)134 b Fr(tar)o(get)248 b
Fq(not)19 b(\(C)g(or)f(Z\))1030 4158 y(Branch)h(less)f(or)g(equal,)g
(unsigned)99 b(bleu)118 b Fr(tar)o(get)248 b Fq(C)18
b(or)g(Z)1030 4250 y(Branch)h(carry)f(clear)508 b(bcc)155
b Fr(tar)o(get)248 b Fq(not)19 b(C)1030 4341 y(Branch)g(carry)f(set)574
b(bcs)156 b Fr(tar)o(get)248 b Fq(C)1030 4432 y(Branch)19
b(positive)592 b(bpos)103 b Fr(tar)o(get)248 b Fq(not)19
b(N)1030 4524 y(Branch)g(negative)574 b(bneg)100 b Fr(tar)o(get)248
b Fq(N)1030 4615 y(Branch)19 b(over\003ow)g(clear)382
b(bvc)146 b Fr(tar)o(get)248 b Fq(not)19 b(V)1030 4706
y(Branch)g(over\003ow)g(set)448 b(bvs)147 b Fr(tar)o(get)248
b Fq(V)725 4993 y Fx(In)21 b(addition)g(to)g(the)h(operation)f(names)g
(de\002ned)g(in)g(T)-8 b(able)21 b(10,)f(the)h(SP)-8
b(ARC)21 b(de\002nes)g(several)g(syn-)600 5092 y(onyms)h(for)f(these)f
(operations.)26 b(These)21 b(synonyms)i(ar)o(e)c(summarized)h(in)h(T)-8
b(able)21 b(3.3.)725 5192 y(Like)32 b(most)i(RISC)f(machines,)j(the)d
(SP)-8 b(ARC)33 b(uses)g(a)f(branch)h(delay)f(slot.)63
b(By)32 b(default,)j(the)e(in-)600 5291 y(str)o(uction)g(following)g(a)
e(branch)g(instr)o(uction)j(is)d(executed)g(whenever)g(the)h(branch)f
(instr)o(uction)j(is)p eop
%%Page: 23 25
23 24 bop 0 100 a Fx(Lab)20 b(3.)41 b(Implementing)22
b(Contr)o(ol)f(Str)o(uctur)o(es)1736 b(23)822 393 y(T)-8
b(able)20 b(3.3)g(Synonyms)i(for)f(branching)g(operations)507
489 y Fq(Operation)882 b(Operation)18 b(name)100 b(Synonym)19
b(for)p 457 519 2386 4 v 507 583 a(Branch)g(nonzer)o(o)698
b(bnz)516 b(bne)507 675 y(Branch)19 b(zer)o(o)825 b(bz)559
b(be)507 766 y(Branch)19 b(gr)o(eater)e(or)h(equal,)h(unsigned)99
b(bgeu)473 b(bcc)507 857 y(Branch)19 b(less,)e(unsigned)501
b(blu)529 b(bcs)0 1204 y Fx(executed.)125 1303 y(SP)-8
b(ARC)19 b(assemblers)h(pr)o(ovide)f(a)g(special)h(\(synthetic\))g
(operation,)f Fw(nop)p Fx(,)h(for)f(situations)i(when)g(it)f(is)0
1403 y(not)26 b(convenient)g(to)g(put)f(a)g(useful)g(instr)o(uction)i
(in)f(the)f(delay)f(slot)i(of)g(a)e(branch)h(instr)o(uction.)41
b(In)26 b(as-)0 1503 y(sembly)19 b(language)f(a)f(nop)i(instr)o(uction)
h(has)e(no)h(operands)f(\(i.e.,)g(a)g(nop)g(instr)o(uction)i(is)f
(fully)f(speci\002ed)0 1602 y(by)27 b(the)g(name)f(of)h(the)g
(operation\).)43 b(When)27 b(a)f(nop)h(instr)o(uction)h(is)f(executed,)
g(it)g(does)g(not)g(alter)f(any)0 1702 y(of)g(the)f(r)o(egisters)g(or)h
(values)f(stor)o(ed)g(in)h(memory)-9 b(.)41 b(However)-6
b(,)26 b(the)g(use)f(of)h(nop)g(instr)o(uctions)h(causes)0
1802 y(the)c(pr)o(ocessor)g(to)g(execute)g(mor)o(e)f(instr)o(uctions)j
(and,)e(as)g(such,)h(incr)o(eases)e(the)h(time)h(r)o(equir)o(ed)d(to)j
(ex-)0 1901 y(ecute)k(the)h(pr)o(ogram.)47 b(Example)28
b(3.1)f(illustrates)i(the)g(conditional)g(and)f(unconditional)i
(branching)0 2001 y(operations.)p 0 2114 3300 4 v 0 2194
a Fs(Example)19 b(3.1)75 b Fr(T)-8 b(ranslate)18 b(the)h(following)f(C)
h(code)g(fragment)g(into)f(SP)-10 b(ARC)18 b(assembly)h(language.)224
2285 y Fo(int)44 b(temp;)224 2376 y(int)g(x)h(=)g(0;)224
2468 y(int)f(y)h(=)g(0x9;)224 2559 y(int)f(z)h(=)g(0x42;)224
2742 y(temp)f(=)h(y;)224 2833 y(while\()f(temp)g(>)h(0)f(\))h
Fl(f)403 2924 y Fo(x)g(=)g(x)f(+)h(z;)403 3016 y(temp)g(=)f(temp)g(-)h
(1;)224 3107 y Fl(g)0 3220 y Fq(T)-7 b(o)18 b(simplify)f(the)j
(translation,)f(we)g(\002ll)f(the)h(branch)h(delay)e(slots)g(with)i
(nop)f(instr)o(uctions.)583 3311 y Fo(.data)224 3403
y(x:)269 b(.word)133 b(0)224 3494 y(y:)269 b(.word)133
b(0x9)224 3585 y(z:)269 b(.word)133 b(0x42)583 3768 y(.text)224
3859 y(start:)89 b(set)223 b(y,)45 b(\045r1)583 3951
y(ld)268 b([\045r1],)44 b(\045r2)358 b(!)45 b(we'll)f(use)g(\045r2)h
(for)f(temp)583 4042 y(set)223 b(z,)45 b(\045r1)583 4133
y(ld)268 b([\045r1],)44 b(\045r3)358 b(!)45 b(we'll)f(use)g(\045r3)h
(for)f(z)583 4225 y(mov)223 b(\045r0,)45 b(\045r4)447
b(!)45 b(we'll)f(use)g(\045r4)h(for)f(x)583 4407 y(add)223
b(\045r2,)45 b(1,)f(\045r2)313 b(!)45 b(set)f(up)h(for)f(decrement)583
4499 y(ba)268 b(test)627 b(!)45 b(test)f(the)h(loop)f(condition)583
4590 y(nop)1030 b(!)45 b(BRANCH)f(DELAY)g(SLOT)224 4681
y(top:)179 b(add)223 b(\045r4,)45 b(\045r3,)f(\045r4)223
b(!)45 b(x)g(+)f(z)h(-->)f(x)224 4773 y(test:)134 b(subcc)f(\045r2,)45
b(1,)f(\045r2)313 b(!)45 b(temp)f(-)h(1)g(-->)f(temp)583
4864 y(bg)268 b(top)672 b(!)45 b(temp)f(>)h(0)g(?)583
4955 y(nop)1030 b(!)45 b(BRANCH)f(DELAY)g(SLOT)583 5138
y(set)223 b(x,)45 b(\045r1)583 5229 y(st)268 b(\045r4,)45
b([\045r1])357 b(!)45 b(store)f(x)224 5320 y(end:)179
b(ta)268 b(0)p 0 5350 V eop
%%Page: 24 26
24 25 bop 600 100 a Fx(24)1736 b(Lab)20 b(3.)41 b(Implementing)22
b(Contr)o(ol)f(Str)o(uctur)o(es)p 600 427 3300 4 v 600
515 a Fs(Activity)j(3.1)75 b Fr(After)25 b(each)h(trace)g(command,)i
(ISEM)23 b(r)o(eports)j(the)f(values)h(of)f(the)g(bit)g(in)f(the)i
(condition)f(code)h(r)o(egister)-6 b(.)600 607 y(T)f(ype)20
b(the)f(pr)o(ogram)h(shown)f(Example)h(3.1)f(into)f(a)i(\002le,)f
(assemble)g(it,)f(link)g(it,)h(and)g(load)g(it)g(into)f(ISEM.)g(T)-8
b(race)19 b(the)g(pr)o(ogram)600 698 y(execution,)f(noting)g(how)h
(each)h(instruction)d(affects)i(the)g(bits)f(in)g(the)h(SP)-10
b(ARC)18 b(condition)g(code)i(r)o(egister)-6 b(.)p 600
747 V 725 899 a Fx(The)20 b(SP)-8 b(ARC)21 b(keeps)f(track)g(of)h(the)g
(instr)o(uctions)i(to)e(execute)e(using)j(two)f(pr)o(ogram)f(counters:)
26 b(PC,)600 998 y(and)f(nPC.)g(The)h(\002rst)f(pr)o(ogram)g(counter)-6
b(,)26 b(PC,)g(holds)g(the)f(addr)o(ess)f(of)h(the)h(next)f(instr)o
(uction)i(to)f(exe-)600 1098 y(cute.)34 b(The)24 b(second)g(pr)o(ogram)
f(counter)-6 b(,)24 b(nPC,)g(holds)g(the)g(next)g(value)f(for)h(PC.)f
(Usually)-9 b(,)24 b(the)g(SP)-8 b(ARC)600 1197 y(updates)29
b(the)g(pr)o(ogram)g(counters)h(at)f(the)h(end)f(of)h(each)f(instr)o
(uction)i(execution)f(by)f(assigning)i(the)600 1297 y(curr)o(ent)22
b(value)g(of)h(nPC)g(to)g(PC,)g(and)f(adding)g(4)g(to)i(the)e(value)h
(of)f(nPC.)h(When)g(it)g(executes)f(a)h(branch-)600 1397
y(ing)31 b(operation,)h(the)e(SP)-8 b(ARC)30 b(assigns)h(the)f(curr)o
(ent)f(value)g(of)h(nPC)g(to)h(PC)f(and)f(then)i(updates)e(the)600
1496 y(value)21 b(of)g(nPC.)h(If)f(the)g(branch)g(is)h(taken,)f(nPC)h
(is)f(assigned)h(the)f(value)g(of)g(the)h Fw(tar)o(get)e
Fx(speci\002ed)h(in)h(the)600 1596 y(instr)o(uction;)27
b(otherwise,)f(nPC)e(is)h(incr)o(emented)e(by)h(4.)36
b(The)24 b(branch)f(delay)h(slot)h(arises)f(because)f(the)600
1696 y(PC)e(is)g(assigned)g(the)g(old)g(value)f(of)g(nPC)i(\(befor)o(e)
d(nPC)i(is)g(assigned)g(the)g(tar)o(get)e(of)i(the)g(branch\).)p
600 1814 V 600 1902 a Fs(Activity)e(3.2)96 b Fr(After)20
b(each)h(trace)g(command,)g(ISEM)e(r)o(eports)i(the)f(values)g(of)h(PC)
e(and)i(nPC.)e(Run)g(the)i(pr)o(ogram)g(shown)600 1993
y(in)d(Example)h(3.1)g(noting)f(the)h(changes)h(to)f(PC)f(and)h(nPC.)p
600 2042 V 600 2248 a Fp(3.3.3)99 b(Nulli\002cation)600
2406 y Fx(Every)22 b(branching)i(instr)o(uction)g(can)f(specify)g(that)
g(the)g(af)o(fect)e(of)i(the)g(instr)o(uction)i(in)e(the)g(branch)g
(de-)600 2506 y(lay)k(slot)g(is)g(to)g(be)g(nulli\002ed)g(\(annulled)f
(in)h(SP)-8 b(ARC)27 b(terminology\))h(if)e(the)h(branch)g(speci\002ed)
f(by)h(the)600 2606 y(conditional)22 b(branching)f(instr)o(uction)h(is)
f(not)g(taken.)26 b(In)21 b(assembly)g(language,)f(this)h(conditional)h
(nul-)600 2705 y(li\002cation)g(is)f(speci\002ed)f(by)h(appending)f(a)h
(suf)o(\002x)f(of)h(\223,a\224)e(to)i(the)g(name)f(of)h(the)g
(branching)g(operation.)600 2805 y(Example)f(3.2)f(illustrates)i
(conditional)h(nulli\002cation.)p 600 2931 V 600 3011
a Fs(Example)d(3.2)75 b Fr(Rewrite)19 b(the)f(code)i(fragment)e(shown)h
(in)f(Example)h(3.1)g(so)g(that)g(the)f(code)i(has)f(meaningful)e
(instructions)600 3102 y(in)h(the)h(branch)g(delay)g(slots.)1183
3218 y Fo(.data)824 3310 y(x:)269 b(.word)133 b(0)824
3401 y(y:)269 b(.word)133 b(0x9)824 3492 y(z:)269 b(.word)133
b(0x42)1183 3675 y(.text)824 3766 y(start:)89 b(set)223
b(y,)45 b(\045r1)1183 3858 y(ld)268 b([\045r1],)44 b(\045r2)358
b(!)45 b(we'll)f(use)g(\045r2)h(for)f(temp)1183 3949
y(set)223 b(z,)45 b(\045r1)1183 4040 y(ld)268 b([\045r1],)44
b(\045r3)358 b(!)45 b(we'll)f(use)g(\045r3)h(for)f(z)1183
4132 y(mov)223 b(\045r0,)45 b(\045r4)447 b(!)45 b(we'll)f(use)g(\045r4)
h(for)f(x)1183 4314 y(add)223 b(\045r2,)45 b(1,)f(\045r2)313
b(!)45 b(set)f(up)h(for)f(decrement)824 4406 y(top:)179
b(subcc)133 b(\045r2,)45 b(1,)f(\045r2)313 b(!)45 b(temp)f(-)h(1)g(-->)
f(temp)1183 4497 y(bg,a)178 b(top)672 b(!)45 b(temp)f(>)h(0)g(?)1183
4588 y(add)223 b(\045r4,)45 b(\045r3,)f(\045r4)223 b(!)45
b(x)g(+)f(z)h(-->)f(x)1183 4771 y(set)223 b(x,)45 b(\045r1)1183
4862 y(st)268 b(\045r4,)45 b([\045r1])357 b(!)45 b(store)f(x)824
4954 y(end:)179 b(ta)268 b(0)p 600 4983 V eop
%%Page: 25 27
25 26 bop 0 100 a Fx(Lab)20 b(3.)41 b(Implementing)22
b(Contr)o(ol)f(Str)o(uctur)o(es)1736 b(25)0 333 y Fp(3.3.4)99
b(The)25 b(\(synthetic\))h(integer)f(comparison)g(operation)0
491 y Fx(Assemblers)c(for)h(the)f(SP)-8 b(ARC)22 b(pr)o(ovide)f(a)g
(synthetic)h(integer)g(comparison)g(operation.)28 b(Y)-8
b(ou)23 b(can)e(use)0 590 y(this)j(operation)g(when)g(the)g(data)e
(manipulation)j(operations)e(do)h(not)g(establish)g(the)g(needed)e
(values)0 690 y(in)17 b(the)g(condition)h(code)e(r)o(egister)-6
b(.)23 b(T)-8 b(able)16 b(3.4)f(summarizes)i(the)f(integer)h
(comparison)g(operation.)24 b(This)0 790 y(operation)e(can)f(be)h(used)
f(to)i(compar)o(e)d(the)i(contents)h(of)f(two)g(r)o(egisters)f(or)h(to)
g(compar)o(e)f(the)h(contents)0 889 y(of)f(a)f(r)o(egister)g(with)h(a)g
(small)g(integer)g(constant.)988 1156 y(T)-8 b(able)20
b(3.4)f(Signed)i(integer)g(comparison)479 1301 y Fq(Operation)403
b(Assembler)18 b(syntax)125 b(Operation)18 b(implemented)p
429 1332 2442 4 v 479 1396 a(integer)g(comparison)99
b(cmp)h Fr(sr)1521 1404 y Ff(1)1556 1396 y Fq(,)18 b
Fr(sr)1651 1404 y Ff(2)1932 1396 y Fq(r)o(eg[)p Fr(sr)2122
1404 y Ff(1)2155 1396 y Fq(])h Fl(\000)f Fq(r)o(eg[)p
Fr(sr)2467 1404 y Ff(2)2500 1396 y Fq(])1219 1487 y(cmp)100
b Fr(sr)p Fq(,)18 b Fr(siconst)1767 1495 y Ff(13)1932
1487 y Fq(r)o(eg[)p Fr(dr)p Fq(])f(=)i(r)o(eg[)p Fr(sr)p
Fq(])e Fl(\000)i Fr(siconst)2756 1495 y Ff(13)0 1917
y Fp(3.3.5)99 b(Delayed)25 b(control-transfer)g(couples)0
2075 y Fx(When)30 b(a)e(branch)h(instr)o(uction)i(is)f(in)f(the)h
(delay)e(slot)i(of)f(another)h(branch)e(instr)o(uction,)33
b(the)c(pair)g(of)0 2174 y(branch)k(instr)o(uctions)h(is)g(called)e(a)g
(\223delayed)f(contr)o(ol-transfer)h(couple\224.)62 b(If)32
b(you)i(use)f(a)f(delayed)0 2274 y(contr)o(ol-transfer)d(couple)h(on)h
(the)f(SP)-8 b(ARC,)29 b(the)h(\002rst)h(branch)e(operation)h(should)h
(be)f(an)g(uncondi-)0 2373 y(tional)23 b(branch;)g(otherwise,)g(the)f
(sequence)h(of)g(instr)o(uctions)h(executed)d(when)i(the)g(delayed)e
(contr)o(ol-)0 2473 y(transfer)j(couple)g(is)h(executed)f(is)h(not)g
(de\002ned.)37 b(W)-8 b(e)25 b(will)g(consider)g(delayed)e(contr)o
(ol-transfer)h(cou-)0 2573 y(ples)d(in)g(gr)o(eater)e(depth)i(when)g
(we)g(consider)g(traps)f(and)g(exceptions)h(in)g(Lab)f(16.)0
2858 y Fu(3.4)119 b(Summary)0 3048 y Fx(In)22 b(this)g(lab)f(we)g(have)
g(intr)o(oduced)f(the)i(condition)g(code)f(r)o(egister)-6
b(,)21 b(the)g(basic)g(branching)h(operations,)0 3147
y(and)30 b(the)h(integer)g(comparison)g(operation.)55
b(The)31 b(branching)g(operations)g(include)f(two)i(uncondi-)0
3247 y(tional)26 b(branch)f(operations)g(\()p Fw(ba)h
Fx(and)e Fw(bn)p Fx(\))i(and)f(a)f(host)j(of)e(conditional)h(branching)
g(operations.)39 b(The)0 3347 y(SP)-8 b(ARC)32 b(branching)h
(operations)g(have)f(a)g(branch)g(delay)g(slot.)62 b(That)32
b(is,)k(the)c(instr)o(uction)i(follow-)0 3446 y(ing)f(a)g(branch)f
(instr)o(uction)j(is)e(executed)f(whenever)g(the)h(branch)g(instr)o
(uction)h(is)f(executed.)61 b(The)0 3546 y(SP)-8 b(ARC)24
b(pr)o(ovides)e(conditional)j(annulment)f(of)g(the)f(instr)o(uction)i
(in)f(the)g(branch)f(delay)g(slot.)35 b(When)0 3645 y(the)21
b(branch)f(operation)h(speci\002es)g(annulment)g(\(using)g(the)g
(operator)f(suf)o(\002x)g(\223,a\224\),)f(the)h(af)o(fects)f(of)i(the)0
3745 y(instr)o(uction)h(ar)o(e)e(canceled)f(\(note,)i(the)g(instr)o
(uction)h(is)g(executed,)d(but)i(the)g(execution)g(has)f(no)i(af)o
(fect\).)0 4031 y Fu(3.5)119 b(Review)30 b(Questions)104
4220 y Fx(1.)41 b(What)20 b(ar)o(e)g(the)g(bits)i(in)f(the)g(condition)
h(code)e(r)o(egister)-6 b(.)104 4320 y(2.)41 b(Name)26
b(two)i(operations)f(that)g(af)o(fect)d(the)k(bits)f(in)g(the)g
(condition)h(code)f(r)o(egister)f(and)g(explain)208 4419
y(how)21 b(they)g(af)o(fect)e(these)i(bits.)104 4519
y(3.)41 b(What)17 b(ar)o(e)f(the)i(two)h(pr)o(ogram)e(counters)h(on)g
(the)g(SP)-8 b(ARC.)17 b(Explain)g(how)i(these)f(pr)o(ogram)f(coun-)208
4618 y(ters)j(ar)o(e)f(used.)104 4718 y(4.)41 b(Is)22
b(the)h(af)o(fect)e(of)h(the)h(instr)o(uction)h(in)g(the)e(delay)g
(slot)i(of)e(an)h(annulled)f(branch)h(canceled)e(when)208
4818 y(the)f(branch)h(is)g(take)f(or)h(when)g(the)g(branch)g(is)g(not)g
(taken?)26 b(Explain)20 b(why)h(the)g(designers)g(of)g(the)208
4917 y(SP)-8 b(ARC)20 b(chose)i(the)e(this)i(version)f(of)g
(nulli\002cation.)p eop
%%Page: 26 28
26 27 bop 600 100 a Fx(26)1736 b(Lab)20 b(3.)41 b(Implementing)22
b(Contr)o(ol)f(Str)o(uctur)o(es)600 333 y Fu(3.6)119
b(Exercises)704 523 y Fx(1.)41 b(Suppose)24 b(that)g(your)h(assembler)f
(did)g(not)h(pr)o(ovide)f(an)g(integer)h(comparison)g(operation.)37
b(Ex-)808 622 y(plain)30 b(how)i(you)f(could)g(implement)g(this)h
(operation)f(using)g(the)g(other)g(SP)-8 b(ARC)31 b(operations)808
722 y(that)20 b(we)h(have)f(consider)o(ed)g(in)h(this)h(and)e(pr)o
(evious)h(labs.)704 821 y(2.)41 b(Consider)23 b(the)g(SP)-8
b(ARC)23 b(code)g(pr)o(esented)f(in)h(Example)g(3.2.)31
b(Curr)o(ently)-9 b(,)23 b(the)g(loop)h(is)f(executed)808
921 y(\223y\224)g(times.)38 b(If)24 b(\223y\224)g(is)h(lar)o(ger)e
(than)i(\223z\224)e(it)i(would)g(be)g(better)f(to)h(execute)e(the)i
(loop)h(\223z\224)d(times.)808 1021 y(Rewrite)e(the)f(code)h(shown)h
(in)f(Example)f(3.2)g(to)h(take)f(advantage)f(of)i(this)h(observation.)
704 1120 y(3.)41 b(W)-6 b(rite)17 b(a)h(SP)-8 b(ARC)18
b(pr)o(ogram)f(that)i(has)f(four)g(variables:)23 b Fn(x)g
Ft(\025)g Fm(0)p Fx(,)18 b Fn(y)26 b(>)c Fm(0)p Fx(,)c
Fn(z)t Fx(,)g(and)f Fn(w)r Fx(.)26 b(Y)-8 b(our)19 b(pr)o(ogram)808
1220 y(should)h(assign)g(the)g(quotient)h(of)e Fn(x=y)k
Fx(to)d Fn(z)j Fx(and)c(the)h(r)o(emainder)e(to)i Fn(w)r
Fx(.)26 b(\(Y)-8 b(ou)20 b(should)h(write)e(this)808
1320 y(code)g(using)h(the)f(operations)h(pr)o(esented)e(in)i(this)g
(and)f(pr)o(evious)g(labs.)24 b(Do)c(not)g(use)g(the)f(SP)-8
b(ARC)808 1419 y(integer)20 b(multiplication)i(or)f(division)h
(operations.)704 1519 y(4.)41 b(W)-6 b(rite)26 b(a)h(SP)-8
b(ARC)27 b(pr)o(ogram)f(that)h(will)h(compute)g(the)f(gr)o(eatest)f
(common)i(divisor)g(of)f Fn(a)g Fx(and)f Fn(b)808 1618
y Fx(and)20 b(assign)h(this)h(value)e(to)h Fn(c)p Fx(.)p
eop
%%Page: 27 29
27 28 bop 0 474 3300 12 v 0 723 a Fv(Laboratory)53 b(4)0
976 y(Multiplication)d(and)i(Division)p 0 1092 1200 12
v 0 1449 a Fu(4.1)119 b(Goal)0 1638 y Fx(T)-8 b(o)21
b(cover)g(the)g(SP)-8 b(ARC)20 b(operations)i(r)o(elated)d(to)i
(multiplication)h(and)e(division.)0 1924 y Fu(4.2)119
b(Objectives)0 2113 y Fx(After)20 b(completing)h(this)h(lab,)e(you)h
(will)h(be)e(able)g(to)h(write)g(assembly)g(language)g(pr)o(ograms)f
(that)h(use:)125 2296 y Ft(\017)41 b Fx(The)20 b(signed)h(and)g
(unsigned)g(multiplication)h(and)e(division)i(operations,)0
2582 y Fu(4.3)119 b(Discussion)0 2771 y Fx(In)17 b(this)h(lab)f(we)f
(consider)i(the)f(SP)-8 b(ARC)17 b(operations)g(r)o(elated)e(to)j
(integer)f(multiplication)h(and)e(division.)0 2870 y(W)-8
b(e)21 b(begin)g(by)g(considering)g(the)g(signed)g(integer)g
(multiplication)h(and)e(division)i(operations.)0 3113
y Fp(4.3.1)99 b(The)25 b(multiplication)h(and)e(division)i(operations)0
3271 y Fx(The)21 b(integer)g(multiplication)h(operations)g(multiply)g
(two)f(32-bit)f(sour)o(ce)h(values)f(and)h(pr)o(oduce)f(a)g(64-)0
3371 y(bit)h(r)o(esult.)k(The)20 b(most)h(signi\002cant)h(32)d(bits)i
(of)g(the)f(r)o(esult)g(ar)o(e)f(stor)o(ed)h(in)h(the)g(Y)f(r)o
(egister)g(\(\045y\))g(and)g(the)0 3471 y(r)o(emaining)i(32)g(bits)g
(ar)o(e)f(stor)o(ed)h(in)h(one)g(of)f(the)g(integer)h(r)o(egisters.)30
b(Figur)o(e)22 b(4.1)f(illustrates)h(the)h(use)f(of)0
3570 y(the)f(Y)g(r)o(egister)f(during)h(a)f(multiplication)i
(operation.)125 3670 y(The)27 b(integer)h(division)h(operations)f
(divide)f(a)g(32-bit)g(value)g(into)i(a)e(64-bit)g(value)g(and)g(pr)o
(oduce)0 3769 y(a)d(32-bit)g(r)o(esult.)36 b(The)25 b(Y)g(r)o(egister)f
(pr)o(ovides)g(the)h(most)g(signi\002cant)h(32)e(bits)h(of)f(the)h
(64-bit)f(dividend.)0 3869 y(One)30 b(of)g(the)g(sour)o(ce)g(values)f
(pr)o(ovides)g(the)h(least)g(signi\002cant)h(32)e(bits,)j(while)f(the)f
(other)g(pr)o(ovides)0 3969 y(the)24 b(32)e(bit)i(divisor)-6
b(.)35 b(A)23 b(implementation)i(of)e(the)h(SP)-8 b(ARC)24
b(may)f(optionally)i(stor)o(e)e(the)h(r)o(emainder)f(in)0
4068 y(the)k(Y)f(r)o(egister)-6 b(.)42 b(ISEM)25 b(does)h
Fw(not)g Fx(stor)o(e)h(the)f(r)o(emainder)f(in)i(the)g(Y)f(r)o(egister)
-6 b(,)27 b(so)g(we)f(will)h(adopt)f(this)0 4168 y(convention)h(in)g
(our)f(pr)o(esentation.)41 b(Figur)o(e)26 b(4.2)f(illustrates)h(the)g
(use)h(of)f(the)g(Y)g(r)o(egister)g(during)g(the)0 4268
y(division)c(operation.)125 4367 y(T)-8 b(able)22 b(4.1)g(summarizes)h
(the)h(assembly)f(language)g(syntax)g(for)g(the)h(integer)f
(multiplication)h(and)0 4467 y(division)e(operations)f(pr)o(ovided)e
(by)i(the)g(SP)-8 b(ARC.)20 b(Like)g(the)h(addition)g(and)f
(subtraction)h(operations,)0 4566 y(the)i(multiplication)h(and)e
(division)i(operations)f(have)g(two)g(assembly)g(language)f(formats:)30
b(one)23 b(that)0 4666 y(uses)16 b(r)o(egisters)f(for)h(both)h(sour)o
(ce)e(operands)g(and)h(another)g(that)g(uses)g(a)f(r)o(egister)g(and)h
(a)f(small)h(constant)0 4766 y(value)k(for)h(the)g(sour)o(ce)f
(operands.)125 4865 y(T)-8 b(able)17 b(4.2)f(summarizes)h(the)h(names)f
(for)h(the)f(signed)h(and)f(unsigned)h(integer)g(multiplication)g(and)0
4965 y(division)24 b(operations.)32 b(Note)23 b(that)g(each)g
(operation)g(has)g(two)g(SP)-8 b(ARC)23 b(operations:)31
b(one)23 b(that)g(af)o(fects)0 5065 y(bits)31 b(in)g(the)f(condition)i
(code)e(r)o(egister)g(\(e.g.,)i(smulcc\),)g(and)e(another)h(that)f
(does)h(not)g(\(e.g.,)h(smul\).)0 5164 y(Example)20 b(4.1)f
(illustrates)i(the)g(use)g(of)g(these)g(operations.)1608
5560 y(27)p eop
%%Page: 28 30
28 29 bop 600 100 a Fx(28)1933 b(Lab)20 b(4.)41 b(Multiplication)21
b(and)g(Division)p 1001 1190 605 4 v 1001 1290 4 100
v 1145 1256 a Fq(Y)e(r)o(egister)p 1602 1290 V 1001 1293
605 4 v 2296 294 1003 4 v 2296 393 4 100 v 2483 359 a(Instr)o(uction)h
(r)o(egister)p 3296 393 V 2296 396 1003 4 v 2848 464
a(iconst)3043 472 y Ff(13)p 2796 792 4 399 v 2798 792
a Fi(?)p 1901 596 1545 7 v 2399 795 748 7 v 1999 1091
4 499 v 2001 1091 a(?)p 2497 1091 4 299 v 415 w(?)p 2894
991 605 4 v 2894 1688 4 698 v 3079 1267 a Fq(Integer)3056
1358 y(r)o(egisters)3005 1449 y(\(\045r0\226\045r31\))p
3495 1688 V 2894 1691 605 4 v 3045 991 4 200 v 3047 875
a Fi(6)p 3344 991 4 399 v 3346 676 a(6)p 1901 1092 200
4 v 2399 1092 V 1900 1240 4 150 v 2597 1240 V 2101 1441
299 4 v 2101 1192 V 2099 1190 4 100 v 2398 1190 V 2018
1439 a(@)1935 1356 y(@)1901 1323 y(@)2399 1439 y(\000)2482
1356 y(\000)2516 1323 y(\000)2056 1313 y Fq(smul/umul)p
2199 1589 4 150 v 1304 1590 897 4 v 1489 1556 a(most)f(signi\002cant)
1646 1665 y(32)g(bits)p 1302 1589 4 299 v 1304 1373 a
Fi(6)p 2298 1589 4 150 v 2300 1590 598 4 v 2815 1588
a(-)2342 1556 y Fq(least)g(signi\002cant)2492 1665 y(32)h(bits)1657
1954 y Fx(Figur)o(e)h(4.1)e(Integer)i(multiplication)p
1001 3029 605 4 v 1001 3128 4 100 v 1145 3094 a Fq(Y)e(r)o(egister)p
1602 3128 V 1001 3131 605 4 v 2296 2132 1003 4 v 2296
2232 4 100 v 2483 2197 a(Instr)o(uction)h(r)o(egister)p
3296 2232 V 2296 2235 1003 4 v 2848 2303 a(iconst)3043
2311 y Ff(13)p 2796 2630 4 399 v 2798 2630 a Fi(?)p 1951
2434 1495 7 v 2399 2633 748 7 v 2049 2929 4 499 v 2051
2929 a(?)2081 2503 y Fq(least)e(signi\002cant)2231 2594
y(32)h(bits)p 1949 2929 4 200 v 1951 2929 a Fi(?)p 1304
2731 648 4 v 1302 3029 4 299 v 1365 2697 a Fq(most)f(signi\002cant)1521
2806 y(32)h(bits)p 2497 2929 V 2499 2929 a Fi(?)p 2894
2829 605 4 v 2894 3527 4 698 v 3079 3105 a Fq(Integer)3056
3196 y(r)o(egisters)3005 3288 y(\(\045r0\226\045r31\))p
3495 3527 V 2894 3530 605 4 v 3045 2829 4 200 v 3047
2713 a Fi(6)p 3344 2829 4 399 v 3346 2514 a(6)p 1901
2931 200 4 v 2399 2931 V 1900 3078 4 150 v 2597 3078
V 2101 3279 299 4 v 2101 3030 V 2099 3029 4 100 v 2398
3029 V 2018 3278 a(@)1935 3195 y(@)1901 3161 y(@)2399
3278 y(\000)2482 3195 y(\000)2516 3161 y(\000)2079 3151
y Fq(sdiv/udiv)p 2298 3427 4 150 v 2300 3429 598 4 v
2815 3427 a Fi(-)2460 3392 y Fq(quotient)1768 3792 y
Fx(Figur)o(e)h(4.2)g(Integer)g(division)600 4114 y(T)-8
b(able)17 b(4.1)f(Assembly)h(language)g(formats)g(for)g(the)g(integer)g
(multiplication)i(and)e(division)h(operations)857 4259
y Fq(Operation)482 b(Assembler)17 b(syntax)272 b(Operation)19
b(implemented)p 807 4290 2886 4 v 857 4354 a(integer)f(multiplication)
100 b Fr(mul-op)f(rs)2049 4362 y Ff(1)2084 4354 y Fq(,)p
Fr(rs)2161 4362 y Ff(2)2196 4354 y Fq(,)18 b Fr(rd)236
b Fl(f)p Fq(\045y)-8 b(,)18 b(r)o(eg[)p Fr(rd)p Fq(])p
Fl(g)g Fq(=)h(r)o(eg[)p Fr(rs)3240 4362 y Ff(1)3273 4354
y Fq(])f Fl(\002)h Fq(r)o(eg[)p Fr(rs)3585 4362 y Ff(2)3618
4354 y Fq(])1676 4445 y Fr(mul-op)99 b(rs)p Fq(,)19 b
Fr(iconst)2267 4453 y Ff(13)2332 4445 y Fq(,)f Fr(rd)100
b Fl(f)p Fq(\045y)-8 b(,)18 b(r)o(eg[)p Fr(rd)p Fq(])p
Fl(g)g Fq(=)h(r)o(eg[)p Fr(rs)p Fq(])e Fl(\002)h Fr(iconst)3540
4453 y Ff(13)857 4536 y Fq(integer)g(division)298 b Fr(div-op)125
b(rs)2049 4544 y Ff(1)2084 4536 y Fq(,)19 b Fr(rs)2180
4544 y Ff(2)2214 4536 y Fq(,)g Fr(rd)217 b Fq(r)o(eg[)p
Fr(rd)p Fq(])18 b(=)h Fl(f)p Fq(\045y)-8 b(,)17 b(r)o(eg[)p
Fr(rs)3201 4544 y Ff(1)3234 4536 y Fq(])p Fl(g)i Fk(=)g
Fq(r)o(eg[)p Fr(rs)3563 4544 y Ff(2)3597 4536 y Fq(])1676
4628 y Fr(div-op)125 b(rs)p Fq(,)19 b Fr(iconst)2267
4636 y Ff(13)2332 4628 y Fq(,)f Fr(rd)100 b Fq(r)o(eg[)p
Fr(rd)p Fq(])18 b(=)h Fl(f)p Fq(\045y)-8 b(,)17 b(r)o(eg[)p
Fr(rs)p Fq(])p Fl(g)h Fk(=)h Fr(iconst)3519 4636 y Ff(13)808
4776 y Fh(Notes:)913 4888 y Fb(\017)42 b Fg(iconst)1149
4897 y Ff(13)1241 4888 y Fh(denotes)24 b(an)h(integer)g(constant.)47
b(This)25 b(constant)g(is)h(signed)f(when)g(it)h(used)f(with)g(a)h
(signed)990 4967 y(operation)17 b(\(e.g.,)e(smul\))h(and)g(unsigned)g
(when)f(it)i(is)f(used)g(with)g(an)h(unsigned)e(operation)i(\(e.g.,)e
(umul\).)990 5046 y(The)h(value)h(must)f(be)g(r)o(epr)o(esented)f(in)h
(13)h(bits.)913 5125 y Fb(\017)42 b(f)p Fa(x)p Fh(,)19
b Fa(y)r Fb(g)h Fh(denotes)e(a)h(64-bit)g(value)g(\(or)h(storage)f
(location\))h(constr)o(ucted)g(fr)o(om)f(two)g(32-bit)g(values)g
Fa(x)g Fh(and)990 5204 y Fa(y)r Fh(.)i(The)15 b(\002rst)i(of)g(these)f
(values,)g Fa(x)p Fh(,)g(is)h(the)f(most)g(signi\002cant.)p
eop
%%Page: 29 31
29 30 bop 0 100 a Fx(Lab)20 b(4.)41 b(Multiplication)21
b(and)f(Division)1936 b(29)160 393 y(T)-8 b(able)21 b(4.2)e(The)i
(signed)g(and)f(unsigned)i(integer)e(multiplication)i(and)f(division)g
(operations)792 539 y Fq(Operation)809 b(Operation)18
b(names)p 742 569 1816 4 v 792 633 a(signed)g(integer)g(multiplication)
188 b(smul)113 b(smulcc)792 725 y(unsigned)18 b(integer)g
(multiplication)100 b(umul)g(umulcc)792 816 y(signed)18
b(integer)g(division)386 b(sdiv)136 b(sdivcc)792 907
y(unsigned)18 b(integer)g(division)298 b(udiv)123 b(udivcc)p
0 1267 3300 4 v 0 1348 a Fs(Example)24 b(4.1)75 b Fr(W)o(rite)22
b(a)h(SP)-10 b(ARC)23 b(pr)o(ogram)h(to)f(evaluate)h(the)f(statement)g
Fk(a)30 b Fd(=)f(\()p Fk(a)20 b Fl(\003)h Fk(b)p Fd(\))p
Fk(=c)p Fr(.)37 b(In)23 b(writing)f(this)i(code)g(you)0
1439 y(should)19 b(assume)g(that)g Fk(a)p Fr(,)f Fk(b)p
Fr(,)g(and)h Fk(c)g Fr(ar)o(e)f(signed)h(integer)g(values)f(and)h(that)
g(all)f(r)o(esults)g(can)h(be)f(r)o(epr)o(esented)h(in)f(32)h(bits.)583
1555 y Fo(.data)224 1647 y(a:)269 b(.word)133 b(0x42)224
1738 y(b:)269 b(.word)133 b(0x43)224 1829 y(c:)269 b(.word)133
b(0x44)583 2012 y(.text)224 2103 y(start:)89 b(set)223
b(a,)45 b(\045r1)583 2194 y(ld)268 b([\045r1],)44 b(\045r2)583
2286 y(set)223 b(b,)45 b(\045r1)583 2377 y(ld)268 b([\045r1],)44
b(\045r3)583 2468 y(set)223 b(c,)45 b(\045r1)583 2560
y(ld)268 b([\045r1],)44 b(\045r4)583 2742 y(smul)178
b(\045r2,)45 b(\045r3,)f(\045r2)134 b(!)44 b(a*)h(b)g(-->)f(\045y,)g
(\045r2)583 2834 y(sdiv)178 b(\045r2,)45 b(\045r4,)f(\045r2)134
b(!)44 b(\045y,)h(\045r2)f(/)h(c)f(-->)h(\045r2)583 3016
y(set)223 b(a,)45 b(\045r1)583 3108 y(st)268 b(\045r2,)45
b([\045r1])268 b(!)44 b(\045r2)h(-->)f(a)224 3290 y(end:)179
b(ta)268 b(0)p 0 3320 V 125 3469 a Fx(The)23 b(signed)h(and)g(unsigned)
g(operations)g(ar)o(e)f(distinguished)h(by)g(the)g(way)g(they)g
(interpr)o(et)f(their)0 3569 y(operands.)48 b(The)29
b(signed)g(operations)f(interpr)o(et)g(their)h(sour)o(ce)f(operands)g
(as)g(signed)h(integers)f(and)0 3668 y(pr)o(oduce)e(signed)h(integer)g
(r)o(esults.)43 b(The)27 b(unsigned)g(operations)g(interpr)o(et)f
(their)h(sour)o(ce)f(operands)0 3768 y(as)20 b(unsigned)i(integers)f
(and)f(pr)o(oduce)g(unsigned)h(integer)g(r)o(esults.)0
4011 y Fp(4.3.2)99 b(Updating)24 b(the)h(condition)h(code)g(bits)0
4169 y Fx(The)e(operations)h(that)f(have)g(names)g(ending)h(in)g
(\223cc\224)e(update)g(the)i(bits)f(in)h(the)g(condition)g(code)f(r)o
(eg-)0 4268 y(ister)-6 b(.)29 b(The)22 b(integer)f(multiplication)i
(operations)g(\(smulcc)f(and)f(umulcc\))h(always)g(clear)f(the)h(V)f
(\(over)o(-)0 4368 y(\003ow\))f(and)f(C)h(\(carry\))e(bits)i(of)g(the)f
(condition)i(code)f(r)o(egister)-6 b(.)24 b(In)c(addition,)f(these)h
(operations)g(update)0 4468 y(the)j(N)g(\(negative\))f(and)h(Z)g(\(zer)
o(o\))e(bits)j(of)e(the)i(condition)g(code)f(r)o(egister)-6
b(.)31 b(Although)24 b(the)f(multiplica-)0 4567 y(tion)f(operations)g
(pr)o(oduce)f(a)g(64-bit)f(r)o(esult,)h(updates)g(to)h(the)f(N)h(and)f
(Z)h(\003ags)g(ar)o(e)e(only)i(based)f(on)h(the)0 4667
y(least)d(signi\002cant)i(32)e(bits)h(of)f(the)h(r)o(esult.)25
b(Like)19 b(the)h(multiplication)h(operations,)f(the)f(division)i
(opera-)0 4766 y(tions)g(\(sdivcc)f(and)g(udivcc\))f(also)i(clear)e
(the)i(C)f(bit)g(in)h(the)f(condition)i(code)e(r)o(egister)-6
b(.)24 b(In)d(addition,)f(the)0 4866 y(division)i(operations)f(update)e
(the)i(N,)f(Z,)h(and)f(V)h(bits)g(in)g(the)g(condition)h(code)e(r)o
(egister)g(based)g(on)h(the)0 4966 y(value)f(of)h(the)g(32-bit)e(r)o
(esult.)p eop
%%Page: 30 32
30 31 bop 600 100 a Fx(30)1933 b(Lab)20 b(4.)41 b(Multiplication)21
b(and)g(Division)600 333 y Fp(4.3.3)99 b(Examining)24
b(and)h(setting)h(the)e(Y)i(register)600 491 y Fx(Note)e(that)g(the)g
(code)f(pr)o(esented)g(in)h(Example)f(4.1)f(does)i(not)h(need)e(to)h
(examine)g(or)g(set)f(the)h(value)g(in)600 590 y(the)f(Y)g(r)o(egister)
-6 b(.)29 b(The)23 b(multiplication)h(sets)e(the)h(Y)g(r)o(egister)f
(and)g(the)h(division)g(uses)g(the)f(value)g(set)h(by)600
690 y(the)29 b(multiplication.)52 b(In)29 b(many)g(other)g(cases)g(you)
g(will)h(need)f(to)g(examine)g(or)g(set)g(the)g(contents)h(of)600
790 y(the)25 b(Y)g(r)o(egister)-6 b(.)37 b(In)25 b(particular)-6
b(,)25 b(you)g(may)g(need)f(to)i(examine)e(the)h(contents)h(of)f(the)g
(Y)g(r)o(egister)f(after)600 889 y(a)30 b(multiplication)i(or)f(set)f
(the)h(contents)h(of)e(the)h(Y)g(r)o(egister)f(befor)o(e)f(a)h
(division.)56 b(Y)-8 b(ou)32 b(can)e(use)h(the)600 989
y(\(synthetic\))24 b(mov)g(operation)g(intr)o(oduced)f(in)h(Lab)f(2)h
(to)g(copy)g(the)g(contents)g(of)g(the)g(Y)g(r)o(egister)f(to)h(an)600
1088 y(integer)d(r)o(egister)f(or)h(vice)g(versa.)k(Y)-8
b(ou)22 b(can)f(also)g(use)g(the)g(mov)h(operation)f(to)g(set)g(the)g
(contents)h(of)f(the)600 1188 y(Y)h(r)o(egister)-6 b(.)28
b(T)-8 b(able)21 b(4.3)g(summarizes)h(the)g(mov)g(operation)g(as)f(it)h
(applies)g(to)g(the)g(Y)g(r)o(egister)-6 b(.)28 b(The)22
b(\002rst)600 1288 y(format)d(copies)g(the)g(contents)i(of)e(the)g(Y)g
(r)o(egister)g(to)g(an)g(integer)g(r)o(egister)-6 b(.)25
b(The)19 b(second)g(format)g(copies)600 1387 y(the)27
b(contents)h(of)f(an)g(integer)g(r)o(egister)g(to)g(the)g(Y)h(r)o
(egister)-6 b(.)43 b(The)27 b(thir)o(d)g(instr)o(uction)i(format)e
(stor)o(es)f(a)600 1487 y(small)21 b(integer)g(constant)g(into)h(the)f
(Y)g(r)o(egister)-6 b(.)1271 1753 y(T)e(able)20 b(4.3)g(The)h(mov)g
(operation)g(applied)f(to)h(the)g(Y)g(r)o(egister)-6
b(.)1206 1899 y Fq(Operation)190 b(Assembler)18 b(syntax)176
b(Operation)19 b(implemented)p 1156 1930 2188 4 v 1206
1994 a(r)o(egister)d(copy)99 b(mov)h(\045y)-8 b(,)17
b Fr(rd)316 b Fq(r)o(eg[)p Fr(rd)p Fq(])18 b(=)h(r)o(eg[\045y])1733
2085 y(mov)100 b Fr(rs)p Fq(,)19 b(\045y)314 b(r)o(eg[\045y])17
b(=)i(r)o(eg[)p Fr(rs)p Fq(])1206 2176 y(r)o(egister)d(set)168
b(mov)100 b Fr(siconst)2191 2184 y Ff(13)2256 2176 y
Fq(,)18 b(\045y)99 b(r)o(eg[\045y])17 b(=)i Fr(iconst)3020
2184 y Ff(13)725 2462 y Fx(When)32 b(you)h(stor)o(e)f(a)g(value)g(into)
h(the)f(Y)h(r)o(egister)e(\(using)i(a)f(mov)h(instr)o(uction\),)j(it)d
(takes)f(thr)o(ee)600 2562 y(instr)o(uction)c(cycles)f(befor)o(e)f(the)
h(Y)g(r)o(egister)f(is)h(actually)f(updated.)42 b(This)27
b(means)g(that)g(you)g(need)g(to)600 2662 y(make)16 b(sur)o(e)f(ther)o
(e)g(ar)o(e)f(at)i(least)g(thr)o(ee)f(instr)o(uctions)i(between)f(an)g
(instr)o(uction)h(that)f(uses)g(the)h(Y)f(r)o(egister)600
2761 y(as)k(a)h(destination)g(and)f(an)h(instr)o(uction)h(that)f(uses)g
(the)g(value)f(stor)o(ed)g(in)i(the)e(Y)i(r)o(egister)-6
b(.)p 765 2888 2970 4 v 765 2975 a Fs(W)g(riting)23 b(to)g(the)h(Y)f
(register)99 b Fq(Remember)-6 b(,)25 b(always)e(make)h(sur)o(e)e(that)k
(ther)o(e)d(ar)o(e)g(at)i(least)e(thr)o(ee)h(in-)765
3067 y(str)o(uctions)i(between)g(any)g(instr)o(uction)h(that)g(writes)e
(to)g(the)i(\045y)d(r)o(egister)g(and)i(an)g(instr)o(uction)g(that)765
3158 y(uses)18 b(the)h(value)g(in)g(the)g(\045y)f(r)o(egister)-6
b(.)p 765 3207 V 600 3493 3300 4 v 600 3574 a Fs(Example)18
b(4.2)93 b Fr(W)o(rite)16 b(a)h(SP)-10 b(ARC)17 b(assembly)h(language)f
(fragment)g(to)h(evaluate)f(the)h(statement)f Fk(a)k
Fd(=)g(\()p Fk(a)12 b Fd(+)g Fk(b)p Fd(\))p Fk(=c)p Fr(.)23
b(Again,)600 3665 y(you)c(should)g(assume)f(that)h Fk(a)p
Fr(,)f Fk(b)p Fr(,)h(and)f Fk(c)h Fr(ar)o(e)g(signed)g(integers)f(and)h
(that)g(all)g(r)o(esults)e(can)i(be)f(r)o(epr)o(esented)h(in)f(32)h
(bits.)1183 3781 y Fo(.data)824 3873 y(a:)269 b(.word)133
b(0x42)824 3964 y(b:)269 b(.word)133 b(0x43)824 4055
y(c:)269 b(.word)133 b(0x44)1183 4238 y(.text)824 4329
y(start:)89 b(mov)223 b(\045r0,)45 b(\045y)403 b(!)44
b(clear)g(the)h(Y)f(register)g(--)g(THERE)g(MUST)h(BE)600
4421 y(AT)2259 4512 y(!)f(LEAST)g(3)h(INSTRUCTIONS)e(BETWEEN)h(THE)g
(MOV)600 4603 y(AND)2259 4695 y(!)g(SDIV)h(INSTRUCTIONS)1183
4786 y(set)223 b(a,)45 b(\045r1)1183 4877 y(ld)268 b([\045r1],)44
b(\045r2)1183 4969 y(set)223 b(b,)45 b(\045r1)1183 5060
y(ld)268 b([\045r1],)44 b(\045r3)1183 5151 y(set)223
b(c,)45 b(\045r1)1183 5243 y(ld)268 b([\045r1],)44 b(\045r4)p
eop
%%Page: 31 33
31 32 bop 0 100 a Fx(Lab)20 b(4.)41 b(Multiplication)21
b(and)f(Division)1936 b(31)583 333 y Fo(add)223 b(\045r2,)45
b(\045r3,)f(\045r2)134 b(!)44 b(a)h(+)g(b)f(-->)h(\045r2)583
424 y(sdiv)178 b(\045r2,)45 b(\045r4,)f(\045r2)134 b(!)44
b(\045r2)h(/)f(c)h(-->)f(\045r2)583 607 y(set)223 b(a,)45
b(\045r1)583 698 y(st)268 b(\045r2,)45 b([\045r1])268
b(!)44 b(\045r2)h(-->)f(a)224 789 y(end:)179 b(ta)268
b(0)p 0 818 3300 4 v 0 1111 a Fp(4.3.4)99 b(The)25 b(multiply)g(step)g
(operation)0 1269 y Fx(Prior)j(to)f(V)-9 b(ersion)28
b(8)f(the)h(SP)-8 b(ARC)27 b(did)g(not)h(have)f(integer)g
(multiplication)i(or)f(division)g(operations.)0 1369
y(These)17 b(operations)g(had)f(to)h(be)g(performed)f(using)h(mor)o(e)g
(primitive)g(operations.)24 b(T)-8 b(o)18 b(simplify)f(integer)0
1468 y(multiplication,)h(earlier)d(versions)h(of)g(the)g(SP)-8
b(ARC)16 b(pr)o(ovided)f(a)g(multiply)i(step)f(operation,)h
(\223mulscc\224.)0 1568 y(W)-8 b(e)24 b(will)g(consider)f(this)i
(operation)e(in)h(Lab)f(13)f(when)i(take)f(a)g(closer)h(look)g(at)f
(integer)h(arithmetic)f(on)0 1668 y(the)e(SP)-8 b(ARC.)0
1953 y Fu(4.4)119 b(Summary)0 2142 y Fx(In)29 b(this)g(lab)f(we)g(have)
g(cover)o(ed)f(the)h(integer)h(multiplication)g(and)f(division)h
(operations)g(pr)o(ovided)0 2242 y(by)22 b(the)g(SP)-8
b(ARC.)22 b(As)g(with)h(the)f(other)g(arithmetic)g(operation)g(\(add)f
(and)h(sub\),)f(ther)o(e)h(ar)o(e)e(versions)j(of)0 2342
y(the)28 b(multiplication)g(and)f(division)h(operations)g(that)f
(update)g(the)g(condition)i(code)e(bits)h(and)f(other)0
2441 y(multiplication)22 b(and)e(division)i(operations)f(that)g(do)g
(not)g(alter)f(the)h(condition)h(code)f(bits.)125 2541
y(All)h(of)g(the)h(multiplication)h(and)e(division)h(operations)g
(operations)g(use)g(a)f(special)g(purpose)g(r)o(eg-)0
2641 y(ister)-6 b(,)19 b(the)h(Y)g(r)o(egister)f(\(\045y\).)24
b(Y)-8 b(ou)20 b(can)g(use)f(the)h(mov)g(operation)f(to)h(examine)f
(and)g(set)h(the)g(contents)g(of)0 2740 y(the)h(Y)g(r)o(egister)-6
b(.)0 3026 y Fu(4.5)119 b(Review)30 b(Questions)104 3215
y Fx(1.)41 b(How)21 b(is)g(the)g(Y)g(r)o(egister)f(used)h(in)g(the)g
(integer)g(multiplication)g(operations?)104 3315 y(2.)41
b(How)21 b(is)g(the)g(Y)g(r)o(egister)f(used)h(in)g(the)g(integer)g
(division)g(operations?)0 3600 y Fu(4.6)119 b(Exercises)p
eop
%%Page: 32 34
32 33 bop 600 100 a Fx(32)1933 b(Lab)20 b(4.)41 b(Multiplication)21
b(and)g(Division)p eop
%%Page: 33 35
33 34 bop 0 474 3300 12 v 0 723 a Fv(Laboratory)53 b(5)0
976 y(Bit)e(Manipulation)h(and)g(Character)0 1186 y(I/O)p
0 1302 1200 12 v 0 1659 a Fu(5.1)119 b(Goal)0 1848 y
Fx(T)-8 b(o)28 b(cover)g(the)g(bit)g(manipulation)h(operations)f(pr)o
(ovided)f(by)h(the)g(SP)-8 b(ARC)28 b(and)f(the)h(character)e(I/O)0
1948 y(traps)20 b(pr)o(ovided)g(by)h(ISEM.)0 2233 y Fu(5.2)119
b(Objectives)0 2422 y Fx(After)20 b(completing)h(this)h(lab,)e(you)h
(will)h(be)e(able)g(to)h(write)g(assembly)g(language)g(pr)o(ograms)f
(that)h(use:)125 2599 y Ft(\017)41 b Fx(The)20 b(bitwise)i(operations,)
125 2698 y Ft(\017)41 b Fx(The)20 b(shift)h(operations,)g(and)125
2796 y Ft(\017)41 b Fx(The)20 b(character)g(I/O)h(traps)f(pr)o(ovided)g
(by)g(ISEM.)0 3081 y Fu(5.3)119 b(Discussion)0 3270 y
Fx(In)27 b(this)h(lab)f(we)g(intr)o(oduce)g(the)g(bit)g(manipulation)h
(operations)f(of)g(the)h(SP)-8 b(ARC.)27 b(In)g(particular)-6
b(,)27 b(we)0 3370 y(consider)32 b(the)h(logical)f(operations)g
Fw(and)p Fx(,)j Fw(or)p Fx(,)g(and)c Fw(xor)p Fx(.)59
b(In)33 b(addition,)h(we)f(consider)f(the)g(synthetic)0
3469 y(operation)22 b(not.)31 b(W)-8 b(e)23 b(follow)g(this)g(with)g(a)
f(discussion)h(of)g(the)f(shift)h(operations)g Fw(sll)p
Fx(,)f Fw(srl)p Fx(,)i(and)d Fw(sra)p Fx(.)31 b(The)0
3569 y(lab)20 b(ends)h(with)h(a)e(short)h(discussion)h(of)f(the)g
(character)e(I/O)j(facilities)e(pr)o(ovided)g(by)g(ISEM.)0
3811 y Fp(5.3.1)99 b(Bitwise)26 b(operations)0 3969 y
Fx(T)-8 b(able)23 b(5.1)f(summarizes)g(the)i(bitwise)f(operations)h(of)
f(the)g(SP)-8 b(ARC.)23 b(Like)g(the)g(other)h(data)d(manipula-)0
4068 y(tion)k(operations)f(\(e.g.,)f(add,)g(sub,)h(smul,)h(sdiv)-9
b(,)24 b(etc.\),)f(ther)o(e)g(ar)o(e)f(two)i(instr)o(uction)i(formats)d
(for)h(each)0 4168 y(of)e(the)g(bitwise)h(operations.)30
b(Both)23 b(formats)f(use)g(thr)o(ee)f(explicit)h(operands\227two)h
(sour)o(ce)e(operands)0 4268 y(and)28 b(a)g(destination)h(operand.)47
b(In)28 b(the)h(\002rst)f(format,)i(both)f(of)f(the)h(sour)o(ce)e
(operands)h(ar)o(e)f(in)i(r)o(egis-)0 4367 y(ters.)36
b(In)25 b(the)f(second)h(format,)g(one)g(of)f(the)g(sour)o(ce)g
(operands)g(is)h(in)g(a)f(r)o(egister)-6 b(,)24 b(the)g(other)h(is)g(a)
f(small)0 4467 y(constant)30 b(value.)51 b(This)30 b(constant)h(may)e
(be)g(positive)h(or)g(negative;)j(however)d(its)g(2's)f(complement)0
4567 y(r)o(epr)o(esentation)d(must)h(\002t)g(in)g(13)f(bits\227the)h
(SP)-8 b(ARC)27 b(does)g(sign)g(extend)g(this)g(value.)43
b(Examples)26 b(5.1)0 4666 y(and)20 b(5.2)g(illustrate)h(uses)g(of)f
(the)h(bitwise)g(operations.)p 0 4788 3300 4 v 0 4869
a Fs(Example)e(5.1)75 b Fr(W)o(rite)18 b(a)h(SP)-10 b(ARC)18
b(pr)o(ogram)h(to)g(evaluate)g(the)g(statement:)j Fk(a)f
Fd(=)g(\()p Fk(a)p Fd(&)p Fk(b)p Fd(\))c Fl(^)g Fd(\()p
Fk(c)p Fl(j)p Fk(d)p Fd(\))p Fr(.)583 4984 y Fo(.data)224
5076 y(a:)269 b(.word)133 b(0x42)224 5167 y(b:)269 b(.word)133
b(0x43)224 5258 y(c:)269 b(.word)133 b(0x44)224 5350
y(d:)269 b(.word)133 b(0x45)1608 5560 y Fx(33)p eop
%%Page: 34 36
34 35 bop 600 100 a Fx(34)1622 b(Lab)20 b(5.)40 b(Bit)21
b(Manipulation)g(and)f(Character)f(I/O)1740 393 y(T)-8
b(able)20 b(5.1)g(Bitwise)h(operations)1052 539 y Fq(Operation)201
b(Assembler)17 b(syntax)290 b(Operation)18 b(implemented)p
1002 569 2497 4 v 1052 633 a(and)412 b(and)143 b Fr(rs)1917
641 y Ff(1)1952 633 y Fq(,)18 b Fr(rs)2047 641 y Ff(2)2082
633 y Fq(,)g Fr(rd)282 b Fq(r)o(eg[)p Fr(rd)p Fq(])17
b(=)i(r)o(eg[)p Fr(rs)2961 641 y Ff(1)2994 633 y Fq(])g(&)g(r)o(eg[)p
Fr(rs)3305 641 y Ff(2)3338 633 y Fq(])1590 725 y(and)143
b Fr(rs)1917 733 y Ff(1)1952 725 y Fq(,)18 b Fr(siconst)2198
733 y Ff(13)2263 725 y Fq(,)h Fr(rd)100 b Fq(r)o(eg[)p
Fr(rd)p Fq(])17 b(=)i(r)o(eg[)p Fr(rs)2961 733 y Ff(1)2994
725 y Fq(])g(&)g Fr(siconst)3324 733 y Ff(13)1052 816
y Fq(or)467 b(or)198 b Fr(rs)1917 824 y Ff(1)1952 816
y Fq(,)18 b Fr(rs)2047 824 y Ff(2)2082 816 y Fq(,)g Fr(rd)282
b Fq(r)o(eg[)p Fr(rd)p Fq(])17 b(=)i(r)o(eg[)p Fr(rs)2961
824 y Ff(1)2994 816 y Fq(])g Fl(j)g Fq(r)o(eg[)p Fr(rs)3268
824 y Ff(2)3301 816 y Fq(])1590 907 y(or)198 b Fr(rs)1917
915 y Ff(1)1952 907 y Fq(,)18 b Fr(siconst)2198 915 y
Ff(13)2263 907 y Fq(,)h Fr(rd)100 b Fq(r)o(eg[)p Fr(rd)p
Fq(])17 b(=)i(r)o(eg[)p Fr(rs)2961 915 y Ff(1)2994 907
y Fq(])g Fl(j)g Fr(siconst)3287 915 y Ff(13)1052 999
y Fq(exclusive)e(or)143 b(xor)159 b Fr(rs)1917 1007 y
Ff(1)1952 999 y Fq(,)18 b Fr(rs)2047 1007 y Ff(2)2082
999 y Fq(,)g Fr(rd)282 b Fq(r)o(eg[)p Fr(rd)p Fq(])17
b(=)i(r)o(eg[)p Fr(rs)2961 1007 y Ff(1)2994 999 y Fq(])g
Fl(^)g Fq(r)o(eg[)p Fr(rs)3298 1007 y Ff(2)3331 999 y
Fq(])1590 1090 y(xor)159 b Fr(rs)1917 1098 y Ff(1)1952
1090 y Fq(,)18 b Fr(siconst)2198 1098 y Ff(13)2263 1090
y Fq(,)h Fr(rd)100 b Fq(r)o(eg[)p Fr(rd)p Fq(])17 b(=)i(r)o(eg[)p
Fr(rs)2961 1098 y Ff(1)2994 1090 y Fq(])g Fl(^)g Fr(siconst)3317
1098 y Ff(13)1052 1181 y Fq(and)g(not)285 b(andn)100
b Fr(rs)1917 1189 y Ff(1)1952 1181 y Fq(,)18 b Fr(rs)2047
1189 y Ff(2)2082 1181 y Fq(,)g Fr(rd)282 b Fq(r)o(eg[)p
Fr(rd)p Fq(])17 b(=)i(r)o(eg[)p Fr(rs)2961 1189 y Ff(1)2994
1181 y Fq(])g(&)g Fl(\030)p Fq(r)o(eg[)p Fr(rs)3365 1189
y Ff(2)3397 1181 y Fq(])1590 1272 y(andn)100 b Fr(rs)1917
1280 y Ff(1)1952 1272 y Fq(,)18 b Fr(siconst)2198 1280
y Ff(13)2263 1272 y Fq(,)h Fr(rd)100 b Fq(r)o(eg[)p Fr(rd)p
Fq(])17 b(=)i(r)o(eg[)p Fr(rs)2961 1280 y Ff(1)2994 1272
y Fq(])g(&)g Fl(\030)p Fr(siconst)3384 1280 y Ff(13)1052
1364 y Fq(or)f(not)341 b(orn)155 b Fr(rs)1917 1372 y
Ff(1)1952 1364 y Fq(,)18 b Fr(rs)2047 1372 y Ff(2)2082
1364 y Fq(,)g Fr(rd)282 b Fq(r)o(eg[)p Fr(rd)p Fq(])17
b(=)i(r)o(eg[)p Fr(rs)2961 1372 y Ff(1)2994 1364 y Fq(])g
Fl(j)g(\030)p Fq(r)o(eg[)p Fr(rs)3328 1372 y Ff(2)3361
1364 y Fq(])1590 1455 y(orn)155 b Fr(rs)1917 1463 y Ff(1)1952
1455 y Fq(,)18 b Fr(siconst)2198 1463 y Ff(13)2263 1455
y Fq(,)h Fr(rd)100 b Fq(r)o(eg[)p Fr(rd)p Fq(])17 b(=)i(r)o(eg[)p
Fr(rs)2961 1463 y Ff(1)2994 1455 y Fq(])g Fl(j)g(\030)p
Fr(siconst)3347 1463 y Ff(13)1052 1546 y Fq(exclusive)e(nor)100
b(xnor)116 b Fr(rs)1917 1554 y Ff(1)1952 1546 y Fq(,)18
b Fr(rs)2047 1554 y Ff(2)2082 1546 y Fq(,)g Fr(rd)282
b Fq(r)o(eg[)p Fr(rd)p Fq(])17 b(=)i(r)o(eg[)p Fr(rs)2961
1554 y Ff(1)2994 1546 y Fq(])g Fl(^)g(\030)p Fq(r)o(eg[)p
Fr(rs)3358 1554 y Ff(2)3390 1546 y Fq(])1590 1638 y(xnor)116
b Fr(rs)1917 1646 y Ff(1)1952 1638 y Fq(,)18 b Fr(siconst)2198
1646 y Ff(13)2263 1638 y Fq(,)h Fr(rd)100 b Fq(r)o(eg[)p
Fr(rd)p Fq(])17 b(=)i(r)o(eg[)p Fr(rs)2961 1646 y Ff(1)2994
1638 y Fq(])g Fl(^)g(\030)p Fr(siconst)3377 1646 y Ff(13)1183
2067 y Fo(.text)824 2159 y(start:)89 b(set)223 b(a,)45
b(\045r1)1183 2250 y(ld)268 b([\045r1],)44 b(\045r2)627
b(!)45 b(a)g(-->)f(\045r2)1183 2341 y(set)223 b(b,)45
b(\045r1)1183 2432 y(ld)268 b([\045r1],)44 b(\045r3)627
b(!)45 b(b)g(-->)f(\045r3)1183 2524 y(set)223 b(c,)45
b(\045r1)1183 2615 y(ld)268 b([\045r1],)44 b(\045r4)627
b(!)45 b(c)g(-->)f(\045r4)1183 2706 y(set)223 b(d,)45
b(\045r1)1183 2798 y(ld)268 b([\045r1],)44 b(\045r5)627
b(!)45 b(d)g(-->)f(\045r5)1183 2980 y(and)223 b(\045r2,)45
b(\045r3,)f(\045r2)492 b(!)45 b(a)g(&)f(b)h(-->)f(\045r2)1183
3072 y(or)268 b(\045r4,)45 b(\045r5,)f(\045r4,)447 b(!)45
b(c)g Fl(j)g Fo(d)g(-->)f(\045r4)1183 3163 y(xor)223
b(\045r2,)45 b(\045r4,)f(\045r2)492 b(!)45 b(\045r2)f
Fl(^)h Fo(\045r4)g(-->)f(r2)1183 3346 y(set)223 b(a,)45
b(\045r1)1183 3437 y(st)268 b(\045r2,)45 b([\045r1])626
b(!)45 b(\045r2)f(-->)h(a)824 3528 y(end:)179 b(ta)268
b(0)p 600 3558 3300 4 v 600 3678 V 600 3758 a Fs(Example)21
b(5.2)75 b Fr(W)o(rite)18 b(a)j(SP)-10 b(ARC)19 b(pr)o(ogram)h(to)g
(clear)h(bits)e(5)h(thr)o(ough)h(12)f(of)g(the)g(word)h
Fk(n)f Fr(\(bit)f(0)h(is)g(the)g(least)g(signi\002cant)600
3849 y(bit\).)1183 3960 y Fo(.data)824 4051 y(n:)269
b(.word)133 b(0xaaaaaaaa)1183 4234 y(.text)824 4325 y(start:)89
b(set)223 b(n,)45 b(\045r1)1183 4417 y(ld)268 b([\045r1],)44
b(\045r2)627 b(!)45 b(n)g(-->)f(\045r2)1183 4599 y(andn)178
b(\045r2,)45 b(0x1fe0,)e(\045r2)358 b(!)45 b(\045r2)f(&)h
Fl(\030)p Fo(0x1fe0)f(-->)g(\045r2)1183 4782 y(st)268
b(\045r2,)45 b([\045r1])626 b(!)45 b(\045r2)f(-->)h(n)824
4873 y(end:)179 b(ta)268 b(0)600 4984 y Fq(In)26 b(this)g(case,)h(the)g
(mask)e(\(0x1fe0\))g(can)i(be)f(r)o(epr)o(esented)d(using)i(12)i(bits)e
(and,)j(as)e(such,)h(we)f(can)g(use)g(an)g(andn)600 5075
y(instr)o(uction)19 b(with)h(an)g(immediate)e(value.)p
600 5105 V 600 5213 V 600 5301 a Fs(Activity)g(5.1)93
b Fr(W)o(rite)18 b(a)h(SP)-10 b(ARC)18 b(pr)o(ogram)h(to)g(clear)g
(bits)f(5)h(thr)o(ough)g(13)h(of)e(the)h(word)h Fk(n)p
Fr(.)p 600 5350 V eop
%%Page: 35 37
35 36 bop 0 100 a Fx(Lab)20 b(5.)41 b(Bit)20 b(Manipulation)h(and)f
(Character)g(I/O)1623 b(35)0 333 y Fp(5.3.2)99 b(Condition)26
b(codes)0 491 y Fx(Like)32 b(the)g(other)h(data)e(manipulation)i
(operations,)i(ther)o(e)c(ar)o(e)g(separate)g(bitwise)h(operations)h
(that)0 590 y(update)c(the)h(condition)h(code)e(r)o(egister)g(after)g
(they)h(perform)f(the)h(speci\002ed)f(operation.)53 b(T)-8
b(able)29 b(5.2)0 690 y(summarizes)17 b(the)h(collection)h(of)e
(bitwise)h(operations)g(that)g(set)f(the)h(condition)h(codes.)24
b(The)18 b(names)f(for)0 790 y(these)22 b(operations)h(have)e(a)h(suf)o
(\002x)g(of)g(\223cc\224)e(to)j(indicate)f(that)g(they)g(update)f(the)h
(bits)h(in)f(the)h(condition)0 889 y(code)d(r)o(egister)-6
b(.)662 1156 y(T)e(able)21 b(5.2)e(Bitwise)i(operations\227condition)i
(code)d(versions)1112 1301 y Fq(Operation)201 b(Operation)18
b(name)p 1062 1332 1176 4 v 1112 1396 a(and)412 b(andcc)1112
1487 y(or)467 b(or)o(cc)1112 1578 y(exclusive)18 b(or)142
b(xor)o(cc)1112 1670 y(and)19 b(not)285 b(andncc)1112
1761 y(or)18 b(not)341 b(orncc)1112 1852 y(exclusive)18
b(nor)99 b(xnor)o(cc)600 1968 y Fh(In)17 b(all)g(cases,)g(the)f(V)g
(and)g(C)h(\003ags)g(ar)o(e)g(clear)o(ed.)600 2047 y(If)g(the)f(r)o
(esult)g(is)i(zer)o(o,)e(the)g(Z)h(\003ag)g(is)g(set,)f(otherwise)h(Z)g
(is)g(clear)o(ed.)600 2126 y(The)f(N)h(\003ag)g(is)g(set)f(to)h(the)e
(most)i(signi\002cant)g(bit)f(in)h(the)e(r)o(esult.)0
2552 y Fp(5.3.3)99 b(Synthetic)25 b(operation)h(not)0
2710 y Fx(Bitwise)g(inversion)h(is)g(pr)o(ovided)e(by)h(a)f(synthetic)i
(operation.)42 b(T)-8 b(able)26 b(5.3)e(summarizes)i(this)h(opera-)0
2809 y(tion.)f(Bitwise)21 b(inversion)h(does)f(not)g(af)o(fect)e(the)i
(bits)g(in)g(the)g(condition)h(code)f(r)o(egister)-6
b(.)1162 3076 y(T)e(able)20 b(5.3)g(Bitwise)h(inversion)690
3200 y Fq(Operation)99 b(Assembler)18 b(syntax)99 b(Operation)19
b(implemented)p 640 3230 2020 4 v 690 3294 a(not)328
b(not)101 b Fr(rs)p Fq(,)18 b Fr(rd)317 b Fq(r)o(eg[)p
Fr(rd)p Fq(])18 b(=)h Fl(\030)p Fq(r)o(eg[)p Fr(rs)p
Fq(])1126 3386 y(not)101 b Fr(rd)412 b Fq(r)o(eg[)p Fr(rd)p
Fq(])18 b(=)h Fl(\030)p Fq(r)o(eg[)p Fr(rd)p Fq(])0 3815
y Fp(5.3.4)99 b(Shift)25 b(operations)0 3973 y Fx(T)-8
b(able)20 b(5.4)f(summarizes)h(the)g(shift)h(operations)g(of)f(the)g
(SP)-8 b(ARC.)21 b(The)f(SP)-8 b(ARC)20 b(pr)o(ovides)g(two)h(instr)o
(uc-)0 4073 y(tion)g(formats)g(for)f(each)g(of)h(the)f(shift)h
(operations.)26 b(The)20 b(shift)h(operations)g(pr)o(ovide)f(a)g
(mechanism)h(for)0 4172 y(moving)g(every)d(bit)i(in)g(a)e(value)h(to)h
(the)f(left)g(or)h(right)g(by)f(a)g(speci\002ed)g(number)g(of)h
(positions.)26 b(The)20 b(shift)0 4272 y(operations)h(do)g(not)g(af)o
(fect)e(the)i(bits)g(in)g(the)g(condition)h(code)f(r)o(egister)-6
b(.)1114 4539 y(T)e(able)20 b(5.4)g(The)h(shift)g(operations)179
4684 y Fq(Operation)444 b(Assembler)18 b(syntax)218 b(Operation)18
b(implemented)p 129 4715 3042 4 v 179 4779 a(left)h(shift)f(logical)272
b(sll)123 b Fr(rs)1217 4787 y Ff(1)1251 4779 y Fq(,)19
b Fr(rs)1347 4787 y Ff(2)1381 4779 y Fq(,)g Fr(rd)281
b Fq(r)o(eg[)p Fr(rd)p Fq(])17 b(=)i(r)o(eg[)p Fr(rs)2260
4787 y Ff(1)2293 4779 y Fq(])g Fk(<<)f Fq(r)o(eg[)p Fr(rs)2665
4787 y Ff(2)2698 4779 y Fq(])960 4870 y(sll)123 b Fr(rs)1217
4878 y Ff(1)1251 4870 y Fq(,)19 b Fr(siconst)1498 4878
y Ff(13)1563 4870 y Fq(,)f Fr(rd)100 b Fq(r)o(eg[)p Fr(rd)p
Fq(])17 b(=)i(r)o(eg[)p Fr(rs)2260 4878 y Ff(1)2293 4870
y Fq(])g Fk(<<)f Fr(siconst)2684 4878 y Ff(13)179 4961
y Fq(right)g(shift)h(logical)218 b(srl)115 b Fr(rs)1217
4969 y Ff(1)1251 4961 y Fq(,)19 b Fr(rs)1347 4969 y Ff(2)1381
4961 y Fq(,)g Fr(rd)281 b Fq(r)o(eg[)p Fr(rd)p Fq(])17
b(=)i(r)o(eg[)p Fr(rs)2260 4969 y Ff(1)2293 4961 y Fq(])g
Fk(>>)f Fq(r)o(eg[)p Fr(rs)2665 4969 y Ff(2)2698 4961
y Fq(])960 5053 y(srl)115 b Fr(rs)1217 5061 y Ff(1)1251
5053 y Fq(,)19 b Fr(siconst)1498 5061 y Ff(13)1563 5053
y Fq(,)f Fr(rd)100 b Fq(r)o(eg[)p Fr(rd)p Fq(])17 b(=)i(r)o(eg[)p
Fr(rs)2260 5061 y Ff(1)2293 5053 y Fq(])g Fk(>>)f Fr(siconst)2684
5061 y Ff(13)179 5144 y Fq(right)g(shift)h(arithmetic)100
b(sra)g Fr(rs)1217 5152 y Ff(1)1251 5144 y Fq(,)19 b
Fr(rs)1347 5152 y Ff(2)1381 5144 y Fq(,)g Fr(rd)281 b
Fq(r)o(eg[)p Fr(rd)p Fq(])17 b(=)i(r)o(eg[)p Fr(rs)2260
5152 y Ff(1)2293 5144 y Fq(])2318 5152 y Ff(31)2402 5144
y Fl(j)g Fq(r)o(eg[)p Fr(rs)2632 5152 y Ff(1)2665 5144
y Fq(])g Fk(>>)f Fq(r)o(eg[)p Fr(rs)3037 5152 y Ff(2)3070
5144 y Fq(])960 5235 y(sra)100 b Fr(rs)1217 5243 y Ff(1)1251
5235 y Fq(,)19 b Fr(siconst)1498 5243 y Ff(13)1563 5235
y Fq(,)f Fr(rd)100 b Fq(r)o(eg[)p Fr(rd)p Fq(])17 b(=)i(r)o(eg[)p
Fr(rs)2260 5243 y Ff(1)2293 5235 y Fq(])2318 5243 y Ff(31)2402
5235 y Fl(j)g Fq(r)o(eg[)p Fr(rs)2632 5243 y Ff(1)2665
5235 y Fq(])g Fk(>>)f Fr(siconst)3056 5243 y Ff(13)p
eop
%%Page: 36 38
36 37 bop 600 100 a Fx(36)1622 b(Lab)20 b(5.)40 b(Bit)21
b(Manipulation)g(and)f(Character)f(I/O)725 333 y(As)e(shown)i(in)g(T)-8
b(able)17 b(5.4,)g(the)h(shift)g(operations)h(have)e(two)h(sour)o(ce)g
(operands.)24 b(The)18 b(\002rst)g(operand)600 432 y(speci\002es)23
b(the)g(value)g(to)g(be)g(shifted.)32 b(This)24 b(value)f(must)g(be)g
(stor)o(ed)f(in)i(an)f(integer)g(r)o(egister)-6 b(.)31
b(The)24 b(sec-)600 532 y(ond)j(sour)o(ce)g(operand)f(speci\002es)h
(the)g(amount)g(of)g(the)g(shift.)44 b(This)28 b(operand)e(may)h(be)g
(stor)o(ed)f(in)h(an)600 632 y(integer)17 b(r)o(egister)g(or)h(it)f
(may)h(be)f(a)g(small)h(constant)g(value.)23 b(The)18
b(pr)o(ocessor)f(only)h(uses)g(the)g(least)f(signif-)600
731 y(icant)22 b(5)f(bits)i(of)f(the)g(second)g(sour)o(ce)f(operand)h
(\(and)f(ignor)o(es)h(the)g(r)o(emaining)g(bits)h(of)f(this)g
(operand\).)600 831 y(Example)e(5.3)f(illustrates)i(the)g(shift)g
(operations.)p 600 957 3300 4 v 600 1037 a Fs(Example)c(5.3)75
b Fr(W)o(rite)14 b(a)j(SP)-10 b(ARC)15 b(pr)o(ogram)i(to)f(count)f(the)
h(number)f(of)h(bits)f(that)i(ar)o(e)e(set)h(\(i.e.,)g(1\))g(in)f(the)h
(memory)h(location)600 1128 y Fk(n)24 b Fr(\(a)g(variable\).)38
b(The)24 b(r)o(esult)f(should)h(be)g(stor)o(ed)g(in)f(\045r2.)39
b(In)23 b(writing)g(this)h(code,)i(you)e(may)h(use)e(any)h(of)g(the)g
(r)o(emaining)600 1219 y(r)o(egisters)19 b(as)g(temporaries.)1183
1336 y Fo(.data)824 1427 y(n:)269 b(.word)44 b(0xaaaaaaaa)1183
1610 y(.text)824 1701 y(start:)89 b(set)223 b(n,)45 b(\045r1)1183
1792 y(ld)268 b([\045r1],)44 b(\045r3)1183 1884 y(clr)223
b(\045r2)583 b(!)44 b(clear)g(the)h(result)824 2066 y(loop:)134
b(andcc)f(\045r3,)45 b(1,)f(\045r0)224 b(!)44 b(check)g(the)h(lowest)f
(bit)1183 2158 y(be)268 b(cont)538 b(!)134 b(skip)44
b(if)h(zero)1183 2249 y(nop)941 b(!)44 b(\(delay)g(slot\))1183
2340 y(inc)223 b(\045r2)583 b(!)44 b(increment)g(the)g(1's)g(count)824
2432 y(cont:)134 b(srl)223 b(\045r3,)45 b(1,)f(\045r3)224
b(!)44 b(shift)g(data)h(right,)e(creating)h(a)h(new)f(low)600
2523 y(bit)1183 2614 y(cmp)223 b(\045r3,)45 b(0)448 b(!)44
b(if)h(\045r3)f(==)h(0,)f(we're)g(done)1183 2706 y(bne)223
b(loop)1183 2797 y(nop)824 2980 y(end:)179 b(ta)268 b(0)p
600 3009 V 600 3301 a Fp(5.3.5)99 b(Character)24 b(data)h(and)f
(character)g(I/O)h(in)g(ISEM)600 3459 y Fx(When)i(you)f(use)h(isem-as,)
g(character)e(values)h(ar)o(e)e(delimited)i(using)i(single)f(quotes.)42
b(For)27 b(example,)600 3559 y('B')h(denotes)h(the)g(value)f
(associated)g(with)h(the)g(letter)f(B.)g(When)h(it)g(encounters)g(a)f
(character)f(value,)600 3659 y(isem-as)d(converts)f(the)h(character)f
(value)g(into)h(its)g(ASCII)f(r)o(epr)o(esentation.)33
b(As)24 b(such,)g(writing)h('B')f(in)600 3758 y(an)i(assembly)g
(language)f(pr)o(ogram)g(is)i(equivalent)f(to)g(writing)h(0x42)d(\(or)i
(66\).)39 b(Y)-8 b(ou)27 b(should)g(use)f(the)600 3858
y(notation)c(that)f(best)f(expr)o(esses)g(the)h(intent)g(of)g(your)g
(code.)725 3957 y(ISEM)e(pr)o(ovides)h(the)g(user)h(with)g(a)f
(primitive)h(form)f(of)h(character)e(input/output)j(using)f(the)g(trap)
600 4057 y(mechanism.)51 b(W)-8 b(e)30 b(will)g(discuss)f(the)g(trap)g
(mechanism)h(in)f(detail)g(in)h(Lab)e(16.)50 b(For)29
b(now)-8 b(,)32 b(we)e(note)600 4157 y(that)18 b(the)h(following)h
(instr)o(uctions)g(can)e(be)g(used)g(to)h(get)g(and)f(put)g(characters)
f(fr)o(om)h(the)h(standar)o(d)d(I/O)600 4256 y(devices.)824
4348 y Fo(ta)269 b(1)313 b(!)45 b(\045r8)f(-->)h(putchar)824
4439 y(ta)269 b(2)313 b(!)45 b(getchar)f(-->)g(\045r8)725
4539 y Fx(The)19 b(\002rst)i(of)f(these)g(instr)o(uctions)h(prints)g
(the)f(character)e(in)j(the)f(least)f(signi\002cant)i(byte)f(of)g(r)o
(egister)600 4638 y(\045r8)g(\(=)h(\045o0\))f(to)h(standar)o(d)e
(output)i(and)g(the)g(second)g(r)o(eads)e(a)h(character)g(fr)o(om)g
(standar)o(d)f(input)i(and)600 4738 y(places)h(the)g(r)o(esult)g(in)g
(the)h(least)f(signi\002cant)h(byte)f(of)g(\045r8,)g(clearing)g(the)g
(most)h(signi\002cant)g(24)e(bits)i(of)600 4837 y(this)e(r)o(egister)-6
b(.)25 b(Example)20 b(5.4)g(illustrates)g(the)h(use)g(of)g(these)g(I/O)
g(instr)o(uctions.)p 600 4964 V 600 5044 a Fs(Example)26
b(5.4)75 b Fr(W)o(rite)23 b(a)i(SP)-10 b(ARC/ISEM)23
b(pr)o(ogram)j(that)f(r)o(eads)g(a)g(one)g(digit)g(number)-6
b(,)26 b(adds)f(\002ve)h(to)f(the)g(number)f(and)600
5135 y(prints)18 b(the)h(r)o(esult.)1183 5251 y Fo(.text)824
5342 y(start:)89 b(ta)268 b(2)673 b(!)44 b(digit)g(-->)h(\045r8)p
eop
%%Page: 37 39
37 38 bop 0 100 a Fx(Lab)20 b(5.)41 b(Bit)20 b(Manipulation)h(and)f
(Character)g(I/O)1623 b(37)583 333 y Fo(sub)223 b(\045r8,)45
b('0',)f(\045r8)134 b(!)44 b(convert)g(from)g(digit)g(to)h(number)583
424 y(add)223 b(\045r8,)45 b(5,)f(\045r8)224 b(!)44 b(add)h(5)583
515 y(cmp)223 b(\045r8,)45 b(9)448 b(!)44 b(is)h(the)f(result)g
(greater)g(than)g(9?)583 607 y(ble)223 b(one_dg)583 698
y(nop)583 881 y(mov)g(\045r8,)45 b(\045r7)358 b(!)44
b(copy)h(\045r8)f(into)g(\045r7)583 972 y(set)223 b('1',)45
b(\045r8)358 b(!)44 b(the)h(most)f(significant)f(digit)h(must)g(be)h
('1')583 1063 y(ta)268 b(1)673 b(!)44 b('1')h(-->)f(putchar)583
1155 y(mov)223 b(\045r7,)45 b(\045r8)358 b(!)44 b(restore)g(\045r8)583
1246 y(sub)223 b(\045r8,)45 b(10,)f(\045r8)224 1429 y(one_dg:)1120
b(!)44 b(\045r8)h(holds)f(a)g(number)g(less)g(than)h(10)583
1520 y(add)223 b(\045r8,)45 b('0',)f(\045r8)134 b(!)44
b(convert)g(number)g(to)g(digit)583 1611 y(ta)268 b(1)673
b(!)44 b(print)g(the)h(least)f(significant)f(digit)583
1794 y(ta)268 b(0)p 0 1823 3300 4 v 0 2159 a Fu(5.4)119
b(Summary)0 2348 y Fx(In)21 b(this)g(lab)f(we)g(have)g(intr)o(oduced)g
(the)h(bitwise)g(and)f(shift)g(operations)h(pr)o(ovided)e(by)i(the)g
(SP)-8 b(ARC.)20 b(In)0 2447 y(addition,)28 b(we)f(have)g(intr)o
(oduced)f(the)h(notation)h(used)f(for)g(character)e(data)h(and)g
(primitive)i(mecha-)0 2547 y(nisms)22 b(for)e(character)g(input)h(and)f
(output.)26 b(Example)20 b(5.5)g(illustrates)h(all)f(of)h(these)g
(operations.)p 0 2673 V 0 2753 a Fs(Example)i(5.5)75
b Fr(W)o(rite)21 b(a)i(SP)-10 b(ARC/ISEM)20 b(pr)o(ogram)k(to)e(print)g
(the)h(binary)f(r)o(epr)o(esentation)f(of)h(the)h(unsigned)f(integer)g
(in)0 2844 y(memory)e(location)e Fk(n)p Fr(.)23 b(In)18
b(writing)g(the)h(code,)h(you)f(may)g(use)f(any)h(of)g(the)g(r)o
(egisters)f(as)h(temporaries.)583 2961 y Fo(.data)224
3052 y(n:)269 b(.word)133 b(0xaaaaaaaa)583 3235 y(.text)224
3326 y(start:)89 b(set)223 b(n,)45 b(\045r1)583 3417
y(ld)268 b([\045r1],)44 b(\045r2)583 3508 y(set)223 b(1)45
b Fk(<<)f Fo(31,)h(\045r3)89 b(!)45 b(initialize)e(the)h(mask)g(to)h
(start)1659 3600 y(!)134 b(with)44 b(the)h(most)f(significant)f(bit)583
3691 y(set)223 b(32,)45 b(\045r4)403 b(!)44 b(number)g(of)h(bits)f(to)g
(print)224 3874 y(loop:)134 b(andcc)f(\045r2,)45 b(\045r3,)f(\045g0)134
b(!)44 b(check)g(for)h(one)583 3965 y(be)268 b(print)493
b(!)134 b(branch)44 b(on)g(zero)583 4056 y(set)223 b('0',)45
b(\045r8)358 b(!)44 b(\(delay)g(slot\))583 4239 y(set)223
b('1',)45 b(\045r8)358 b(!)44 b(must)h(have)f(been)g(a)h(one)224
4422 y(print:)89 b(ta)268 b(1)673 b(!)44 b(print)g(\045r8)583
4604 y(deccc)133 b(\045r4)583 b(!)44 b(decrement)g(count)583
4696 y(bg)268 b(loop)538 b(!)44 b(continue)g(until)g(count)g(==)g(0)583
4787 y(srl)223 b(\045r3,)45 b(1,)f(\045r3)224 b(!)44
b(shift)g(mask)h(right)f(\(bd\))224 4970 y(end:)179 b(ta)268
b(0)p 0 4999 V eop
%%Page: 38 40
38 39 bop 600 100 a Fx(38)1622 b(Lab)20 b(5.)40 b(Bit)21
b(Manipulation)g(and)f(Character)f(I/O)600 333 y Fu(5.5)119
b(Exercises)704 523 y Fx(1.)41 b(W)-6 b(rite)22 b(a)g(SP)-8
b(ARC)22 b(pr)o(ogram)g(that)g(compar)o(es)g(the)g(memory)h(contents)h
(of)e(the)h(wor)o(d)f(pointed)h(to)808 622 y(by)i(r)o(egister)g
Fm(\045)p Fn(r)r Fm(2)h Fx(to)g(the)g(contents)g(of)g(r)o(egister)f
Fm(\045)p Fn(r)r Fm(3)h Fx(on)g(a)f(bit-by-bit)h(basis.)40
b(For)26 b(all)f(bits)h Fn(i)p Fx(,)g(if)808 722 y(the)20
b(value)g(of)g(bit)g Fn(i)g Fx(of)g Fm([\045)p Fn(r)r
Fm(2])h Fx(is)f(smaller)g(than)h(the)f(value)g(of)g(bit)g
Fn(i)g Fx(of)g Fm(\045)p Fn(r)r Fm(3)p Fx(,)h(set)f(bit)g
Fn(i)g Fx(of)g Fm(\045)p Fn(r)r Fm(3)h Fx(to)g(1;)808
821 y(otherwise,)g(set)f(bit)h Fn(i)g Fx(of)f Fm(\045)p
Fn(r)r Fm(3)i Fx(to)f(0.)704 921 y(2.)41 b(W)-6 b(rite)34
b(a)g(SP)-8 b(ARC)34 b(pr)o(ogram)g(that)g(distinguishes)i(ASCII-coded)
d(hexadecimal)g(digits)i(fr)o(om)808 1021 y(other)25
b(bytes)g(and)f(which)i(converts)f(valid)f(digit)h(codes)g(to)g(the)g
(corr)o(esponding)g(hexadecimal)808 1120 y(value.)40
b Fy(Only)26 b(valid)f(digit)g(codes)g(are)h(to)f(be)h(converted.)40
b(Leave)24 b(invalid)h(characters)f(unal-)808 1220 y(tered.)h
Fx(Suppose)c(that)h(r)o(egister)e Fm(\045)p Fn(r)r Fm(2)i
Fx(holds)g(the)f(character)f(on)i(pr)o(ogram)e(entry)-9
b(,)21 b(and)g(that)h Fm(\045)p Fn(r)r Fm(2)808 1320
y Fx(holds)f(the)h(r)o(esult)e(on)i(pr)o(ogram)f(exit.)26
b(Use)21 b(r)o(egister)f Fm(\045)p Fn(r)r Fm(3)i Fx(to)f(r)o(eport)f
(on)i(validity)-9 b(.)26 b(If)21 b(valid,)g Fm(\045)p
Fn(r)r Fm(3)808 1419 y Fx(must)g(equal)g(0;)f(if)g(invalid,)h
Fm(\045)p Fn(r)r Fm(3)g Fx(must)g(equal)g(1.)1680 1585
y(V)-8 b(alid)21 b(Digits,)g(Their)g(Codes)f(and)h(V)-8
b(alues)1880 1712 y(Digit)p 2127 1741 4 100 v 198 w(Digit)p
2582 1741 V 214 w(Hex)p 2127 1841 V 2259 1811 a(Code)p
2582 1841 V 180 w(V)g(alue)p 1816 1844 1076 4 v 1929
1914 a('0')p 2127 1944 4 100 v 256 w(0x30)p 2582 1944
V 233 w(0x0)1962 2004 y(.)1962 2037 y(.)1962 2070 y(.)p
2127 2100 4 156 v 2346 2004 a(.)2346 2037 y(.)2346 2070
y(.)p 2582 2100 V 2727 2004 a(.)2727 2037 y(.)2727 2070
y(.)1929 2170 y('9')p 2127 2200 4 100 v 256 w(0x39)p
2582 2200 V 233 w(0x9)1866 2269 y('a','A)i(')p 2127 2299
V 99 w(0x61,0x41)p 2582 2299 V 137 w(0xa)1962 2359 y(.)1962
2392 y(.)1962 2425 y(.)p 2127 2455 4 156 v 2346 2359
a(.)2346 2392 y(.)2346 2425 y(.)p 2582 2455 V 2727 2359
a(.)2727 2392 y(.)2727 2425 y(.)1877 2525 y('f)5 b(','F')p
2127 2555 4 100 v 110 w(0x66,0x46)p 2582 2555 V 144 w(0xf)p
1816 2558 1076 4 v 704 2693 a(3.)41 b(W)-6 b(rite)18
b(a)h(SP)-8 b(ARC)19 b(pr)o(ogram)g(to)h(print)f(the)h(hexadecimal)e(r)
o(epr)o(esentation)g(of)h(an)g(unsigned)h(inte-)808 2793
y(ger)-6 b(.)24 b(The)18 b(unsigned)h(integer)f(should)g(be)g(named)g
Fn(n)g Fx(and)f(declar)o(ed)f(in)j(the)f(data)f(segment.)25
b(Y)-8 b(our)808 2892 y(pr)o(ogram)20 b(should)h(\002nish)h(by)f
(printing)h(a)e(newline.)p eop
%%Page: 39 41
39 40 bop 0 474 3300 12 v 0 723 a Fv(Laboratory)53 b(6)0
976 y(Assembler)e(Directives,)g(Assembler)0 1167 y(Expressions,)h(and)g
(Addressing)0 1379 y(Modes)p 0 1495 1200 12 v 0 1852
a Fu(6.1)119 b(Goal)0 2041 y Fx(T)-8 b(o)32 b(cover)g(several)e
(assembler)i(dir)o(ectives)e(and)h(assembler)h(expr)o(essions)f(pr)o
(ovided)g(by)g(the)h(GNU)0 2141 y(assembler)20 b(\(gas\))g(and)h(the)g
(SP)-8 b(ARC)20 b(addr)o(essing)g(modes.)0 2425 y Fu(6.2)119
b(Objectives)0 2614 y Fx(After)20 b(completing)h(this)h(lab,)e(you)h
(will)h(be)e(able)g(to)h(write)g(assembly)g(language)g(pr)o(ograms)f
(that)h(use:)125 2788 y Ft(\017)41 b Fx(The)20 b(assembler)h(dir)o
(ectives)e(pr)o(ovided)h(by)h(the)g(GNU)f(assembler)-6
b(,)125 2886 y Ft(\017)41 b Fx(Assemble)20 b(expr)o(essions,)125
2984 y Ft(\017)41 b Fx(The)20 b(SP)-8 b(ARC)21 b(addr)o(essing)f(modes)
h(in)g(load)g(and)f(stor)o(e)g(instr)o(uctions,)j(and)125
3082 y Ft(\017)41 b Fx(And)20 b(use)h(the)g(SETHI)f(instr)o(uction.)0
3366 y Fu(6.3)119 b(Discussion)0 3556 y Fx(In)31 b(this)g(lab)g(we)f
(intr)o(oduce)g(thr)o(ee)g(new)h(assembler)g(dir)o(ectives:)44
b(a)30 b(dir)o(ective)f(to)i(allocate)f(space,)i(a)0
3655 y(dir)o(ective)c(to)i(de\002ne)f(symbolic)i(constants,)h(and)d(a)g
(dir)o(ective)g(to)h(include)f(header)g(\002les.)52 b(After)28
b(we)0 3755 y(describing)h(these)h(dir)o(ectives,)g(we)f(discuss)h
(assembler)f(expr)o(essions)g(and)g(intr)o(oduce)f(the)i(distinc-)0
3854 y(tion)23 b(between)f Fw(r)o(elocatable)g Fx(values)g(and)g
Fw(absolute)h Fx(values.)29 b(W)-8 b(e)22 b(conclude)h(this)g(lab)e(by)
i(discussing)g(the)0 3954 y(memory)e(addr)o(essing)f(modes)h(pr)o
(ovided)f(by)h(the)g(SP)-8 b(ARC)20 b(and)h(the)g(SETHI)f(instr)o
(uction.)0 4195 y Fp(6.3.1)99 b(Assembler)24 b(directives)0
4353 y Fx(In)i(Lab)f(2)g(we)h(intr)o(oduced)f(thr)o(ee)g(assembler)g
(dir)o(ectives:)34 b Fw(.data)p Fx(,)25 b Fw(.text)p
Fx(,)h(and)f Fw(.word)p Fx(.)40 b(In)26 b(this)g(Lab,)g(we)0
4453 y(intr)o(oduce)17 b(thr)o(ee)f(mor)o(e)h(dir)o(ectives:)22
b Fw(.skip)p Fx(,)17 b Fw(.set)p Fx(,)h(and)e Fw(.include)p
Fx(.)25 b(The)17 b Fw(.skip)f Fx(dir)o(ective)g(is)h(used)g(to)h
(allocate)0 4553 y(space.)24 b(The)c Fw(.set)f Fx(dir)o(ective)f(is)i
(used)f(to)h(de\002ne)f(a)g(symbolic)h(constant.)26 b(The)19
b Fw(.include)g Fx(dir)o(ective)g(is)g(used)0 4652 y(to)i(include)g
(sour)o(ce)f(\(header\))f(\002les.)125 4752 y(Y)-8 b(ou)23
b(can)f(use)h(the)f Fw(.skip)g Fx(dir)o(ective)g(to)h(allocate)e(space)
h(in)h(the)g(curr)o(ent)e(assembler)h(segment)i(\(data)0
4851 y(or)16 b(text\).)24 b(This)16 b(dir)o(ective)f(takes)h(one)h(or)f
(two)h(ar)o(guments.)24 b(The)16 b(\002rst)g(ar)o(gument)g(speci\002es)
g(the)h(number)0 4951 y(of)i(bytes)g(to)g(skip)h(in)f(the)g(curr)o(ent)
g(assembler)f(segment.)26 b(The)19 b(second)g(ar)o(gument)f
(speci\002es)h(the)h(value)0 5051 y(to)g(be)f(deposited)g(in)g(the)h
(skipped)f(bytes.)25 b(If)19 b(the)h(second)f(ar)o(gument)g(is)h
(omitted,)f(it)h(is)g(assumed)f(to)g(be)0 5150 y(zer)o(o.)125
5250 y(Y)-8 b(ou)24 b(can)f(de\002ne)h(symbolic)g(constants)h(using)f
(the)g Fw(.set)f Fx(dir)o(ective.)33 b(This)24 b(dir)o(ective)e(takes)h
(two)i(ar)o(-)0 5350 y(guments.)g(The)17 b(\002rst)h(ar)o(gument)e(is)i
(the)f(name)g(of)g(the)g(symbol)h(to)g(be)e(de\002ned.)24
b(The)17 b(second)h(ar)o(gument)1608 5560 y(39)p eop
%%Page: 40 42
40 41 bop 600 100 a Fx(40)382 b(Lab)20 b(6.)41 b(Assembler)20
b(Dir)o(ectives,)g(Assembler)h(Expr)o(essions,)f(and)h(Addr)o(essing)e
(Modes)600 333 y(is)25 b(an)g(expr)o(ession)g(that)g(de\002nes)h(the)f
(value)f(of)h(the)h(symbol.)39 b(This)26 b(dir)o(ective)e(can)h(be)g
(written)g(using)600 432 y(standar)o(d)d(dir)o(ective)h(syntax)i
(\(e.g.,)e(.set)48 b Fw(symbol)p Fx(,)24 b Fw(expr)o(ession)p
Fx(\),)g(or)h(it)f(can)g(be)g(written)g(using)h(the)f(in\002x)600
532 y(`=')d(operator)f(\(e.g.,)g Fw(symbol)h Fx(=)g Fw(expr)o(ession)p
Fx(\).)725 632 y(In)16 b(many)h(cases,)g(you)g(will)g(want)f(to)h
(collect)g(a)f(gr)o(oup)g(of)g(de\002nitions)i(for)e(symbolic)i
(constants)f(into)600 731 y(a)k(header)g(\002le)h(that)g(can)f(be)h
(included)f(in)i(several)e(dif)o(fer)o(ent)e(pr)o(ograms)j(or)g
(modules.)29 b(\(By)21 b(including)600 831 y(the)h(same)g(\002le)g(in)g
(each)f(of)h(the)g(pr)o(ograms)f(or)h(modules,)h(you)f(can)g(be)f(sur)o
(e)g(that)h(all)g(of)g(the)g(pr)o(ograms)600 930 y(and)j(modules)g(use)
g(the)g(same)g(values)g(for)g(the)g(symbolic)h(constants.\))39
b(The)25 b Fw(.include)f Fx(dir)o(ective)g(sup-)600 1030
y(ports)d(this)h(style)f(of)g(pr)o(ogramming.)27 b(This)21
b(dir)o(ective)f(takes)g(a)h(single)h(ar)o(gument,)e(a)g(string)i(that)
f(gives)600 1130 y(the)c(name)g(of)f(the)h(\002le)g(to)g(include.)25
b(The)16 b(code)h(fr)o(om)f(the)h(included)g(\002le)g(logically)g(r)o
(eplaces)e(the)i Fw(.include)600 1229 y Fx(dir)o(ective.)28
b(When)22 b(the)g(assembler)g(is)g(\002nished)h(pr)o(ocessing)f(the)g
(included)g(\002le,)g(it)h(r)o(esumes)e(after)g(the)600
1329 y Fw(.include)g Fx(dir)o(ective)e(in)i(the)g(original)h(\002le.)
725 1429 y(T)-8 b(able)20 b(6.1)f(summarizes)i(the)g(dir)o(ectives)f
(that)g(we)h(have)f(intr)o(oduced)g(in)i(this)f(section.)1696
1667 y(T)-8 b(able)21 b(6.1)e(Assembler)i(dir)o(ectives)1434
1791 y Fq(Operation)365 b(Assembler)18 b(syntax)p 1384
1821 1732 4 v 1434 1885 a(Allocate)h(space)227 b(.skip)205
b Fr(n)1434 1977 y Fq(Symbolic)18 b(constant)101 b(.set)254
b Fr(symbol)p Fq(,)19 b Fr(expr)o(ession)2136 2068 y(symbol)g
Fq(=)g Fr(expr)o(ession)1434 2159 y Fq(Include)g(\002le)330
b(.include)99 b(\224)p Fr(\002lename)p Fq(\224)600 2600
y Fp(6.3.2)g(Assembler)24 b(Expressions)600 2759 y Fx(The)e
Fw(.set)f Fx(and)g Fw(.skip)g Fx(dir)o(ectives)g(use)g(assembler)g
(expr)o(essions.)28 b(In)22 b(addition,)f(you)i(can)e(use)g(assembler)
600 2858 y(expr)o(essions)k(whenever)g(you)h(use)f(a)f(constant)i
(value)f(in)g(an)g(assembly)h(language)e(instr)o(uction.)41
b(T)-8 b(a-)600 2958 y(ble)20 b(6.2)f(summarizes)i(the)f(operators)g
(that)g(you)h(can)f(use)h(constr)o(ucting)h(expr)o(essions.)j(The)20
b(operands)600 3057 y(can)i(be)g(expr)o(essions)h(\(using)g(par)o
(entheses)e(to)i(override)f(pr)o(ecedence\),)e(symbols)k(\(de\002ned)d
(as)h(labels)600 3157 y(or)f(using)h(the)e Fw(.set)h
Fx(dir)o(ective\),)e(or)i(numbers.)1661 3417 y(T)-8 b(able)20
b(6.2)g(Assembler)g(expr)o(essions)1469 3562 y Fq(Operator)98
b(Operation)420 b(Pr)o(ecedence)p 1419 3593 1663 4 v
1469 3657 a Fl(\000)340 b Fq(Unary)19 b(minus)320 b(highest)1469
3748 y Fd(+)340 b Fq(Unary)19 b(plus)p 1419 3779 V 1469
3843 a Fl(\003)362 b Fq(Multiplication)284 b(high)19
b(middle)1469 3934 y Fk(=)362 b Fq(Division)1469 4026
y Fk(<<)280 b Fq(Left)19 b(shift)1469 4117 y Fk(>>)280
b Fq(Right)19 b(shift)p 1419 4148 V 1469 4212 a Fl(j)379
b Fq(Bitwise)18 b(inclusive)h(or)108 b(low)18 b(middle)1469
4303 y(&)342 b(Bitwise)18 b(and)1469 4394 y Fo(\210)355
b Fq(Bitwise)18 b(exclusive)g(or)1469 4486 y(!)379 b(Bitwise)18
b(and)i(not)p 1419 4516 V 1469 4580 a Fd(+)340 b Fq(Addition)455
b(lowest)1469 4672 y Fl(\000)340 b Fq(Binary)18 b(subtraction)725
4951 y Fx(When)k(considering)h(assembler)f(expr)o(essions,)h(it)f(is)h
(useful)f(to)h(distinguish)h(between)e Fw(r)o(elocatable)600
5051 y Fx(values)k(and)h Fw(absolute)g Fx(values.)43
b(Labels)27 b(ar)o(e)e(the)i(simplest)g(examples)g(of)f(r)o(elocatable)
g(values.)43 b(They)600 5150 y(ar)o(e)27 b(r)o(elocatable)h(because)f
(their)i(\002nal)g(values)g(depend)f(on)h(wher)o(e)g(your)g(pr)o(ogram)
f(is)h(loaded)f(into)600 5250 y(memory)-9 b(.)38 b(Numbers)24
b(ar)o(e)g(the)h(simplest)g(examples)f(of)h(absolute)g(values.)36
b(Absolute)25 b(values)g(do)f(not)600 5350 y(depend)c(on)h(wher)o(e)g
(your)g(pr)o(ogram)f(is)h(loaded)f(into)h(memory)-9 b(.)p
eop
%%Page: 41 43
41 42 bop 0 100 a Fx(Lab)20 b(6.)41 b(Assembler)20 b(Dir)o(ectives,)g
(Assembler)h(Expr)o(essions,)f(and)g(Addr)o(essing)g(Modes)383
b(41)125 333 y(Y)-8 b(ou)30 b(can)g(use)f(absolute)h(values)f(with)i
(any)f(of)f(the)h(operators.)52 b(If)29 b(all)h(of)g(the)f(operands)h
(for)f(an)0 432 y(operator)20 b(ar)o(e)g(absolute)g(values,)g(the)h
(expr)o(ession)g(using)h(the)e(operator)h(is)g(an)f(absolute)h(value.)
125 532 y(Y)-8 b(ou)25 b(can)f(only)h(use)f(r)o(elocatable)e(values)i
(in)g(expr)o(essions)g(using)h(the)g(binary)e(addition)i(and)e(sub-)0
632 y(traction)17 b(operators.)24 b(When)17 b(you)h(use)f(binary)g
(addition,)g(at)g(most)h(one)f(operand)g(can)f(be)h(a)g(r)o(elocatable)
0 731 y(value,)h(the)f(other)h(operand)g(must)g(be)f(an)h(absolute)g
(value.)24 b(If)17 b(one)h(operand)f(is)h(r)o(elocatable,)f(the)h
(value)0 831 y(of)j(the)g(expr)o(ession)f(is)h(r)o(elocatable.)125
930 y(When)i(you)i(use)e(binary)g(subtraction,)i(you)f(cannot)g
(subtract)f(a)g(r)o(elocatable)f(value)g(fr)o(om)i(an)f(ab-)0
1030 y(solute)e(value.)j(When)d(subtract)e(an)h(absolute)g(value)g(fr)o
(om)g(a)f(r)o(elocatable)g(value,)g(the)h(r)o(esult)g(is)g(a)g(r)o
(elo-)0 1130 y(catable)j(value.)33 b(When)24 b(you)h(subtract)e(two)h
(r)o(elocatable)e(values,)i(the)g(two)g(values)g(must)g(be)f(de\002ned)
0 1229 y(in)e(the)g(same)g(assembler)f(segment)h(\(e.g.,)f(text)g(or)h
(data\),)e(and)i(the)g(r)o(esult)f(is)h(an)g(absolute)f(value.)0
1472 y Fp(6.3.3)99 b(Addressing)25 b(modes)0 1630 y Fx(The)g(SP)-8
b(ARC)25 b(supports)h(two)g(addr)o(essing)e(modes:)34
b(r)o(egister)25 b(indir)o(ect)f(with)i(index)f(and)g(r)o(egister)f
(in-)0 1730 y(dir)o(ect)h(with)h(displacement.)40 b(In)26
b(the)g(\002rst)g(mode,)h(the)e(ef)o(fective)f(addr)o(ess)g(is)i
(calculated)f(by)g(adding)0 1829 y(the)i(contents)g(two)g(integer)f(r)o
(egisters.)42 b(This)27 b(addr)o(essing)e(mode)i(is)f(commonly)j(used)d
(to)g(access)g(an)0 1929 y(array)c(element:)29 b(one)23
b(of)g(the)g(r)o(egisters)f(holds)i(the)f(base)f(addr)o(ess)f(of)i(the)
g(array)-9 b(,)21 b(the)i(other)g(holds)h(the)0 2029
y(\(scaled\))19 b(index)i(of)g(the)f(element.)125 2128
y(In)e(the)g(second)g(mode,)h(the)f(ef)o(fective)e(addr)o(ess)g(is)j
(calculated)e(by)h(adding)f(a)h(13-bit)f(signed)h(integer)0
2228 y(constant)26 b(to)g(a)f(r)o(egister)-6 b(.)39 b(This)26
b(addr)o(essing)f(mode)h(can)f(be)g(used)h(with)g(pointers)g(to)g(str)o
(uctur)o(es:)35 b(the)0 2327 y(r)o(egister)26 b(holds)i(the)f(addr)o
(ess)f(of)h(the)g(str)o(uctur)o(e)g(and)f(the)i(integer)f(constant)g
(speci\002es)h(the)f(of)o(fset)f(of)0 2427 y(the)e(member)f
(\(\002eld\))f(being)i(accessed.)33 b(Register)23 b(indir)o(ect)g(with)
h(displacement)g(addr)o(essing)e(is)i(also)0 2527 y(commonly)34
b(used)e(when)h(accessing)f(items)h(on)g(the)f(r)o(untime)h(stack)f
(\(e.g.,)i(parameters)d(and)h(local)0 2626 y(variables\).)i(W)-8
b(e)24 b(consider)h(access)e(to)i(the)f(r)o(untime)h(stack)f(in)g(Lab)f
(12)h(when)g(we)g(consider)h(standar)o(d)0 2726 y(pr)o(ocedur)o(e)19
b(calling)i(conventions)h(for)f(the)g(SP)-8 b(ARC.)125
2826 y(T)g(able)26 b(6.3)f(summarizes)i(the)g(addr)o(essing)e(modes)i
(supported)g(by)f(SP)-8 b(ARC)27 b(assemblers.)43 b(In)27
b(ad-)0 2925 y(dition)j(to)f(the)g(two)g(basic)g(addr)o(essing)f
(modes,)j(SP)-8 b(ARC)29 b(assemblers)g(r)o(ecognize)f(r)o(egister)g
(indir)o(ect)0 3025 y(addr)o(essing)i(and)g(a)g(limited)h(form)g(of)f
(dir)o(ect)g(memory)h(addr)o(essing.)54 b(Dir)o(ect)30
b(memory)i(addr)o(esses)0 3124 y(ar)o(e)22 b(limited)j(to)f(values)f
(that)h(can)f(be)h(expr)o(essed)e(in)i(13-bits)f(when)i(sign-extended)e
(\(i.e.,)g(very)h(small)0 3224 y(addr)o(esses)19 b(and)h(very)h(lar)o
(ge)e(addr)o(esses\).)874 3491 y(T)-8 b(able)21 b(6.3)e(Assembler)i
(addr)o(ess)e(speci\002cations)84 3636 y Fq(Addr)o(essing)e(mode)660
b(Assembler)18 b(syntax)99 b(Implementation)i(Ef)o(fective)18
b(addr)o(ess)p 35 3667 3231 4 v 84 3731 a(r)o(egister)f(indir)o(ect)g
(with)j(index)355 b([)p Fr(r)1390 3739 y Ff(1)1425 3731
y Fq(+)p Fr(r)1499 3739 y Ff(2)1534 3731 y Fq(])464 b(basic)19
b(mode)258 b(r)o(eg[)p Fr(r)2815 3739 y Ff(1)2848 3731
y Fq(]+r)o(eg[)p Fr(r)3079 3739 y Ff(2)3112 3731 y Fq(])84
3822 y(r)o(egister)17 b(indir)o(ect)g(with)j(displacement)99
b([)p Fr(r)1390 3830 y Ff(1)1425 3822 y Fq(+)p Fr(siconst)1679
3830 y Ff(13)1744 3822 y Fq(])254 b(basic)19 b(mode)258
b(r)o(eg[)p Fr(r)2815 3830 y Ff(1)2848 3822 y Fq(]+)p
Fr(siconst)3127 3830 y Ff(13)1336 3913 y Fq([)p Fr(siconst)1570
3921 y Ff(13)1635 3913 y Fq(+)p Fr(r)1709 3921 y Ff(1)1744
3913 y Fq(])885 b Fr(siconst)2863 3921 y Ff(13)2928 3913
y Fq(+r)o(eg[)p Fr(r)3134 3921 y Ff(1)3167 3913 y Fq(])1336
4005 y([)p Fr(r)1390 4013 y Ff(1)1425 4005 y Fl(\000)p
Fr(siconst)1694 4013 y Ff(13)1759 4005 y Fq(])870 b(r)o(eg[)p
Fr(r)2815 4013 y Ff(1)2848 4005 y Fq(])p Fl(\000)p Fr(siconst)3142
4013 y Ff(13)84 4096 y Fq(r)o(egister)17 b(indir)o(ect)729
b([)p Fr(r)p Fq(])608 b([)p Fr(r)p Fq(+\045r0])377 b(r)o(eg[)p
Fr(r)p Fq(])84 4187 y(dir)o(ect)18 b(memory)763 b([)p
Fr(siconst)1570 4195 y Ff(13)1635 4187 y Fq(])363 b([\045r0+)p
Fr(siconst)2432 4195 y Ff(13)2497 4187 y Fq(])132 b Fr(siconst)2863
4195 y Ff(13)125 4474 y Fx(Addr)o(essing)30 b(modes)i(can)f(only)h(be)g
(used)f(with)h(the)g(load)f(and)g(stor)o(e)g(instr)o(uctions.)59
b(T)-8 b(able)31 b(6.4)0 4573 y(summarizes)21 b(the)f(load)h(wor)o(d)f
(and)h(stor)o(e)f(wor)o(d)g(operations.)0 4816 y Fp(6.3.4)99
b(The)25 b(SETHI)g(instruction)0 4974 y Fx(W)-8 b(e)21
b(conclude)f(this)i(discussion)g(by)e(intr)o(oducing)h(another)g(SP)-8
b(ARC)21 b(instr)o(uction,)h(sethi,)f(and)f(the)h(\045hi)0
5074 y(and)j(\045lo)h(operators)g(pr)o(ovided)f(by)g(SP)-8
b(ARC)25 b(assemblers.)38 b(The)25 b(sethi)g(instr)o(uction)h(takes)f
(two)g(ar)o(gu-)0 5173 y(ments:)f(a)17 b(22-bit)f(constant)j(and)d(a)h
(destination)h(r)o(egister)-6 b(.)24 b(This)18 b(instr)o(uction)h(sets)
e(the)h(most)g(signi\002cant)0 5273 y(22)i(bits)h(of)g(the)g
(destination)g(r)o(egister)f(and)g(clears)g(the)h(least)g
(signi\002cant)g(10)f(bits)h(of)g(this)g(r)o(egister)-6
b(.)p eop
%%Page: 42 44
42 43 bop 600 100 a Fx(42)382 b(Lab)20 b(6.)41 b(Assembler)20
b(Dir)o(ectives,)g(Assembler)h(Expr)o(essions,)f(and)h(Addr)o(essing)e
(Modes)1493 393 y(T)-8 b(able)20 b(6.4)g(The)g(SP)-8
b(ARC)21 b(ld)g(and)f(st)h(operations)1091 539 y Fq(Operation)119
b(Assembler)17 b(syntax)100 b(Operation)18 b(implemented)p
1041 569 2419 4 v 1091 633 a(load)g(wor)o(d)114 b(ld)99
b Fr(addr)o(ess)p Fq(,)19 b Fr(rd)194 b Fq(r)o(eg[)p
Fr(rd)p Fq(])17 b(=)i(memory[ef)o(f)p 2933 633 23 4 v
25 w(addr\()p Fr(addr)o(ess)p Fq(\)])1091 725 y(stor)o(e)e(wor)o(d)99
b(st)111 b Fr(rs)p Fq(,)18 b Fr(addr)o(ess)203 b Fq(memory[ef)o(f)p
2629 725 V 24 w(addr\()p Fr(addr)o(ess)p Fq(\)])19 b(=)g(r)o(eg[)p
Fr(rs)p Fq(])1521 840 y Fh(Notes:)1513 919 y Fg(addr)o(ess)99
b Fh(an)17 b(addr)o(ess)f(speci\002cation)i(\(see)f(T)-6
b(able)16 b(6.3\))1387 998 y(ef)o(f)p 1466 998 20 4 v
24 w(addr\()p Fa(x)p Fh(\))99 b(the)16 b(r)o(esult)h(of)g(the)e(ef)o
(fective)h(addr)o(ess)h(calculation)p 600 1354 3300 4
v 600 1434 a Fs(Example)i(6.1)75 b Fr(Show)19 b(how)g(you)g(would)g
(load)g(a)g(32-bit,)f(bignum,)f(into)h(\045r2)i(without)e(using)g(the)h
(set)g(instruction.)1183 1550 y Fo(.set)178 b(bignum,)44
b(0x87654321)1183 1641 y(sethi)133 b(bignum>>10,)43 b(\045r2)1183
1732 y(or)268 b(\045r2,)45 b(bignum&0x3ff,)d(\045r2)1183
1824 y(ta)268 b(0)p 600 1853 V 725 2002 a Fx(Note)29
b(the)g(use)g(of)g(the)g(expr)o(ession)g(\223bignum)p
Fn(>>)p Fx(10\224)e(to)j(extract)d(the)j(most)g(signi\002cant)g(22)e
(bits)600 2102 y(of)j(bignum)g(and)f(the)h(expr)o(ession)g
(\223bignum&0x3f)o(f)5 b(\224)27 b(to)k(extract)f(the)g(least)h
(signi\002cant)g(10)f(bits)h(of)600 2202 y(bignum.)26
b(T)-8 b(o)21 b(make)e(your)h(code)g(mor)o(e)f(r)o(eadable,)f(SP)-8
b(ARC)20 b(assemblers)f(pr)o(ovide)g(two)i(special)e(opera-)600
2301 y(tors:)26 b(\045hi\()p Fn(x)p Fx(\))20 b(yields)g(the)g(most)h
(signi\002cant)g(22)e(bits)i(of)f Fn(x)p Fx(,)g(while)h(\045lo\()p
Fn(x)p Fx(\))f(yields)g(the)g(least)g(signi\002cant)600
2401 y(10)g(bits)h(of)g Fn(x)p Fx(.)26 b(Note)20 b(that)h(these)g
(operators)f(ar)o(e)g(written)h(using)h(function)f(call)g(notation.)p
600 2527 V 600 2607 a Fs(Example)e(6.2)75 b Fr(Rewrite)19
b(the)g(code)g(fragment)g(given)g(in)f(Example)h(6.1,)g(using)f(the)h
(\045hi)g(and)g(\045lo)g(operators.)1183 2723 y Fo(.set)178
b(bignum,)44 b(0x87654321)1183 2814 y(sethi)133 b(\045hi\(bignum\),)43
b(\045r2)1183 2906 y(or)268 b(\045r2,)45 b(\045lo\(bignum\),)d(\045r2)
1183 2997 y(ta)268 b(0)p 600 3026 V 600 3179 V 600 3259
a Fs(Example)21 b(6.3)75 b Fr(W)o(rite)19 b(an)i(assembly)f(language)h
(fragment)f(to)h(sum)f(up)g(the)h(elements)f(in)g(the)g(array)m(.)29
b(Give)21 b(dir)o(ectives)g(to)600 3350 y(declar)o(e)e(an)g(array)g(of)
g(20)g(words)g(and)g(an)g(additional)f(word)i(to)e(hold)i(the)f(sum.)
1183 3466 y Fo(.data)824 3558 y(arr:)179 b(.skip)133
b(20*4)717 b(!)45 b(allocate)e(an)i(array)f(of)g(20)h(words)824
3649 y(sum:)179 b(.word)133 b(0)852 b(!)45 b(allocate)e(a)i(word)f(to)h
(hold)f(the)g(sum)1183 3832 y(.text)824 3923 y(start:)89
b(set)223 b(arr,)45 b(\045r2)537 b(!)45 b(\045r2)f(is)h(the)f(base)g
(address)1183 4014 y(mov)223 b(\045r0,)45 b(\045r3)537
b(!)45 b(\045r3)f(is)h(the)f(index)g(value)1183 4106
y(mov)223 b(\045r0,)45 b(\045r4)537 b(!)45 b(\045r4)f(is)h(the)f
(running)g(sum)1183 4197 y(set)223 b(20,)45 b(\045r5)582
b(!)45 b(\045r5)f(is)h(the)f(number)g(of)g(elems)g(to)h(add)824
4379 y(loop:)134 b(ld)224 b([\045r2+\045r3],)43 b(\045r6)313
b(!)45 b(fetch)f(the)g(next)g(element)1183 4471 y(add)179
b(\045r4,)44 b(\045r6,)g(\045r4)358 b(!)45 b(add)f(it)h(to)f(the)g
(running)g(sum)1183 4562 y(subcc)89 b(\045r5,)44 b(1,)g(\045r5)448
b(!)45 b(one)f(fewer)g(element)1183 4653 y(bne)179 b(loop)761
b(!)45 b(if)f(\045r5)h(>)f(0)h(get)f(next)g(element)1183
4745 y(add)179 b(\045r3,)44 b(4,)g(\045r3)448 b(!)45
b(increment)e(the)h(index)g(\(DELAY)g(SLOT\))1183 4927
y(sethi)89 b(\045hi\(sum\),)43 b(\045r1)358 b(!)45 b(store)f(the)g
(result)g(in)g(sum)1183 5019 y(st)224 b(\045r4,)44 b
([\045r1+\045lo\(sum\)])824 5110 y(end:)179 b(ta)268
b(0)p 600 5139 V eop
%%Page: 43 45
43 44 bop 0 100 a Fx(Lab)20 b(6.)41 b(Assembler)20 b(Dir)o(ectives,)g
(Assembler)h(Expr)o(essions,)f(and)g(Addr)o(essing)g(Modes)383
b(43)125 432 y(Note)28 b(that)g(the)g(code)g(in)h(Example)e(6.3)g(stor)
o(es)h(the)h(r)o(esult)f(into)h(sum)f(using)i(a)d Fw(sethi)h
Fx(instr)o(uction)0 532 y(followed)21 b(by)g(a)f Fw(st)h
Fx(instr)o(uction.)27 b(In)21 b(pr)o(evious)f(examples)h(we)f(have)h
(used)f(a)g Fw(set)h Fx(instr)o(uction)i(followed)0 632
y(by)i(a)f Fw(st)h Fx(instr)o(uction)i(to)e(accomplish)h(the)f(same)g
(task.)37 b(However)-6 b(,)26 b(the)f Fw(set)g Fx(instr)o(uction)i(is)e
(actually)f(a)0 731 y(synthetic)k(instr)o(uction)g(and)e(the)h
(assembler)f(implements)i(this)f(instr)o(uction)h(using)g(a)e
Fw(sethi)h Fx(instr)o(uc-)0 831 y(tion)k(followed)f(by)g(an)g
Fw(or)g Fx(instr)o(uction)i(\(as)d(we)h(showed)h(in)g(Example)e(6.1\).)
52 b(As)29 b(such,)k(our)d(earlier)0 930 y(code)19 b(actually)g(r)o
(equir)o(es)f(thr)o(ee)h(instr)o(uction)i(for)e(every)g(\(load)g(or\))g
(stor)o(e.)25 b(Using)20 b(the)f Fw(sethi)g Fx(instr)o(uction)0
1030 y(dir)o(ectly)-9 b(,)19 b(we)i(can)g(avoid)f(an)h(unnecessary)f
(instr)o(uction.)0 1316 y Fu(6.4)119 b(Summary)0 1555
y(6.5)g(Review)30 b(Questions)0 1794 y(6.6)119 b(Exercises)104
1983 y Fx(1.)41 b(The)29 b(\045hi)i(operator)e(yields)h(the)g(most)h
(signi\002cant)g(22)e(bits)h(while)g(\045lo)g(operator)g(yields)g(the)
208 2083 y(least)h(signi\002cant)h(10)f(bits)h(of)f(a)g(32-bit)f
(value.)58 b(Considering)32 b(that)f(the)h(SP)-8 b(ARC)31
b(uses)h(13-bit)208 2182 y(signed)25 b(integers)g(in)g(lots)h(of)f
(contexts,)h(it)f(might)h(seem)f(that)g(it)g(would)g(be)g(better)f(to)h
(have)g(the)208 2282 y(\045hi)f(and)g(\045lo)g(operators)g(yield)g(19)f
(and)h(13)f(bits)h(r)o(espectively)-9 b(.)35 b(What)24
b(pr)o(oblems)g(would)g(this)208 2381 y(cause?)104 2481
y(2.)41 b(W)-6 b(rite)31 b(a)h(SP)-8 b(ARC)32 b(assembly)g(language)g
(pr)o(ogram)f(to)h(count)h(the)f(number)g(of)g(ones)h(in)f(a)g(bit)208
2581 y(string.)50 b(The)29 b(bit)h(string)f(should)h(be)f(named)f
(BitString)h(and)g(the)g(length)h(\(in)f(bits\))g(of)g(the)g(bit)208
2680 y(string)19 b(should)h(be)e(named)h(Length.)25 b(The)19
b(r)o(esult)f(should)i(be)e(stor)o(ed)h(as)f(a)h(wor)o(d)f(named)h
(Count.)208 2780 y(Note:)25 b(ther)o(e)20 b(is)h(no)h(limit)f(on)h(the)
f(number)g(of)f(bits)h(in)h(the)e(bit)h(string.)104 2880
y(3.)41 b(Given)16 b(an)g(array)-9 b(,)15 b Fn(A)p Fx(,)i(and)f(the)g
(number)g(of)g(elements)h(in)f(the)g(array)-9 b(,)16
b Fn(n)p Fx(,)g(write)g(a)g(SP)-8 b(ARC)16 b(pr)o(ogram)208
2979 y(to)21 b(sort)g(the)g(array)-9 b(.)24 b(Y)-8 b(ou)22
b(may)e(use)h(any)g(method)g(you)h(like)f(to)g(sort)g(the)g(array)-9
b(.)p eop
%%Page: 44 46
44 45 bop 600 100 a Fx(44)382 b(Lab)20 b(6.)41 b(Assembler)20
b(Dir)o(ectives,)g(Assembler)h(Expr)o(essions,)f(and)h(Addr)o(essing)e
(Modes)p eop
%%Page: 45 47
45 46 bop 0 474 3300 12 v 0 723 a Fv(Laboratory)53 b(7)0
976 y(Operand)g(Sizes)f(and)g(Unsigned)0 1188 y(V)-23
b(alues)p 0 1304 1200 12 v 0 1661 a Fu(7.1)119 b(Goal)0
1850 y Fx(T)-8 b(o)20 b(complete)g(our)f(coverage)g(of)g(the)h(load)f
(and)g(stor)o(e)g(instr)o(uctions)i(pr)o(ovided)d(by)i(the)f(SP)-8
b(ARC)20 b(and)f(to)0 1950 y(cover)h(a)h(collection)g(of)g(useful)g
(synthetic)g(operations.)0 2234 y Fu(7.2)119 b(Objectives)0
2424 y Fx(After)20 b(completing)h(this)h(lab,)e(you)h(will)h(be)e(able)
g(to)h(write)g(assembly)g(language)g(pr)o(ograms)f(that)h(use:)125
2601 y Ft(\017)41 b Fx(Byte,)20 b(halfwor)o(d,)g(wor)o(d,)g(and)g
(double)h(wor)o(d)f(operands,)125 2700 y Ft(\017)41 b
Fx(The)20 b(assembler)h(dir)o(ectives)e(.byte,)h(.hwor)o(d,)h(.quad,)f
(and)g(.align,)125 2798 y Ft(\017)41 b Fx(Signed)20 b(and)g(unsigned)i
(operands,)e(and)125 2897 y Ft(\017)41 b Fx(The)20 b(\(synthetic\))h
(operations)g(clear)-6 b(,)20 b(negate,)g(incr)o(ement,)g(and)h(decr)o
(ement.)0 3182 y Fu(7.3)119 b(Discussion)0 3371 y Fx(In)31
b(this)h(lab)f(we)g(intr)o(oduce)f(the)i(assembler)e(dir)o(ectives)g
(and)h(operations)g(associated)g(with)h(dif)o(fer)o(-)0
3471 y(ent)c(sized)g(operands)g(and)g(unsigned)h(operands.)48
b(W)-8 b(e)28 b(begin)h(by)f(considering)h(the)g(operand)e(sizes)0
3570 y(supported)21 b(by)f(the)h(SP)-8 b(ARC.)21 b(Then)g(we)g
(consider)g(assembler)f(dir)o(ectives)g(used)h(to)g(allocate)f(dif)o
(fer)o(ent)0 3670 y(amounts)d(of)g(memory)-9 b(.)25 b(Next,)17
b(we)f(consider)h(the)g(load)f(and)h(stor)o(e)f(operations)h(for)f(dif)
o(fer)o(ent)f(sized)h(op-)0 3770 y(erations.)25 b(The)19
b(we)f(consider)h(the)g(load)g(operations)g(for)f(unsigned)i(operands.)
k(Finally)-9 b(,)19 b(we)g(conclude)0 3869 y(by)i(considering)g(a)g
(small)g(collection)g(of)g(useful)g(synthetic)h(operations.)0
4111 y Fp(7.3.1)99 b(Operand)24 b(sizes)0 4269 y Fx(On)18
b(the)f(SP)-8 b(ARC,)17 b(all)g(data)f(manipulation)i(operations)f
(\(e.g.,)g(integer)g(addition)g(and)g(integer)g(subtrac-)0
4369 y(tion\))k(manipulate)f(32-bit)f(values.)25 b(However)-6
b(,)20 b(the)g(data)f(transfer)h(operations)h(\(e.g.,)e(load)h(and)g
(stor)o(e\))0 4468 y(can)g(transfer)f(dif)o(fer)o(ent)e(sized)j(values)
f(between)h(the)g(memory)h(and)e(the)h(integer)g(r)o(egisters.)25
b(T)-8 b(able)19 b(7.1)0 4568 y(summarizes)i(the)f(operand)h(sizes)f
(supported)h(by)f(the)h(SP)-8 b(ARC)21 b(load)g(and)f(stor)o(e)g
(operations.)0 4793 y Fy(Assembler)f(directives)0 4951
y Fx(The)24 b(.wor)o(d)g(dir)o(ective)e(intr)o(oduced)i(in)g(Lab)g(2)f
(allocates)h(and)g(initializes)g(memory)h(in)f(32-bit)f(\(wor)o(d\))0
5051 y(units.)i(T)-8 b(able)16 b(7.2)g(summarizes)h(the)f(assembler)h
(dir)o(ectives)f(for)g(allocating)h(and)f(initializing)i(dif)o(fer)o
(ent)0 5150 y(sized)27 b(units)i(of)f(memory)-9 b(.)48
b(The)28 b(name)g(of)g(the)g(dir)o(ective)f(used)h(to)g(allocate)g(and)
f(initialize)h(a)g(64)f(bit)0 5250 y(doublewor)o(d,)j(\223.quad\224,)f
(is)g(historical.)50 b(The)28 b(name)h(dates)f(to)h(a)f(time)h(when)g
(wor)o(ds)g(wer)o(e)e(16)h(bits.)0 5350 y(Quad)20 b(is)h(short)h(for)e
(quad-wor)o(d,)g(that)h(is,)g(four)f(16-bit)g(wor)o(ds.)1608
5560 y(45)p eop
%%Page: 46 48
46 47 bop 600 100 a Fx(46)1617 b(Lab)20 b(7.)41 b(Operand)20
b(Sizes)g(and)g(Unsigned)h(V)-8 b(alues)1238 393 y(T)g(able)20
b(7.1)g(Operand)g(sizes)g(for)h(the)g(data)e(transfer)h(operations)2106
539 y Fq(Name)100 b(Size)p 1831 569 838 4 v 2164 633
a(byte)g(8)19 b(bits)2003 725 y(halfwor)o(d)99 b(16)19
b(bits)2130 816 y(wor)o(d)99 b(32)19 b(bits)1881 907
y(double)f(wor)o(d)99 b(64)19 b(bits)1186 1256 y Fx(T)-8
b(able)21 b(7.2)e(Dir)o(ectives)i(for)f(allocating)h(and)f
(initializing)i(memory)1944 1401 y Fq(Dir)o(ective)98
b(Size)p 1894 1432 713 4 v 2083 1496 a(.byte)h(8)19 b(bits)2005
1587 y(.hwor)o(d)99 b(16)19 b(bits)2049 1678 y(.wor)o(d)98
b(32)19 b(bits)2056 1770 y(.quad)99 b(64)19 b(bits)725
2119 y Fx(The)j(SP)-8 b(ARC)22 b(load)g(and)g(stor)o(e)g(operations)h
(r)o(equir)o(e)e(that)h(halfwor)o(d)f(values)h(be)g(aligned)g(on)h
(even)600 2218 y(addr)o(esses)d(\(i.e.,)h(halfwor)o(d)g(alignment\))h
(and)f(that)h(wor)o(d)f(and)g(double)h(wor)o(d)f(values)g(be)h(aligned)
f(on)600 2318 y(addr)o(esses)d(that)i(ar)o(e)e(a)h(multiple)h(of)g
(four)f(\(i.e.,)g(wor)o(d)g(aligned\).)24 b(Y)-8 b(ou)21
b(can)e(use)h(the)g(.align)f(dir)o(ective)g(to)600 2418
y(make)g(sur)o(e)f(that)h(your)h(variables)e(ar)o(e)f(aligned)i(as)g
(needed.)24 b(This)c(dir)o(ective)d(takes)i(a)g(two)h(ar)o(guments,)600
2517 y(a)25 b(number)h(and)f(an)g(optional)h(pad)f(value.)39
b(When)26 b(the)f(assembler)g(encounters)h(an)g(align)g(dir)o(ective,)
600 2617 y(it)h(makes)f(sur)o(e)g(that)g(the)h(next)f(addr)o(ess)f(in)i
(the)f(curr)o(ent)g(assembler)g(segment)h(is)g(a)f(multiple)g(of)h(the)
600 2717 y(\002rst)h(ar)o(gument.)46 b(For)28 b(example,)g(the)g(dir)o
(ective)e(\223.align)h(8\224)g(will)h(ensur)o(e)f(that)h(the)g(next)g
(addr)o(ess)e(is)600 2816 y(a)k(multiple)h(of)f(8.)54
b(T)-8 b(o)31 b(ensur)o(e)e(that)h(the)h(next)f(addr)o(ess)f(meets)h
(the)h(alignment)g(r)o(equir)o(ements,)h(the)600 2916
y(assembler)24 b(emits)g(\223pad\224)f(bytes.)36 b(If)23
b(the)i(second)f(ar)o(gument)g(is)g(supplied,)h(the)f(assembler)g(uses)
g(this)600 3016 y(value)15 b(when)i(it)f(emits)h(pad)e(bytes;)i
(otherwise,)h(the)e(assembler)f(emits)i(zer)o(os.)23
b(Example)15 b(7.1)g(illustrates)600 3115 y(the)21 b(size)f(and)h
(alignment)g(dir)o(ectives.)p 600 3231 3300 4 v 600 3311
a Fs(Example)c(7.1)76 b Fr(Consider)16 b(the)h(following)f(C)h
(declarations.)23 b(Assuming)16 b(that)h(a)g(character)h(is)f(one)g
(byte,)f(a)h(short)h(integer)e(is)600 3402 y(two)j(bytes,)f(and)g(an)h
(integer)f(is)g(four)g(bytes,)g(give)h(assembler)g(dir)o(ectives)g(to)f
(allocate)h(and)g(initialize)e(the)i(memory)g(speci\002ed)600
3494 y(by)g(these)g(dir)o(ectives.)824 3585 y Fo(short)44
b(int)g(short1)g(=)h(22;)824 3676 y(char)f(ch1)h(=)f('a';)824
3767 y(short)g(int)g(short2)g(=)h(33;)824 3859 y(char)f(ch2)h(=)f('A';)
824 3950 y(int)g(int1)h(=)f(0;)1183 4064 y(.data)1183
4155 y(.align)g(2)358 b(!)45 b(halfword)e(align)824 4246
y(short1:)h(.hword)g(22)313 b(!)45 b(allocate)e(and)i(initialize)e(a)h
(halfword)824 4338 y(ch1:)179 b(.byte)44 b('a')313 b(!)45
b(allocate)e(and)i(initialize)e(a)h(byte)1183 4429 y(.align)g(2)358
b(!)45 b(halfword)e(align)824 4520 y(short2:)h(.hword)g(33)313
b(!)45 b(allocate)e(and)i(initialize)e(a)h(second)g(halfword)824
4612 y(ch2:)179 b(.byte)44 b('A')313 b(!)45 b(allocate)e(and)i
(initialize)e(a)h(second)g(byte)1183 4703 y(.align)g(4)358
b(!)45 b(word)f(align)824 4794 y(int1:)134 b(.word)44
b(0)403 b(!)45 b(allocate)e(and)i(initialize)e(a)h(word)p
600 4824 V 600 5092 a Fy(The)20 b(load)g(and)g(store)g(operations)600
5250 y Fx(The)e(size)g(of)g(the)h(operand)e(for)h(a)g(load)g(or)g(stor)
o(e)g(operation)g(is)h(speci\002ed)f(using)h(a)f(suf)o(\002x:)23
b(\223d\224)17 b(for)h(dou-)600 5350 y(blewor)o(d,)i(\223h\224)g(for)g
(halfwor)o(d,)f(or)i(\223b\224)e(byte.)26 b(The)20 b(operation)h(names)
f(ar)o(e)g(summarized)f(in)i(T)-8 b(able)20 b(7.3.)p
eop
%%Page: 47 49
47 48 bop 0 100 a Fx(Lab)20 b(7.)41 b(Operand)20 b(Sizes)g(and)g
(Unsigned)h(V)-8 b(alues)1618 b(47)934 393 y(T)-8 b(able)20
b(7.3)g(The)h(load)f(and)g(stor)o(e)h(operations)651
539 y Fq(Size)100 b(Load)f(Stor)o(e)g(Notes)p 328 569
2644 4 v 642 633 a(byte)h(ldb)160 b(stb)481 725 y(halfwor)o(d)99
b(ldh)158 b(sth)169 b(the)19 b(addr)o(ess)e(must)i(be)g(halfwor)o(d)f
(aligned)608 816 y(wor)o(d)99 b(ld)201 b(st)212 b(the)19
b(addr)o(ess)e(must)i(be)g(wor)o(d)e(aligned)378 907
y(doublewor)o(d)98 b(ldd)155 b(std)166 b(the)35 b(addr)o(ess)e(must)h
(be)h(wor)o(d)e(aligned)h(and)h(the)1422 999 y(r)o(egister)16
b(must)j(be)g(an)g(even)g(number)125 1356 y Fx(The)k(load)g(operations)
h(take)e(two)i(operands:)30 b(the)24 b(\(sour)o(ce\))e(memory)i(addr)o
(ess)e(followed)h(by)h(the)0 1455 y(\(destination\))d(r)o(egister)-6
b(.)25 b(Similarly)-9 b(,)20 b(the)h(stor)o(e)g(operations)g(take)f
(two)i(operands:)j(the)c(\(sour)o(ce\))f(r)o(egis-)0
1555 y(ter)g(followed)h(by)g(the)g(\(destination\))g(memory)g(addr)o
(ess.)125 1655 y(The)h(load)g(byte,)g(halfwor)o(d,)f(and)h(wor)o(d)g
(operations)h(set)f(all)g(32)f(bits)i(of)f(the)g(destination)h(r)o
(egister)-6 b(.)0 1754 y(The)33 b(load)f(byte)h(operation)f(\(ldb\))g
(fetches)h(an)f(8-bit)g(value,)j(sign)e(extends)g(this)g(value)f(to)h
(32)f(bits,)0 1854 y(and)24 b(loads)g(the)g(r)o(esulting)g(value)f
(into)i(destination)g(r)o(egister)-6 b(.)34 b(The)24
b(load)g(halfwor)o(d)f(operation)i(\(ldh\))0 1953 y(fetches)18
b(a)g(16-bit)f(value)h(and)g(sign)h(extends)f(this)i(value)d(to)i(32)f
(bits.)25 b(The)18 b(load)g(wor)o(d)g(operation)h(\(load\))0
2053 y(fetches)d(a)g(32-bit)f(value)h(and)g(load)g(this)i(value)e(into)
h(the)g(destination)g(r)o(egister)-6 b(.)23 b(The)16
b(load)g(doublewor)o(d)0 2153 y(operation)33 b(fetches)f(two)h(32-bit)f
(values)g(and)g(loads)h(them)g(into)g(consecutive)g(r)o
(egisters\227starting)0 2252 y(with)22 b(the)e(r)o(egister)g
(speci\002ed)h(in)g(the)g(instr)o(uction)h(\(e.g.,)e(\045r2)g(and)g
(\045r3\).)125 2352 y(The)30 b(stor)o(e)g(byte)g(operation)h(\(stb\))f
(stor)o(es)g(the)h(least)f(signi\002cant)h(8)f(bits)h(of)f(the)h(sour)o
(ce)f(r)o(egister)0 2452 y(to)i(the)f(destination)i(memory)f(location.)
58 b(The)32 b(stor)o(e)f(halfwor)o(d)f(operation)i(\(sth\))f(stor)o(es)
h(the)f(least)0 2551 y(signi\002cant)e(16)e(bits)i(of)f(the)g(sour)o
(ce)g(r)o(egister)g(into)h(the)f(destination)h(memory)g(location.)48
b(The)28 b(stor)o(e)0 2651 y(wor)o(d)17 b(operation)g(\(st\))g(stor)o
(es)h(the)f(contents)h(of)g(a)e(r)o(egister)h(to)h(the)f(destination)h
(memory)g(addr)o(ess.)23 b(The)0 2750 y(stor)o(e)d(doublewor)o(d)f
(operation)h(\(stor)o(ed\))f(stor)o(es)h(the)g(contents)h(two)f
(consecutive)h(r)o(egisters)e(\(starting)0 2850 y(with)j(the)e(r)o
(egister)g(speci\002ed)h(in)g(the)g(instr)o(uction\).)125
2950 y(The)27 b(memory)i(addr)o(esses)d(used)h(with)i(the)f(operations)
g(that)g(load)f(and)h(stor)o(e)f(halfwor)o(ds)g(must)0
3049 y(be)32 b(even)h(\(i.e.,)h(halfwor)o(d)e(aligned\).)60
b(The)33 b(memory)g(addr)o(esses)e(used)h(with)h(the)g(operations)g
(that)0 3149 y(load)21 b(and)f(stor)o(e)h(wor)o(ds)f(and)h(doublewor)o
(ds)g(must)g(be)g(multiples)h(of)e(four)h(\(i.e.,)f(wor)o(d)h
(aligned\).)k(The)0 3249 y(r)o(egister)20 b(used)h(with)h(the)f
(operations)h(that)f(load)g(and)g(stor)o(e)f(doublewor)o(ds)h(must)h
(be)f(even)g(\(e.g.,)f(\045r2)0 3348 y(but)h(not)g(\045r3\).)j(When)d
(these)f(operations)h(ar)o(e)e(used,)h(the)h(most)g(signi\002cant)h(32)
d(bits)i(ar)o(e)e(stor)o(ed)h(in)h(the)0 3448 y(even)g(r)o(egister)-6
b(.)912 3713 y(T)e(able)20 b(7.4)g(The)g(load)h(and)f(stor)o(e)g(instr)
o(uctions)273 3837 y Fq(Operation)349 b(Instr)o(uction)20
b(syntax)100 b(Operation)18 b(implemented)p 223 3868
2855 4 v 273 3932 a(load)g(byte)379 b(ldb)104 b Fr(addr)o(ess)p
Fq(,)19 b Fr(rd)159 b Fq(r)o(eg[)p Fr(rd)p Fq(])17 b(=)i(signextend\()f
(memory[)p Fr(addr)o(ess)p Fq(])2920 3940 y Ff(8)2972
3932 y Fq(\))273 4023 y(load)g(halfwor)o(d)217 b(ldh)102
b Fr(addr)o(ess)p Fq(,)19 b Fr(rd)159 b Fq(r)o(eg[)p
Fr(rd)p Fq(])17 b(=)i(signextend\()f(memory[)p Fr(addr)o(ess)p
Fq(])2920 4031 y Ff(16)3002 4023 y Fq(\))273 4114 y(load)g(wor)o(d)344
b(ld)145 b Fr(addr)o(ess)p Fq(,)19 b Fr(rd)159 b Fq(r)o(eg[)p
Fr(rd)p Fq(])17 b(=)i(memory[)p Fr(addr)o(ess)p Fq(])2514
4122 y Ff(32)273 4206 y Fq(load)f(doublewor)o(d)113 b(ldd)99
b Fr(addr)o(ess)p Fq(,)19 b Fr(rd)159 b Fq(r)o(eg[)p
Fr(rd)p Fq(])17 b(=)i(memory[)p Fr(addr)o(ess)p Fq(])2514
4214 y Ff(32)1657 4297 y Fq(r)o(eg[)p Fr(rd)p Fq(+1])f(=)h(memory[)p
Fr(addr)o(ess)p Fq(+4])2679 4305 y Ff(32)273 4388 y Fq(stor)o(e)e(byte)
364 b(stb)116 b Fr(rs)p Fq(,)18 b Fr(addr)o(ess)168 b
Fq(memory[)p Fr(addr)o(ess)p Fq(])2210 4396 y Ff(8)2262
4388 y Fq(=)19 b(r)o(eg[)p Fr(rs)p Fq(])2541 4396 y Ff(8)273
4480 y Fq(stor)o(e)e(halfwor)o(d)202 b(sth)114 b Fr(rs)p
Fq(,)18 b Fr(addr)o(ess)168 b Fq(memory[)p Fr(addr)o(ess)p
Fq(])2210 4488 y Ff(16)2292 4480 y Fq(=)19 b(r)o(eg[)p
Fr(rs)p Fq(])2571 4488 y Ff(16)273 4571 y Fq(stor)o(e)e(wor)o(d)329
b(st)157 b Fr(rs)p Fq(,)18 b Fr(addr)o(ess)168 b Fq(memory[)p
Fr(addr)o(ess)p Fq(])2210 4579 y Ff(32)2292 4571 y Fq(=)19
b(r)o(eg[)p Fr(rs)p Fq(])2571 4579 y Ff(32)273 4662 y
Fq(stor)o(e)e(doublewor)o(d)98 b(std)111 b Fr(rs)p Fq(,)18
b Fr(addr)o(ess)168 b Fq(memory[)p Fr(addr)o(ess)p Fq(])2210
4670 y Ff(32)2292 4662 y Fq(=)19 b(r)o(eg[)p Fr(rs)p
Fq(])2571 4670 y Ff(32)1657 4754 y Fq(memory[)p Fr(addr)o(ess)p
Fq(+4])2292 4762 y Ff(32)2375 4754 y Fq(=)g(r)o(eg[)p
Fr(rs)p Fq(+1])2736 4762 y Ff(32)p 0 5063 3300 4 v 0
5143 a Fs(Example)24 b(7.2)75 b Fr(Rewrite)24 b(the)f(code)i(pr)o
(esented)f(in)f(Example)h(6.3)g(using)f(an)g(array)h(of)g(20)g(bytes)g
(\(i.e.,)f(chars\))i(instead)e(of)0 5234 y(words.)g(\(Y)-8
b(ou)18 b(should)h(still)f(stor)o(e)h(the)g(sum)f(in)g(a)h(word.\))583
5350 y Fo(.data)p eop
%%Page: 48 50
48 49 bop 600 100 a Fx(48)1617 b(Lab)20 b(7.)41 b(Operand)20
b(Sizes)g(and)g(Unsigned)h(V)-8 b(alues)824 333 y Fo(arr:)179
b(.skip)133 b(20)807 b(!)45 b(allocate)e(an)i(array)f(of)g(20)h(bytes)
824 424 y(sum:)179 b(.word)133 b(0)852 b(!)45 b(allocate)e(a)i(word)f
(to)h(hold)f(the)g(sum)1183 607 y(.text)824 698 y(start:)89
b(set)223 b(arr,)45 b(\045r2)537 b(!)45 b(\045r2)f(is)h(the)f(base)g
(address)1183 789 y(mov)223 b(\045r0,)45 b(\045r3)537
b(!)45 b(\045r3)f(is)h(the)f(index)g(value)1183 881 y(mov)223
b(\045r0,)45 b(\045r4)537 b(!)45 b(\045r4)f(is)h(the)f(running)g(sum)
1183 972 y(set)223 b(20,)45 b(\045r5)582 b(!)45 b(\045r5)f(is)h(the)f
(number)g(of)g(elems)g(to)h(add)824 1155 y(loop:)134
b(ldb)179 b([\045r2+\045r3],)43 b(\045r6)313 b(!)45 b(fetch)f(the)g
(next)g(element)1183 1246 y(add)179 b(\045r4,)44 b(\045r6,)g(\045r4)358
b(!)45 b(add)f(it)h(to)f(the)g(running)g(sum)1183 1337
y(subcc)89 b(\045r5,)44 b(1,)g(\045r5)448 b(!)45 b(one)f(fewer)g
(element)1183 1429 y(bne)179 b(loop)761 b(!)45 b(if)f(\045r5)h(>)f(0)h
(get)f(next)g(element)1183 1520 y(add)179 b(\045r3,)44
b(4,)g(\045r3)448 b(!)45 b(increment)e(the)h(index)g(\(DELAY)g(SLOT\))
1183 1703 y(sethi)89 b(\045hi\(sum\),)43 b(\045r1)358
b(!)45 b(store)f(the)g(result)g(in)g(sum)1183 1794 y(st)224
b(\045r4,)44 b([\045r1+\045lo\(sum\)])824 1885 y(end:)179
b(ta)268 b(0)p 600 1914 3300 4 v 600 2206 a Fp(7.3.2)99
b(Unsigned)25 b(operands)600 2364 y Fx(The)k(SP)-8 b(ARC)28
b(instr)o(uction)i(set)f(also)g(pr)o(ovides)f(a)g(load)g(unsigned)h
(byte)g(operation)g(\(loadub\))e(and)h(a)600 2464 y(load)g(unsigned)h
(halfwor)o(d)f(operation)g(\(loaduh\).)48 b(In)28 b(contrast)h(to)f
(the)h(standar)o(d)e(load)h(operations)600 2563 y(\(loadb)d(and)g
(loadh\),)i(these)f(operations)g(do)g(not)g(sign)h(extend)e(their)h
(values.)40 b(They)26 b(always)f(set)h(the)600 2663 y(most)c
(signi\002cant)f(bits)g(to)h(zer)o(o.)1533 2929 y(T)-8
b(able)20 b(7.5)f(The)i(unsigned)h(load)e(operations)834
3074 y Fq(Operation)558 b(Instr)o(uction)20 b(syntax)100
b(Operation)18 b(implemented)p 784 3105 2933 4 v 834
3169 a(load)g(unsigned)g(byte)261 b(ldub)102 b Fr(addr)o(ess)p
Fq(,)19 b Fr(rd)116 b Fq(r)o(eg[)p Fr(rd)p Fq(])17 b(=)i(zer)o
(o\002ll\()e(memory[)p Fr(addr)o(ess)p Fq(])3558 3177
y Ff(8)3611 3169 y Fq(\))834 3260 y(load)h(unsigned)g(halfwor)o(d)99
b(lduh)h Fr(addr)o(ess)p Fq(,)19 b Fr(rd)116 b Fq(r)o(eg[)p
Fr(rd)p Fq(])17 b(=)i(zer)o(o\002ll\()e(memory[)p Fr(addr)o(ess)p
Fq(])3558 3268 y Ff(16)3641 3260 y Fq(\))600 3689 y Fp(7.3.3)99
b(Useful)24 b(\(synthetic\))i(operations)600 3847 y Fx(W)-8
b(e)18 b(conclude)g(this)h(lab)f(by)g(considering)h(a)e(collection)i
(of)f(useful)g(operations.)25 b(In)19 b(particular)-6
b(,)17 b(we)h(con-)600 3946 y(sider)k(the)g(\(synthetic\))g(operations)
h(clear)-6 b(,)21 b(negate,)h(incr)o(ement,)g(and)g(decr)o(ement.)29
b(These)22 b(operations)600 4046 y(ar)o(e)d(summarized)h(in)i(T)-8
b(able)20 b(7.6.)p 600 4149 3300 4 v 600 4229 a Fs(Example)f(7.3)75
b Fr(Rewrite)19 b(the)g(code)g(pr)o(esented)g(in)f(Example)h(6.3)h
(using)e(the)h(operations)f(de\002ned)i(in)e(T)-8 b(able)18
b(7.6.)1183 4345 y Fo(.data)824 4436 y(arr:)179 b(.skip)133
b(20*4)717 b(!)45 b(allocate)e(an)i(array)f(of)g(20)h(words)824
4528 y(sum:)179 b(.word)133 b(0)852 b(!)45 b(allocate)e(a)i(word)f(to)h
(hold)f(the)g(sum)1183 4710 y(.text)824 4802 y(start:)89
b(set)223 b(arr,)45 b(\045r2)537 b(!)45 b(\045r2)f(is)h(the)f(base)g
(address)1183 4893 y(clr)223 b(\045r3)762 b(!)45 b(\045r3)f(is)h(the)f
(index)g(value)1183 4984 y(clr)223 b(\045r4)762 b(!)45
b(\045r4)f(is)h(the)f(running)g(sum)1183 5076 y(set)223
b(20,)45 b(\045r5)582 b(!)45 b(\045r5)f(is)h(the)f(number)g(of)g(elems)
g(to)h(add)824 5258 y(loop:)134 b(ld)224 b([\045r2+\045r3],)43
b(\045r6)313 b(!)45 b(fetch)f(the)g(next)g(element)1183
5350 y(add)179 b(\045r4,)44 b(\045r6,)g(\045r4)358 b(!)45
b(add)f(it)h(to)f(the)g(running)g(sum)p eop
%%Page: 49 51
49 50 bop 0 100 a Fx(Lab)20 b(7.)41 b(Operand)20 b(Sizes)g(and)g
(Unsigned)h(V)-8 b(alues)1618 b(49)1050 393 y(T)-8 b(able)21
b(7.6)e(Some)i(useful)f(operations)361 539 y Fq(Operation)586
b(Instr)o(uction)20 b(syntax)160 b(Operation)19 b(implemented)p
311 569 2679 4 v 361 633 a(clear)f(r)o(egister)496 b(clr)196
b Fr(rd)411 b Fq(r)o(eg[)p Fr(rd)18 b Fq(=)h(0)361 725
y(clear)f(memory)f(wor)o(d)271 b(clr)196 b Fr(addr)o(ess)255
b Fq(memory[)p Fr(addr)o(ess)p Fq(])2595 733 y Ff(32)2678
725 y Fq(=)19 b(0)361 816 y(clear)f(memory)f(halfwor)o(d)144
b(clr)o(h)154 b Fr(addr)o(ess)255 b Fq(memory[)p Fr(addr)o(ess)p
Fq(])2595 824 y Ff(16)2678 816 y Fq(=)19 b(0)361 907
y(clear)f(memory)f(byte)306 b(clrb)155 b Fr(addr)o(ess)255
b Fq(memory[)p Fr(addr)o(ess)p Fq(])2595 915 y Ff(8)2648
907 y Fq(=)19 b(0)361 999 y(negate)g(r)o(egister)435
b(neg)160 b Fr(rd)411 b Fq(r)o(eg[)p Fr(rd)p Fq(])18
b(=)h Fl(\000)p Fq(r)o(eg[)p Fr(rd)p Fq(])1284 1090 y(neg)160
b Fr(rs)p Fq(,)p Fr(rd)334 b Fq(r)o(eg[)p Fr(rd)p Fq(])18
b(=)h Fl(\000)p Fq(r)o(eg[)p Fr(rs)p Fq(])361 1181 y(incr)o(ement)f(r)o
(egister)322 b(inc)183 b Fr(rd)411 b Fq(r)o(eg[)p Fr(rd)p
Fq(])18 b(=)h(r)o(eg[)p Fr(rd)p Fq(])e(+)i(1)1284 1272
y(inc)183 b Fr(siconst)1774 1280 y Ff(13)1839 1272 y
Fq(,)18 b Fr(rd)100 b Fq(r)o(eg[)p Fr(rd)p Fq(])18 b(=)h(r)o(eg[)p
Fr(rd)p Fq(])e(+)i Fr(siconst)2860 1280 y Ff(13)361 1364
y Fq(incr)o(ement)f(r)o(egister)-6 b(,)17 b(set)h(cc)116
b(inccc)h Fr(rd)411 b Fq(r)o(eg[)p Fr(rd)p Fq(])18 b(=)h(r)o(eg[)p
Fr(rd)p Fq(])e(+)i(1)1284 1455 y(inccc)117 b Fr(siconst)1774
1463 y Ff(13)1839 1455 y Fq(,)18 b Fr(rd)100 b Fq(r)o(eg[)p
Fr(rd)p Fq(])18 b(=)h(r)o(eg[)p Fr(rd)p Fq(])e(+)i Fr(siconst)2860
1463 y Ff(13)361 1546 y Fq(decr)o(ement)e(r)o(egister)306
b(dec)166 b Fr(rd)411 b Fq(r)o(eg[)p Fr(rd)p Fq(])18
b(=)h(r)o(eg[)p Fr(rd)p Fq(])e Fl(\000)h Fq(1)1284 1638
y(dec)166 b Fr(siconst)1774 1646 y Ff(13)1839 1638 y
Fq(,)18 b Fr(rd)100 b Fq(r)o(eg[)p Fr(rd)p Fq(])18 b(=)h(r)o(eg[)p
Fr(rd)p Fq(])e Fl(\000)h Fr(siconst)2874 1646 y Ff(13)361
1729 y Fq(decr)o(ement)f(r)o(egister)-6 b(,)17 b(set)h(cc)100
b(deccc)g Fr(rd)411 b Fq(r)o(eg[)p Fr(rd)p Fq(])18 b(=)h(r)o(eg[)p
Fr(rd)p Fq(])e Fl(\000)h Fq(1)1284 1820 y(deccc)100 b
Fr(siconst)1774 1828 y Ff(13)1839 1820 y Fq(,)18 b Fr(rd)100
b Fq(r)o(eg[)p Fr(rd)p Fq(])18 b(=)h(r)o(eg[)p Fr(rd)p
Fq(])e Fl(\000)h Fr(siconst)2874 1828 y Ff(13)583 2180
y Fo(deccc)89 b(\045r5)806 b(!)45 b(one)f(fewer)g(element)583
2271 y(bne)179 b(loop)761 b(!)45 b(if)f(\045r5)h(>)f(0)h(get)f(next)g
(element)583 2363 y(inc)179 b(4,)44 b(\045r3)672 b(!)45
b(increment)e(the)h(index)g(\(DELAY)g(SLOT\))583 2545
y(sethi)89 b(\045hi\(sum\),)43 b(\045r1)358 b(!)45 b(store)f(the)g
(result)g(in)g(sum)583 2637 y(st)224 b(\045r4,)44 b
([\045r1+\045lo\(sum\)])224 2728 y(end:)179 b(ta)268
b(0)p 0 2757 3300 4 v 0 3093 a Fu(7.4)119 b(Summary)0
3332 y(7.5)g(Review)30 b(Questions)104 3521 y Fx(1.)41
b(Explain)20 b(why)h(the)g(SP)-8 b(ARC)21 b(does)g(not)g(pr)o(ovide)f
(unsigned)i(stor)o(e)e(operations.)0 3806 y Fu(7.6)119
b(Exercises)104 3996 y Fx(1.)41 b(Suppose)24 b(that)g(the)h(SP)-8
b(ARC)24 b(did)g(not)h(have)f(a)g(load)g(unsigned)h(byte)g(operation,)g
(explain)f(how)208 4095 y(you)30 b(could)f(implement)i(this)f
(operation)g(using)g(the)g(load)g(byte)f(operation)h(\(r)o(ecall,)g
(this)g(op-)208 4195 y(eration)c(always)g(sign)h(extends)e(the)i(value)
e(being)i(loaded\).)40 b(Note,)28 b(the)e(Intel)g(i860)f(pr)o(ocessor)
208 4295 y(pr)o(ovides)20 b(a)g(load)g(byte)h(operation)g(but)g(does)f
(not)i(pr)o(ovide)e(a)g(load)h(unsigned)g(byte)g(operation.)p
eop
%%Page: 50 52
50 51 bop 600 100 a Fx(50)1617 b(Lab)20 b(7.)41 b(Operand)20
b(Sizes)g(and)g(Unsigned)h(V)-8 b(alues)p eop
%%Page: 51 53
51 52 bop 0 474 3300 12 v 0 723 a Fv(Laboratory)53 b(8)0
976 y(The)f(ISEM)g(Graphics)g(Accelerator)p 0 1092 1200
12 v 0 1449 a Fu(8.1)119 b(Goal)0 1638 y Fx(T)-8 b(o)23
b(cover)e(uses)i(of)f(the)g(graphics)g(accelerator)e(device)h(pr)o
(ovided)g(by)h(ISEM.)f(\(Curr)o(ently)-9 b(,)21 b(this)i(device)0
1738 y(is)e(only)h(available)d(in)i(the)g(X1)-5 b(1)21
b(envir)o(onment.\))0 2024 y Fu(8.2)119 b(Objectives)0
2213 y Fx(After)20 b(completing)h(this)h(lab,)e(you)h(will)h(be)e(able)
g(to)h(write)g(assembly)g(language)g(pr)o(ograms)f(that)h(use:)125
2379 y Ft(\017)41 b Fx(the)20 b(graphics)h(accelerator)-6
b(.)0 2665 y Fu(8.3)119 b(Discussion)0 2854 y Fx(In)32
b(the)f(pr)o(evious)h(labs,)h(we)f(have)f(focused)g(on)h(assembly)g
(language)f(pr)o(ogramming,)j(pr)o(esenting)0 2954 y(SP)-8
b(ARC)32 b(instr)o(uctions)i(and)e(assembler)f(dir)o(ectives.)59
b(Now)-8 b(,)35 b(it's)e(time)f(for)g(some)h(fun!)59
b(In)33 b(this)f(lab)0 3053 y(we)27 b(pr)o(esent)g(the)h(ISEM)e
(graphics)h(accelerator)f(device,)i Fw(gx)p Fx(.)45 b(In)28
b(addition)f(to)h(showing)h(you)f(how)g(a)0 3153 y(simple)17
b(device)e(works,)i(this)g(lab)f(will)h(give)f(you)g(an)g(opportunity)h
(to)g(r)o(eview)e(the)h(assembly)g(language)0 3252 y(constr)o(ucts)22
b(cover)o(ed)d(in)i(the)g(pr)o(evious)g(labs.)125 3352
y(When)j(you)h(open)f(the)h(gx)f(device,)g(it)h(cr)o(eates)d(a)i(black)
g(and)g(white)g(graphics)g(window)-8 b(.)38 b(By)24 b(issu-)0
3452 y(ing)k(gx)e(commands,)j(you)f(can)e(instr)o(uct)i(the)f(gx)g
(device)f(to)h(draw)g(lines,)h(\002ll)g(r)o(ectangles,)f(and)g(copy)0
3551 y(r)o(ectangles)d(in)i(the)f(window)-8 b(.)39 b(The)25
b(visible)h(gx)f(display)f(is)i Fm(512)20 b Ft(\002)h
Fm(512)j Fx(pixels.)38 b(Individual)25 b(pixels)g(in)0
3651 y(the)f(visible)g(r)o(egion)f(ar)o(e)f(addr)o(essed)g(by)i(an)f
Fm(\()p Fn(x;)14 b(y)s Fm(\))24 b Fx(pair)-6 b(.)34 b(The)23
b(pixel)h(in)g(the)g(upper)f(left)g(corner)g(of)h(the)0
3751 y(display)f(is)g(addr)o(essed)d(by)j(the)g(pair)f
Fm(\(0)p Fn(;)14 b Fm(0\))p Fx(.)31 b(The)23 b(pixel)g(in)g(the)g
(lower)g(right)g(corner)g(is)g(addr)o(essed)e(by)0 3850
y(the)g(pair)f Fm(\(511)p Fn(;)14 b Fm(511\))p Fx(.)125
3950 y(In)31 b(addition)g(to)h(the)g(visible)f(pixels,)j(the)d(gx)h
(device)e(pr)o(ovides)h(a)g(512x64)d(r)o(ectangle)j(of)g(pixels)0
4049 y(that)24 b(ar)o(e)e(not)i(displayed.)34 b(These)23
b(pixels)h(ar)o(e)e(commonly)j(used)f(with)g(the)g Fw(blt)g
Fx(operation)f(\(described)0 4149 y(later)f(in)h(this)g(lab\).)30
b(They)22 b(ar)o(e)f(addr)o(essed)g(using)i(the)g(pixel)f(addr)o(esses)
f Fm(\(0)p Fn(;)14 b Fm(512\))21 b Fx(thr)o(ough)i Fm(\(511)p
Fn(;)14 b Fm(575\))p Fx(.)0 4249 y(Figur)o(e)20 b(8.1)g(illustrates)h
(the)g(pixel)f(addr)o(esses)f(pr)o(ovided)h(by)h(the)g(gx)f(device.)125
4348 y(The)31 b(gx)g(device)f(is)i(a)f(\223memory)g(mapped\224)f
(device.)56 b(This)32 b(means)f(that)h(the)f(gx)g(device)g(r)o(egis-)0
4448 y(ters)25 b(ar)o(e)e(mapped)h(into)i(memory)f(locations)h(and)e
(can)h(be)f(accessed)g(using)i(the)f(standar)o(d)e(load)h(and)0
4548 y(stor)o(e)19 b(operations.)26 b(\(The)19 b(SP)-8
b(ARC)20 b(ar)o(chitectur)o(e)d(doesn't)j(pr)o(ovide)f(any)h(special)f
(I/O)h(instr)o(uctions,)h(so)0 4647 y(all)27 b(devices)f(must)i(be)e
(memory)i(mapped)e(when)i(they)f(ar)o(e)f(used)g(with)i(a)f(SP)-8
b(ARC.\))26 b(The)h(gx)g(device)0 4747 y(has)d(256)f(r)o(egisters:)32
b(a)23 b(status)i(r)o(egister)-6 b(,)23 b(a)h(command)h(r)o(egister)-6
b(,)23 b(and)h(254)f(ar)o(gument)g(r)o(egisters.)36 b(Each)0
4846 y(r)o(egister)20 b(is)h(one)g(wor)o(d)g(\(four)f(bytes,)g(32)g
(bits\))h(wide.)125 4946 y(The)g(status)h(r)o(egister)e(is)i(mapped)f
(into)h(memory)g(location)h(0x100000.)h(Storing)e(a)f(value)g(into)h
(this)0 5046 y(location)g(has)g(no)g(af)o(fect;)d(however)-6
b(,)22 b(when)g(you)g(load)f(a)g(r)o(egister)g(using)h(this)g(memory)g
(location,)g(you)0 5145 y(will)k(actually)e(r)o(ead)f(the)i(status)g(r)
o(egister)g(of)g(the)g(gx)g(device.)37 b(The)25 b(value)f(of)h(the)g
(status)g(r)o(egister)f(is)h(0)0 5245 y(when)19 b(the)f(gx)g(device)f
(hasn't)i(been)f(\(opened)f(and\))g(displayed.)24 b(This)19
b(r)o(egister)e(has)h(the)g(value)g(1)f(when)0 5345 y(the)29
b(device)g(has)g(been)g(opened)g(and)g(mapped)f(onto)i(the)g(display)-9
b(.)50 b(The)29 b(gx)h(command)f(r)o(egister)g(is)1608
5560 y(51)p eop
%%Page: 52 54
52 53 bop 600 100 a Fx(52)1798 b(Lab)20 b(8.)40 b(The)21
b(ISEM)f(Graphics)h(Accelerator)p 962 250 2522 7 v 962
3071 7 2822 v 3477 3071 V 962 3078 2522 7 v 969 2761
2508 7 v 3424 3022 56 4 v 3424 3071 4 49 v 3477 3071
V 3424 3074 56 4 v 3424 2709 V 3424 2758 4 49 v 3477
2758 V 3424 2761 56 4 v 965 2758 V 965 2807 4 49 v 1018
2807 V 965 2810 56 4 v 965 250 V 965 299 4 49 v 1018
299 V 965 302 56 4 v 2926 1504 4 1254 v 2928 333 a Fi(6)p
2926 2758 V 2928 2758 a(?)2977 1529 y Fq(512)p 2223 800
1254 4 v 3394 798 a Fi(-)p 969 800 V -2508 w(\033)2167
748 y Fq(512)1836 1750 y(V)l(isible)1760 1842 y(\(displayed\))p
2926 1504 4 1254 v 2928 333 a Fi(6)p 2926 2758 V 2928
2758 a(?)2977 1529 y Fq(512)846 2929 y Fi(\000)910 2865
y(\000)-83 b(\022)628 2983 y Fq(\(0,512\))846 421 y Fi(\000)910
357 y(\000)g(\022)703 475 y Fq(\(0,0\))3516 2983 y Fi(\000)3452
3046 y(\000)g(\011)3599 2884 y Fq(\(51)l(1,575\))3516
2669 y Fi(\000)3452 2733 y(\000)g(\011)3599 2570 y Fq(\(51)l(1,51)l
(1\))p 2926 2914 4 157 v 2928 2841 a Fi(6)p 2926 3071
V 2928 3071 a(?)2977 2940 y Fq(64)1821 2887 y(Hidden)1697
2978 y(\(not)19 b(displayed\))1788 3337 y Fx(Figur)o(e)h(8.1)g(The)h
(gx)f(display)600 3609 y(mapped)15 b(to)i(memory)g(location)g(0x100004)
c(while)k(the)f(ar)o(gument)g(r)o(egisters)f(ar)o(e)g(mapped)h(to)g
(memory)600 3709 y(locations)33 b(0x100008\2260x100)o(7f)o(e.)52
b(Figur)o(e)31 b(8.2)g(illustrates)h(the)f(mapping)h(of)g(gx)f(r)o
(egisters)g(into)i(the)600 3808 y(ISEM)20 b(memory)-9
b(.)725 3908 y(The)19 b(gx)g(device)f(pr)o(ovides)h(commands)h(to)f
(draw)g(lines,)h(\002ll)f(r)o(ectangles,)g(and)g(copy)g(r)o(ectangles)f
(on)600 4008 y(the)j(display)-9 b(.)25 b(T)-8 b(able)20
b(8.1)g(summarizes)g(the)h(commands)h(pr)o(ovided)d(by)i(the)g(gx)g
(device.)725 4107 y(Befor)o(e)j(you)j(issue)f(any)g(other)g(gx)g
(commands,)i(you)e(must)h(\002rst)f(open)h(the)f(device.)40
b(When)26 b(you)600 4207 y(issue)d(the)g(open)g(command,)h(the)f(gx)g
(device)f(cr)o(eates)f(an)i(X1)-5 b(1)23 b(window)h(and)e(initializes)h
(the)g(display)600 4307 y(memory)-9 b(.)26 b(The)21 b(display)f(is)h
(initially)h(is)f(solid)g(white,)g(and)g(the)g(drawing)f(color)i(is)f
(black.)725 4406 y(After)26 b(you)i(ar)o(e)f(done)g(using)i(the)f(gx)g
(device,)g(you)g(can)g(explicitly)g(close)g(the)f(device)g(using)i(the)
600 4506 y(close)18 b(command.)25 b(If)17 b(you)h(don't)g(issue)f(a)g
(close)h(command,)g(the)g(display)f(window)i(will)f(be)f(destr)o(oyed)
600 4605 y(when)k(you)h(exit)e(isem,)h(as)g(such,)g(closing)h(the)f(gx)
f(device)g(is)h(not)h(critical.)725 4705 y(Y)-8 b(ou)25
b(can)g(use)f(the)h(color)g(command)g(to)g(set)g(the)f(color)h(used)g
(to)g(draw)f(lines)h(and)f(\002ll)h(r)o(ectangles.)600
4805 y(This)19 b(command)h(takes)e(a)h(single)g(ar)o(gument,)g(the)g
(color)-6 b(.)25 b(If)18 b(the)h(ar)o(gument)g(is)g(0,)g(the)g(gx)f
(device)h(draws)600 4904 y(lines)24 b(an)f(\002lls)h(r)o(ectangles)e
(in)i(black;)g(otherwise,)g(if)f(the)h(ar)o(gument)f(is)g(1,)g(the)h
(gx)f(device)g(draws)f(lines)600 5004 y(and)e(\002lls)i(r)o(ectangles)e
(in)h(white.)725 5104 y(The)i(gx)p 981 5104 25 4 v 30
w(op)g(command)h(has)f(a)g(single)h(ar)o(gument.)33 b(This)23
b(command)h(sets)g(the)f(drawing)g(function)600 5203
y(to)28 b(the)g(value)f(of)h(the)g(ar)o(gument.)46 b(When)28
b(the)g(gx)g(device)f(is)h(initialized,)h(the)e(drawing)h(function)h
(is)600 5303 y(\223copy\224.)44 b(That)27 b(is,)i(the)f(gx)f(device)g
(simply)h(copies)f(the)h(drawing)f(color)h(\(when)f(drawing)g(a)g(line)
h(or)p eop
%%Page: 53 55
53 54 bop 0 100 a Fx(Lab)20 b(8.)41 b(The)20 b(ISEM)g(Graphics)h
(Accelerator)1797 b(53)p 941 1661 7 1412 v 1356 1661
V 1768 416 1010 7 v 1768 1495 7 1080 v 2771 1495 V 1768
1502 1010 7 v 1061 305 a Fq(ISEM)1012 397 y(memory)2523
928 y(gx)2456 1019 y(device)603 565 y(0x100000)603 648
y(0x100004)603 732 y(0x100008)607 815 y(0x10000c)603
898 y(0x100010)617 1397 y(0x1007fe)p 1937 499 422 4 v
1937 1412 4 914 v 2356 1412 V 1937 1415 422 4 v 1941
915 416 4 v 1941 832 V 1941 749 V 1941 666 V 1941 583
V 2051 563 a(status)1982 650 y(command)2067 722 y(ar)o(g)17
b(1)2067 804 y(ar)o(g)g(2)2067 887 y(ar)o(g)g(3)2139
1117 y(.)2139 1150 y(.)2139 1184 y(.)2029 1386 y(ar)o(g)h(254)p
1941 1331 V 944 1414 V 944 1331 V 944 915 V 944 832 V
944 749 V 944 666 V 944 583 V 944 500 V 1152 874 789
4 v 1858 872 a Fi(-)p 1152 791 V 1858 789 a(-)p 1152
708 V 1858 706 a(-)p 1152 625 V 1858 623 a(-)p 1152 542
V 1152 540 a(\033)p 1152 1372 V 1858 1370 a(-)912 1927
y Fx(Figur)o(e)j(8.2)e(The)i(gx)g(r)o(egister/memory)g(map)585
2193 y(T)-8 b(able)21 b(8.1)e(Commands)i(pr)o(ovided)f(by)h(the)g
(graphics)f(accelerator)60 2344 y(Command)154 2444 y(value)551
2344 y(Command)645 2444 y(name)1042 2394 y(Ar)o(guments)222
b(Operation)21 b(performed)p 10 2477 3280 4 v 235 2547
a(0)274 b(open)946 b(open)21 b(the)g(device)235 2647
y(1)274 b(close)948 b(close)21 b(the)g(device)235 2746
y(2)274 b(color)307 b Fn(n)588 b Fx(set)22 b(the)g(drawing)f(color)h
(\()p Fn(n)j Fm(=)f(0)d Fx(for)h(black,)f Fn(n)k Fm(=)1680
2846 y(1)20 b Fx(for)h(white\))235 2946 y(3)274 b(gx)p
645 2946 25 4 v 30 w(op)j Fn(n)588 b Fx(set)21 b(the)g(\223drawing)f
(function\224)h(\(see)f(T)-8 b(able)20 b(8.2\))235 3045
y(4)274 b(line)355 b Fn(x)1089 3057 y Fc(1)1147 3045
y Fn(y)1188 3057 y Fc(1)1246 3045 y Fn(x)1293 3057 y
Fc(2)1351 3045 y Fn(y)1392 3057 y Fc(2)1680 3045 y Fx(draw)20
b(a)g(line)i(fr)o(om)e(pixel)g Fm(\()p Fn(x)2593 3057
y Fc(1)2631 3045 y Fn(;)14 b(y)2709 3057 y Fc(1)2746
3045 y Fm(\))21 b Fx(to)g Fm(\()p Fn(x)2971 3057 y Fc(2)3009
3045 y Fn(;)14 b(y)3087 3057 y Fc(2)3124 3045 y Fm(\))235
3145 y Fx(5)274 b(\002ll)393 b Fn(x)21 b(y)j(w)f(h)375
b Fx(\002ll)45 b(the)f(r)o(ectangle)g(with)h(upper)e(left)h(corner)1680
3244 y Fm(\()p Fn(x;)14 b(y)s Fm(\))p Fx(,)21 b(width)g
Fn(w)r Fx(,)h(and)e(height)h Fn(h)235 3344 y Fx(6)274
b(blt)394 b Fn(x)1089 3356 y Fc(1)1147 3344 y Fn(y)1188
3356 y Fc(1)1246 3344 y Fn(w)23 b(h)e(x)1444 3356 y Fc(2)1503
3344 y Fn(y)1544 3356 y Fc(2)1680 3344 y Fx(copy)31 b(the)g(r)o
(ectangle)f(with)i(upper)f(left)f(corner)1680 3444 y
Fm(\()p Fn(x)1759 3456 y Fc(1)1797 3444 y Fn(;)14 b(y)1875
3456 y Fc(1)1912 3444 y Fm(\))p Fx(,)26 b(width)f Fn(w)r
Fx(,)h(and)f(height)h Fn(h)e Fx(to)h(the)g(r)o(ect-)1680
3543 y(angle)c(with)g(upper)f(left)h(corner)f Fm(\()p
Fn(x)2808 3555 y Fc(2)2846 3543 y Fn(;)14 b(y)2924 3555
y Fc(2)2961 3543 y Fm(\))0 3905 y Fx(\002lling)25 b(a)e(r)o(ectangle\))
f(or)i(the)g(sour)o(ce)f(pixel)g(\(when)h(copying)h(a)e(r)o(ectangle\))
f(to)i(the)g(destination)g(pixel.)0 4005 y(T)-8 b(able)20
b(8.2)g(summarizes)g(the)h(other)g(drawing)g(functions)h(pr)o(ovided)d
(by)i(the)g(gx)g(device.)125 4105 y(The)h(line)h(function)g(draws)f(a)g
(line)h(fr)o(om)f(one)h(pixel)f(to)h(another)f(based)g(on)h(the)f(curr)
o(ent)g(drawing)0 4204 y(color)e(and)f(function.)25 b(This)20
b(command)g(takes)f(four)g(ar)o(guments:)25 b(two)20
b(ar)o(guments)f(to)g(specify)g(the)h(the)0 4304 y(coor)o(dinates)g
(for)h(each)f(pixel.)125 4403 y(The)31 b(\002ll)g(command)h(\002lls)f
(a)g(r)o(ectangle)f(based)g(on)i(the)f(curr)o(ent)f(drawing)h(color)h
(and)e(function.)0 4503 y(This)18 b(command)f(takes)g(four)g(ar)o
(guments:)23 b(the)18 b(\002rst)f(two)h(ar)o(guments)f(specify)g(the)g
(coor)o(dinates)g(of)g(the)0 4603 y(upper)23 b(left)h(corner)g(of)g
(the)g(r)o(ectangle,)f(the)h(thir)o(d)g(ar)o(gument)f(speci\002es)h
(the)g(width)g(of)g(the)g(r)o(ectangle,)0 4702 y(and)c(the)h(fourth)g
(ar)o(gument)f(speci\002es)h(the)g(height)h(of)e(the)h(r)o(ectangle.)
125 4802 y(The)h(blt)g(command)g(copies)h(\(subject)f(to)g(the)g
(drawing)g(function\))h(a)e(r)o(ectangle)g(fr)o(om)h(one)h(part)e(of)0
4902 y(the)27 b(gx)f(memory)i(to)e(another)-6 b(.)43
b(This)28 b(command)e(takes)h(six)g(ar)o(guments:)36
b(the)27 b(\002rst)g(four)f(ar)o(guments)0 5001 y(specify)i(the)g(sour)
o(ce)g(r)o(ectangle,)g(the)g(last)g(two)h(specify)f(the)g(upper)f(left)
h(corner)g(of)g(the)g(destination)0 5101 y(r)o(ectangle.)125
5200 y(T)-8 b(o)22 b(issue)f(a)g(gx)h(command,)g(you)g(\002rst)g(stor)o
(e)f(the)g(ar)o(guments)g(in)h(the)g(gx)g(ar)o(gument)f(r)o(egisters)f
(and)0 5300 y(then)27 b(stor)o(e)f(the)g(command)g(into)i(the)e(gx)g
(command)h(r)o(egister)-6 b(.)41 b(The)26 b(or)o(der)f(in)i(which)g
(you)f(perform)p eop
%%Page: 54 56
54 55 bop 600 100 a Fx(54)1798 b(Lab)20 b(8.)40 b(The)21
b(ISEM)f(Graphics)h(Accelerator)1027 393 y(T)-8 b(able)20
b(8.2)g(Drawing)h(operation)g(supported)f(by)h(the)g(graphics)g
(accelerator)1150 544 y(Name)367 b(V)-8 b(alue)100 b(Drawing)21
b(operation)p 1100 578 2300 4 v 1150 647 a(clear)415
b(0x0)181 b(0)1150 747 y(and)450 b(0x1)181 b(sour)o(ce)20
b(AND)h(destination)1150 847 y(andReverse)160 b(0x2)181
b(sour)o(ce)20 b(AND)h(NOT)f(destination)1150 946 y(copy)413
b(0x3)181 b(sour)o(ce)1150 1046 y(andInverted)136 b(0x4)181
b(NOT)21 b(sour)o(ce)f(AND)g(destination)1150 1145 y(noop)403
b(0x5)181 b(destination)1150 1245 y(xor)470 b(0x6)181
b(sour)o(ce)20 b(XOR)i(destination)1150 1345 y(or)513
b(0x7)181 b(sour)o(ce)20 b(OR)h(destination)1150 1444
y(nor)465 b(0x8)181 b(NOT)21 b(sour)o(ce)f(AND)g(NOT)h(destination)1150
1544 y(equiv)384 b(0x9)181 b(NOT)21 b(sour)o(ce)f(XOR)i(destination)
1150 1644 y(invert)372 b(0xa)181 b(NOT)21 b(destination)1150
1743 y(orReverse)223 b(0xb)177 b(sour)o(ce)20 b(OR)h(NOT)g(destination)
1150 1843 y(copyInverted)99 b(0xc)186 b(NOT)21 b(sour)o(ce)1150
1942 y(orInverted)199 b(0xd)172 b(NOT)21 b(sour)o(ce)f(OR)h
(destination)1150 2042 y(nand)402 b(0xe)183 b(NOT)21
b(sour)o(ce)f(OR)h(NOT)g(destination)1150 2142 y(set)489
b(0xf)195 b(1)600 2504 y(these)31 b(stor)o(es)g(is)h(critical.)56
b(Y)-8 b(ou)33 b(must)f(load)f(the)g(command)h(r)o(egister)e(after)g
(you)i(have)e(loaded)h(the)600 2603 y(ar)o(gument)19
b(r)o(egisters.)25 b(The)19 b(gx)h(device)e(r)o(eads)g(its)i(ar)o
(gument)f(r)o(egisters)g(as)g(soon)i(as)e(you)h(stor)o(e)g(a)f(value)
600 2703 y(in)i(the)g(command)g(r)o(egister)-6 b(.)725
2803 y(Symbolic)28 b(constant)i(that)e(make)g(devices,)i(like)f(the)f
(gx)h(device,)g(easier)f(to)h(use)f(ar)o(e)f(commonly)600
2902 y(de\002ned)h(in)i(header)d(\002les.)50 b(Figur)o(e)29
b(8.3)e(pr)o(esents)h(a)h(header)e(\002le)i(for)g(the)g(gx)f(device.)49
b(Example)28 b(8.1)600 3002 y(illustrates)21 b(the)g(gx)g(device)e(and)
i(a)f(use)h(of)g(the)f(gx)h(header)f(\002le.)p 600 3128
3300 4 v 600 3208 a Fs(Example)i(8.1)75 b Fr(W)o(rite)20
b(an)g(ISEM)g(pr)o(ogram)i(that)f(opens)g(the)g(gx)h(device)g(and)f
(draws)h(a)f(line)f(fr)o(om)h(the)g(upper)g(left)g(corner)600
3299 y(to)e(lower)f(right)i(corner)-6 b(.)1183 3415 y
Fo(.include)43 b("gx.h")1183 3598 y(.text)824 3689 y(main:)134
b(set)223 b(BX_BUFFER,)44 b(\045r1)447 b(!)45 b(\045r1)f(points)g(to)h
(gx)f(registers)1183 3872 y(st)268 b(\045r0,)45 b([\045r1+GX_CMD])311
b(!)45 b(open)f(display)1183 3963 y(ld)268 b([\045r1+GX_STATUS],)43
b(\045r2)178 b(!)45 b(load)f(status)g(word)824 4055 y(wait:)134
b(cmp)223 b(\045r2,)45 b(0)1183 4146 y(be)268 b(wait)896
b(!)45 b(wait)f(until)g(window)g(is)h(mapped)1183 4237
y(ld)268 b([\045r1],)44 b(\045r2)627 b(!)45 b(load)f(status)g(word)1183
4420 y(!)g(set)h(up)f(the)h(command)e(arguments)1183
4511 y(st)268 b(\045r0,)45 b([\045r1+GX_LINE_X1])131
b(!)45 b(x1)g(=)f(0)1183 4603 y(st)268 b(\045r0,)45 b
([\045r1+GX_LINE_Y1])131 b(!)45 b(y1)g(=)f(0)1183 4694
y(mov)223 b(511,)45 b(\045r2)1183 4785 y(st)268 b(\045r2,)45
b([\045r1+GX_LINE_X2])131 b(!)45 b(x2)g(=)f(511)1183
4877 y(st)268 b(\045r2,)45 b([\045r1+GX_LINE_Y2])131
b(!)45 b(y2)g(=)f(511)1183 5059 y(!)g(now,)h(issue)f(the)g(command)1183
5151 y(mov)223 b(GX_LINE,)44 b(\045r2)1183 5242 y(st)268
b(\045r2,)45 b([\045r1+GX_CMD])p eop
%%Page: 55 57
55 56 bop 0 100 a Fx(Lab)20 b(8.)41 b(The)20 b(ISEM)g(Graphics)h
(Accelerator)1797 b(55)224 459 y Fo(!)224 550 y(!)45
b(gx.h)f(--)g(symbolic)g(constants)f(for)i(the)f(gx)g(device)224
642 y(!)224 733 y(.set)g(GX_BUFFER,)402 b(0x100000)88
b(!)45 b(start)f(address)g(for)g(GX)h(registers)224 916
y(.set)f(GX_OPEN,)492 b(0)403 b(!)45 b(command)f(numbers)224
1007 y(.set)g(GX_CLOSE,)447 b(1)224 1098 y(.set)44 b(GX_COLOR,)447
b(2)224 1190 y(.set)44 b(GX_OP,)582 b(3)224 1281 y(.set)44
b(GX_LINE,)492 b(4)224 1372 y(.set)44 b(GX_FILL,)492
b(5)224 1464 y(.set)44 b(GX_BLIT,)492 b(6)224 1646 y(.set)44
b(GX_STATUS,)402 b(0)h(!)45 b(symbolic)f(buffer)f(offsets)224
1738 y(.set)h(GX_CMD,)537 b(4)224 1829 y(.set)44 b(GX_ARG,)537
b(8)224 2012 y(.set)44 b(GX_FILL_X,)402 b(8)h(!)135 b(for)44
b(fill)224 2103 y(.set)g(GX_FILL_Y,)357 b(12)224 2194
y(.set)44 b(GX_FILL_W,)357 b(16)224 2286 y(.set)44 b(GX_FILL_H,)357
b(20)224 2468 y(.set)44 b(GX_LINE_X1,)357 b(8)403 b(!)135
b(for)44 b(line)224 2560 y(.set)g(GX_LINE_Y1,)312 b(12)224
2651 y(.set)44 b(GX_LINE_X2,)312 b(16)224 2742 y(.set)44
b(GX_LINE_Y2,)312 b(20)224 2925 y(.set)44 b(GX_BLIT_X1,)357
b(8)403 b(!)135 b(for)44 b(blit)224 3016 y(.set)g(GX_BLIT_Y1,)312
b(12)224 3108 y(.set)44 b(GX_BLIT_W,)357 b(16)224 3199
y(.set)44 b(GX_BLIT_H,)357 b(20)224 3290 y(.set)44 b(GX_BLIT_X2,)312
b(24)224 3382 y(.set)44 b(GX_BLIT_Y2,)312 b(28)224 3564
y(!)45 b(drawing)e(functions)h(for)g(the)g(GX_OP)g(command)224
3656 y(.set)g(GX_CLEAR,)402 b(0x0)358 b(!)45 b(0)224
3747 y(.set)f(GX_AND,)492 b(0x1)358 b(!)45 b(source)f(AND)g
(destination)224 3838 y(.set)g(GX_AND_REVERSE,)132 b(0x2)358
b(!)45 b(source)f(AND)g(NOT)h(destination)224 3929 y(.set)f(GX_COPY,)
447 b(0x3)358 b(!)45 b(source)224 4021 y(.set)f(GX_AND_INVERTED,)87
b(0x4)358 b(!)45 b(NOT)f(source)g(AND)h(destination)224
4112 y(.set)f(GX_NOOP,)447 b(0x5)358 b(!)45 b(destination)224
4203 y(.set)f(GX_XOR,)492 b(0x6)358 b(!)45 b(source)f(XOR)g
(destination)224 4295 y(.set)g(GX_OR,)537 b(0x7)358 b(!)45
b(source)f(OR)g(destination)224 4386 y(.set)g(GX_NOR,)492
b(0x8)358 b(!)45 b(NOT)f(source)g(AND)h(NOT)f(destination)224
4477 y(.set)g(GX_EQUIV,)402 b(0x9)358 b(!)45 b(NOT)f(source)g(XOR)h
(destination)224 4569 y(.set)f(GX_INVERT,)357 b(0xa)h(!)45
b(NOT)f(destination)224 4660 y(.set)g(GX_OR_REVERSE,)177
b(0xb)358 b(!)45 b(source)f(OR)g(NOT)h(destination)224
4751 y(.set)f(GX_COPY_INVERTED,)e(0xc)358 b(!)45 b(NOT)f(source)224
4843 y(.set)g(GX_OR_INVERTED,)132 b(0xd)358 b(!)45 b(NOT)f(source)g(OR)
h(destination)224 4934 y(.set)f(GX_NAND,)447 b(0xe)358
b(!)45 b(NOT)f(source)g(OR)h(NOT)f(destination)1028 5117
y Fx(Figur)o(e)20 b(8.3)g(The)g(gx)h(header)f(\002le.)25
b(gx.h)p eop
%%Page: 56 58
56 57 bop 600 100 a Fx(56)1798 b(Lab)20 b(8.)40 b(The)21
b(ISEM)f(Graphics)h(Accelerator)1183 333 y Fo(!)44 b(all)h(done)f(--)g
(the)h(display)e(will)i(remain)e(until)h(you)h(exit)f(isem)824
424 y(end:)179 b(ta)268 b(0)p 600 453 3300 4 v 600 789
a Fu(8.4)119 b(Summary)600 1028 y(8.5)g(Review)30 b(Questions)600
1267 y(8.6)119 b(Exercises)704 1456 y Fx(1.)41 b(A)24
b(bitmap)g(is)h(r)o(ectangle)e(of)h(black)g(and)g(white)h(pixels.)37
b(In)25 b(X1)-5 b(1,)24 b(bitmaps)h(ar)o(e)e(stor)o(ed)h(r)o(ow-by-)808
1555 y(r)o(ow)j(in)h(an)g(array)e(of)i(bytes,)h(i.e.,)g(consecutive)e
(memory)i(locations.)47 b(Each)27 b(bit)h(in)g(this)g(array)808
1655 y(r)o(epr)o(esents)20 b(a)h(pixel)h(on)g(the)g(scr)o(een\2271)f
(for)g(black)h(and)f(0)h(for)f(white)h(\(the)g(inverse)g(of)g(the)g
(color)808 1755 y(convention)27 b(used)e(for)h(the)g(gx)f(device\).)40
b(Each)25 b(r)o(ow)h(of)f(the)h(bitmap)g(is)g(stor)o(ed)f(in)h(an)g
(integral)808 1854 y(number)k(of)g(bytes.)53 b(If)30
b(the)g(number)g(of)g(columns)i(is)e(not)h(a)e(multiple)i(of)f(8,)i
(the)e(last)g(byte)g(is)808 1954 y(padded)21 b(with)k(zer)o(os.)33
b(The)23 b(\002rst)h(byte)f(of)h(the)f(array)g(r)o(epr)o(esents)f(the)h
(leftmost)h(8)f(pixels)h(in)g(the)808 2054 y(top)d(r)o(ow)-8
b(.)29 b(The)21 b(next)h(byte)f(r)o(epr)o(esents)f(the)i(next)g(8)f
(pixels)g(in)i(the)e(top)h(r)o(ow)g(or)f(the)h(\002rst)g(8)f(pixels)808
2153 y(of)26 b(the)g(next)g(r)o(ow)h(if)f(ther)o(e)f(ar)o(e)g(fewer)g
(than)i(9)f(columns)h(in)g(the)f(bitmap.)42 b(W)-5 b(ithin)28
b(a)e(byte,)h(the)808 2253 y(least)20 b(signi\002cant)i(bit)f(r)o(epr)o
(esents)e(the)i(leftmost)g(pixel.)808 2352 y(As)h(an)h(example,)g
(Figur)o(e)g(8.4)f(illustrates)h(a)g(simple)g(bitmap)g(and)g(assembly)h
(language)e(decla-)808 2452 y(rations)f(for)f(the)h(X1)-5
b(1)21 b(r)o(epr)o(esentation)e(of)i(this)g(bitmap.)p
845 3239 4 665 v 928 3239 V 1011 3239 V 1094 3239 V 1177
3239 V 1260 3239 V 1343 3239 V 1426 3239 V 1510 3239
V 847 3241 665 4 v 847 3158 V 847 3075 V 847 2992 V 847
2909 V 847 2826 V 847 2743 V 847 2660 V 847 2577 V 847
2658 84 84 v 930 2741 V 1013 2824 V 1096 2907 V 1179
2990 V 1262 3073 V 1345 3156 V 1428 3239 V 1880 2965
a Fo(height:)98 b(.word)h(8)1880 3057 y(width:)143 b(.word)99
b(8)1880 3148 y(bits:)188 b(.byte)99 b(0x01,)44 b(0x02,)g(0x04,)g(0x08)
2293 3239 y(.byte)99 b(0x10,)44 b(0x20,)g(0x40,)g(0x80)1751
3505 y Fx(Figur)o(e)21 b(8.4)e(A)i(simple)g(bitmap)808
3704 y(Y)-8 b(ou)26 b(can)f(use)g(the)g(\223bitmap\224)f(pr)o(ogram)g
(under)h(X1)-5 b(1)25 b(to)h(cr)o(eate)d(bitmaps)i(and)g(save)f(their)h
(r)o(ep-)808 3804 y(r)o(esentation)d(in)h(a)f(\002le.)31
b(When)23 b(you)h(save)e(a)g(bitmap,)g(the)h(bitmap)g(pr)o(ogram)f
(generates)g(C)g(dec-)808 3903 y(larations)32 b(for)h(the)f(bitmap.)61
b(Y)-8 b(ou)34 b(can)e(easily)h(convert)g(these)f(declarations)g(into)i
(assembly)808 4003 y(language)20 b(declarations.)808
4103 y(W)-6 b(rite)20 b(a)g(pr)o(ogram)f(to)i(draw)f(a)g(bitmap)g(on)i
(the)e(gx)h(display)-9 b(.)25 b(The)20 b(gx)h(device)e(does)i(not)g(pr)
o(ovide)808 4202 y(a)j(simple)h(way)f(to)h(copy)g(bytes)f(fr)o(om)g
(standar)o(d)f(memory)i(to)g(the)g(device)e(memory)-9
b(.)38 b(Y)-8 b(ou)25 b(will)808 4302 y(need)31 b(to)i(\223draw\224)d
(the)j(bitmap)f(into)h(the)f(display)g(memory)-9 b(,)35
b(using)e(GX)p 3218 4302 25 4 v 31 w(LINE)f(commands.)808
4402 y(Y)-8 b(our)25 b(pr)o(ogram)e(should)i(draw)f(the)g(bitmap)g
(with)h(its)g(upper)e(left)h(corner)g(at)g(position)i(\(0,0\))c(of)808
4501 y(the)30 b(display)-9 b(.)54 b(Y)-8 b(ou)31 b(can)f(test)g(your)h
(pr)o(ogram)f(with)h(the)f(bitmap)g(shown)i(in)f(Figur)o(e)f(8.4,)h
(but)808 4601 y(make)f(sur)o(e)g(you)i(can)e(also)h(display)g(bitmaps)g
(with)g(widths)h(that)e(ar)o(e)g(not)h(a)g(multiple)g(of)g(8.)808
4701 y(Figur)o(e)20 b(8.5)f(gives)i(you)h(another)f(bitmap)f(to)h
(display)-9 b(.)p eop
%%Page: 57 59
57 58 bop 0 100 a Fx(Lab)20 b(8.)41 b(The)20 b(ISEM)g(Graphics)h
(Accelerator)1797 b(57)116 2369 y Fo(width:)143 b(.word)99
b(31)116 2460 y(height:)f(.word)h(13)116 2552 y(bits:)188
b(.byte)99 b(0x00,)44 b(0x00,)g(0x00,)g(0x00,)g(0x7e,)g(0xbf,)g(0xdf,)g
(0x18,)g(0x7e)529 2643 y(.byte)99 b(0xbf,)44 b(0xdf,)g(0x1d,)g(0x18,)g
(0x83,)g(0xc1,)g(0x1f,)g(0x18,)g(0x83)529 2734 y(.byte)99
b(0xc1,)44 b(0x1f,)g(0x18,)g(0xbf,)g(0xc7,)g(0x1a,)g(0x18,)g(0xbf,)g
(0xc7)529 2826 y(.byte)99 b(0x18,)44 b(0x18,)g(0xb0,)g(0xc1,)g(0x18,)g
(0x18,)g(0xb0,)g(0xc1,)g(0x18)529 2917 y(.byte)99 b(0x7e,)44
b(0xbf,)g(0xdf,)g(0x18,)g(0x7e,)g(0xbf,)g(0xdf,)g(0x18,)g(0x00)529
3008 y(.byte)99 b(0x00,)44 b(0x00,)g(0x00,)g(0x00,)g(0x00,)g(0x00,)g
(0x00)1151 3271 y Fx(Figur)o(e)21 b(8.5)e(A)i(simple)g(bitmap)p
eop
%%Page: 58 60
58 59 bop 600 100 a Fx(58)1798 b(Lab)20 b(8.)40 b(The)21
b(ISEM)f(Graphics)h(Accelerator)p eop
%%Page: 59 61
59 60 bop 0 474 3300 12 v 0 723 a Fv(Laboratory)53 b(9)0
976 y(The)f(SP)-15 b(ARC)52 b(Instruction)f(Formats)p
0 1092 1200 12 v 0 1449 a Fu(9.1)119 b(Goal)0 1638 y
Fx(T)-8 b(o)21 b(cover)g(the)g(instr)o(uction)h(encoding)f(and)g
(decoding)g(for)f(the)h(SP)-8 b(ARC.)0 1924 y Fu(9.2)119
b(Objectives)0 2113 y Fx(After)20 b(completing)h(this)h(lab,)e(you)h
(will)h(be)e(able)g(to:)125 2296 y Ft(\017)41 b Fx(Hand)20
b(assemble)h(SP)-8 b(ARC)20 b(assembly)h(language)g(instr)o(uctions,)h
(and)125 2396 y Ft(\017)41 b Fx(Hand)20 b(disassemble)h(SP)-8
b(ARC)20 b(machine)h(language)g(instr)o(uctions.)0 2681
y Fu(9.3)119 b(Discussion)0 2870 y Fx(In)21 b(this)h(lab)f(we)g
(consider)g(instr)o(uction)i(encoding)e(and)g(decoding)g(for)g(the)g
(operations)g(that)g(we)g(have)0 2970 y(intr)o(oduced)f(in)i(pr)o
(evious)f(labs.)26 b(In)21 b(particular)-6 b(,)20 b(we)h(will)h
(consider)f(encodings)h(for)f(instr)o(uctions)i(that)0
3070 y(use)k(the)f(data)g(manipulation)h(and)f(branching)h(operations.)
44 b(After)25 b(we)i(intr)o(oduce)f(instr)o(uction)i(en-)0
3169 y(coding,)f(we)f(consider)g(the)g(translation)g(of)f(synthetic)i
(operations.)40 b(Finally)-9 b(,)28 b(we)d(conclude)h(this)g(lab)0
3269 y(by)21 b(considering)g(instr)o(uction)i(decoding)e(on)g(the)g(SP)
-8 b(ARC.)125 3369 y(All)29 b(SP)-8 b(ARC)30 b(instr)o(uctions)i(ar)o
(e)d(encoded)g(in)i(a)e(single)i(32-bit)d(instr)o(uction)k(wor)o(d,)g
(ther)o(e)d(ar)o(e)f(no)0 3468 y(extension)22 b(wor)o(ds.)0
3711 y Fp(9.3.1)99 b(Encoding)25 b(load)h(and)e(store)h(instructions)0
3869 y Fx(The)g(SP)-8 b(ARC)26 b(machine)g(language)f(uses)g(two)h(dif)
o(fer)o(ent)e(formats)h(for)g(load)g(and)g(stor)o(e)g(instr)o(uctions.)
0 3969 y(These)18 b(formats)h(ar)o(e)d(shown)k(in)f(Figur)o(e)f(9.1.)24
b(The)18 b(\002rst)h(format)f(is)g(used)g(for)h(instr)o(uctions)h(that)
e(use)h(one)0 4068 y(or)f(two)h(r)o(egisters)f(in)h(the)f(ef)o(fective)
f(addr)o(ess.)23 b(The)18 b(second)h(format)f(is)g(used)g(for)h(instr)o
(uctions)h(that)e(use)0 4168 y(an)j(integer)f(constant)i(in)f(the)g(ef)
o(fective)e(addr)o(ess.)125 4268 y(In)f(the)g(\002rst)h(format)f(the)g
(32-bit)f(instr)o(uction)j(is)e(divided)g(into)h(seven)f(\002elds.)25
b(The)18 b(\002rst)g(\002eld)g(\(r)o(ead-)0 4367 y(ing)g(fr)o(om)f(the)
h(left\))e(holds)i(the)g(2-bit)f(value)f(1)-5 b(1,)18
b(while)g(the)f(\002fth)h(\002eld)f(\(bit)g(13\))g(holds)h(the)f(1-bit)
g(value)g(0.)0 4467 y(These)i(bits)g(ar)o(e)e(the)i(same)f(for)h(all)f
(load)h(and)f(stor)o(e)g(instr)o(uctions)j(that)e(use)f(two)i(sour)o
(ce)e(r)o(egisters.)24 b(The)0 4566 y(sixth)19 b(\002eld)f(\(bits)h(5)e
(thr)o(ough)i(12\))e(holds)j(the)e(addr)o(ess)f(space)g(indicator)-6
b(,)19 b Fw(asi)p Fx(.)25 b(For)18 b(the)h(pr)o(esent,)f(we)g(will)0
4666 y(always)25 b(set)g(the)g Fw(asi)g Fx(\002eld)g(to)h(zer)o(o.)37
b(The)25 b(r)o(emaining)g(\002elds,)h Fw(rd)p Fx(,)g
Fw(op)2185 4678 y Fc(3)2222 4666 y Fx(,)f Fw(rs)2332
4678 y Fc(1)2370 4666 y Fx(,)h(and)f Fw(rs)2647 4678
y Fc(2)2685 4666 y Fx(,)h(hold)f(encodings)0 4766 y(for)c(the)f
(destination)i(r)o(egister)-6 b(,)19 b(the)i(operation,)g(and)f(the)h
(two)h(sour)o(ce)e(r)o(egisters,)g(r)o(espectively)-9
b(.)125 4865 y(Registers)23 b(ar)o(e)e(encoded)h(using)i(the)f(5-bit)f
(binary)g(r)o(epr)o(esentation)g(of)g(the)h(r)o(egister)f(number)-6
b(.)32 b(T)-8 b(a-)0 4965 y(ble)21 b(9.1)e(summarizes)i(the)g
(operation)g(encodings)g(for)g(the)g(load)f(and)g(stor)o(e)h
(operations.)p 0 5091 3300 4 v 0 5171 a Fs(Example)e(9.1)94
b Fr(Hand)19 b(assemble)g(the)g(instruction:)224 5262
y Fo(ldd)224 b([\045r4+\045r7],)43 b(\045r11)1608 5560
y Fx(59)p eop
%%Page: 60 62
60 61 bop 600 100 a Fx(60)1783 b(Lab)20 b(9.)41 b(The)21
b(SP)-8 b(ARC)20 b(Instr)o(uction)j(Formats)1053 314
y Fq(A.)c(Instr)o(uctions)g(of)g(the)g(form:)72 b(op)99
b([rs)2293 322 y Ff(1)2327 314 y Fq(+rs)2434 322 y Ff(2)2468
314 y Fq(],)18 b(r)o(d)99 b(\(load)18 b(instr)o(uctions\))h(or)2021
405 y(op)99 b(r)o(d,)17 b([rs)2404 413 y Ff(1)2438 405
y Fq(+rs)2545 413 y Ff(2)2579 405 y Fq(])100 b(\(stor)o(e)17
b(instr)o(uctions\))p 653 590 3195 4 v 653 690 4 100
v 3844 690 V 653 693 3195 4 v 673 563 a Fh(31)772 562
y(30)34 b(29)332 b(25)1370 563 y(24)432 b(19)34 b(18)332
b(14)34 b(13)f(12)3279 562 y(5)3379 563 y(4)3778 562
y(0)720 666 y Fq(1)l(1)1067 667 y(r)o(d)1592 647 y(op)1678
655 y Ff(3)2152 653 y Fq(rs)2214 661 y Ff(1)2480 665
y Fq(0)385 b(asi)3547 653 y(rs)3609 661 y Ff(2)p 854
690 4 100 v 1352 690 V 1949 690 V 2448 690 V 2547 690
V 3344 690 V 961 881 a Fq(B.)18 b(Instr)o(uctions)i(of)e(the)i(form:)71
b(op)100 b([rs)2189 889 y Ff(1)2222 881 y Fq(+siconst)2494
889 y Ff(13)2560 881 y Fq(],)18 b(r)o(d)98 b(\(load)18
b(instr)o(uctions\))i(or)1916 972 y(op)100 b(r)o(d,)17
b([rs)2300 980 y Ff(1)2334 972 y Fq(+siconst)2606 980
y Ff(13)2671 972 y Fq(])99 b(\(stor)o(e)18 b(instr)o(uctions\))p
653 1132 3195 4 v 653 1232 4 100 v 3844 1232 V 653 1235
3195 4 v 673 1105 a Fh(31)772 1104 y(30)34 b(29)332 b(25)1370
1106 y(24)1868 1105 y(19)34 b(18)2366 1106 y(14)2466
1105 y(13)2565 1106 y(12)3778 1104 y(0)720 1208 y Fq(1)l(1)1067
1209 y(r)o(d)1592 1189 y(op)1678 1197 y Ff(3)2152 1195
y Fq(rs)2214 1203 y Ff(1)2480 1208 y Fq(1)3050 1203 y(siconst)3277
1211 y Ff(13)p 854 1232 4 100 v 1352 1232 V 1949 1232
V 2448 1232 V 2547 1232 V 1143 1497 a Fx(Figur)o(e)21
b(9.1)e(Instr)o(uction)j(formats)f(for)g(load)f(and)g(stor)o(e)h(instr)
o(uctions)1087 1764 y(T)-8 b(able)21 b(9.1)e(Operation)i(encodings)h
(for)e(the)h(load)g(and)f(stor)o(e)g(operations)1540
1909 y Fq(Operation)99 b(op)2062 1917 y Ff(3)2300 1909
y Fq(Operation)g(op)2822 1917 y Ff(3)p 1490 1940 1521
4 v 1540 2004 a Fq(ld)368 b(000000)102 b(st)380 b(000100)1540
2095 y(ldub)282 b(000001)102 b(stb)339 b(000101)1540
2187 y(lduh)280 b(000010)102 b(sth)337 b(0001)l(10)1540
2278 y(ldd)322 b(00001)l(1)106 b(std)334 b(0001)l(1)l(1)1540
2369 y(ldsb)295 b(001001)1540 2461 y(ldsh)e(001010)600
2820 y(Because)23 b(this)g(instr)o(uction)h(uses)e(two)i(r)o(egisters)d
(in)i(the)h(addr)o(ess)d(speci\002cation,)j(it)g(is)e(encoded)h(using)f
(the)i(\002rst)600 2912 y(format)18 b(shown)g(in)g(Figur)o(e)e(9.1.)23
b(As)18 b(such,)g(we)g(must)g(determine)e(the)j(values)f(for)f(the)h
Fr(rd)p Fq(,)g Fr(op)3245 2920 y Ff(3)3280 2912 y Fq(,)g
Fr(rs)3375 2920 y Ff(1)3410 2912 y Fq(,)f(and)i Fr(rs)3649
2920 y Ff(2)3701 2912 y Fq(\002elds.)600 3003 y(The)g(following)e
(table)j(summarizes)e(these)g(encodings:)799 3096 y(Field)98
b(Symbolic)19 b(value)99 b(Encoded)18 b(value)p 749 3127
1463 4 v 799 3191 a(r)o(d)191 b(\045r1)l(1)443 b(0101)l(1)799
3282 y(op)885 3290 y Ff(3)1065 3282 y Fq(ldd)492 b(00001)l(1)799
3373 y(rs)861 3381 y Ff(1)1065 3373 y Fq(\045r4)476 b(00100)799
3465 y(rs)861 3473 y Ff(2)1065 3465 y Fq(\045r7)g(001)l(1)l(1)600
3555 y(These)18 b(encodings)g(lead)g(to)h(the)h(following)d(machine)j
(instr)o(uction:)p 746 3667 2664 4 v 746 3750 4 84 v
3406 3750 V 746 3753 2664 4 v 758 3648 a Fh(31)d(30)g(29)266
b(25)1339 3649 y(24)1754 3648 y(19)17 b(18)2169 3649
y(14)2252 3648 y(13)2335 3649 y(12)2933 3648 y(5)3016
3649 y(4)3348 3648 y(0)797 3735 y Fq(1)l(1)1032 3734
y(0101)l(1)257 b(00001)l(1)e(00100)139 b(0)206 b(00000000)303
b(001)l(1)l(1)p 914 3750 4 84 v 1329 3750 V 1827 3750
V 2242 3750 V 2325 3750 V 2989 3750 V 600 3842 a(That)20
b(is,)d(1)l(101)j(01)l(10)g(0001)h(1001)f(0000)g(0000)g(0000)g(01)l(1)l
(1)g(in)f(binary)-8 b(,)18 b(or)g(0xD6190007.)p 600 3891
3300 4 v 725 4040 a Fx(If)h(the)g(assembly)h(language)f(instr)o(uction)
i(only)g(uses)e(a)g(single)i(r)o(egister)d(in)i(the)g(addr)o(ess)e
(speci\002ca-)600 4140 y(tion)k(\(e.g.,)e(r)o(egister)h(indir)o(ect)g
(addr)o(essing\),)e(the)j(r)o(egister)e(is)i(encoded)f(in)h(one)f(of)h
(the)f(sour)o(ce)g(r)o(egister)600 4240 y(\002elds)g(\(i.e.,)f
Fw(sr)1060 4252 y Fc(1)1118 4240 y Fx(or)h Fw(sr)1281
4252 y Fc(2)1319 4240 y Fx(\))f(while)i(\045r0)e(is)h(encoded)f(in)i
(the)f(other)-6 b(.)25 b(It)c(doesn't)h(matter)e(which)i(\002eld)e
(holds)600 4339 y(the)27 b(r)o(egister)f(speci\002ed)h(in)g(the)g
(assembly)g(language)g(instr)o(uction)h(and)f(which)h(\002eld)f(holds)g
(the)g(en-)600 4439 y(coding)21 b(for)g(\045r0.)j(However)-6
b(,)21 b Fw(isem-as)f Fx(encodes)h(\045r0)f(in)h Fw(sr)2476
4451 y Fc(2)2514 4439 y Fx(.)p 600 4565 V 600 4645 a
Fs(Example)e(9.2)94 b Fr(Hand)19 b(assemble)g(the)g(instruction:)824
4736 y Fo(ldub)224 b([\045r23],)43 b(\045r19)600 4852
y Fq(Because)16 b(this)i(instr)o(uction)f(uses)f(r)o(egisters)e(in)j
(the)h(addr)o(ess)d(speci\002cation,)i(it)g(is)f(encoded)h(using)f(the)
h(\002rst)g(format)600 4944 y(shown)23 b(in)f(Figur)o(e)e(9.1.)33
b(As)21 b(such,)i(we)f(must)g(determine)f(the)i(values)f(for)f(the)i
Fr(rd)p Fq(,)f Fr(op)3069 4952 y Ff(3)3104 4944 y Fq(,)h
Fr(rs)3204 4952 y Ff(1)3239 4944 y Fq(,)f(and)h Fr(rs)3487
4952 y Ff(2)3543 4944 y Fq(\002elds.)32 b(The)600 5035
y(following)18 b(table)h(summarizes)f(these)h(encodings:)p
eop
%%Page: 61 63
61 62 bop 0 100 a Fx(Lab)20 b(9.)41 b(The)20 b(SP)-8
b(ARC)21 b(Instr)o(uction)h(Formats)1785 b(61)199 314
y Fq(Field)98 b(Symbolic)19 b(value)99 b(Encoded)18 b(value)p
149 344 1463 4 v 199 408 a(r)o(d)191 b(\045r19)439 b(1001)l(1)199
500 y(op)285 508 y Ff(3)465 500 y Fq(ldub)452 b(000001)199
591 y(rs)261 599 y Ff(1)465 591 y Fq(\045r23)439 b(101)l(1)l(1)199
682 y(rs)261 690 y Ff(2)465 682 y Fq(\045r0)476 b(00000)0
772 y(These)18 b(encodings)g(lead)g(to)h(the)h(following)d(machine)j
(instr)o(uction:)p 146 885 2664 4 v 146 968 4 84 v 2806
968 V 146 971 2664 4 v 158 866 a Fh(31)241 865 y(30)d(29)266
b(25)739 866 y(24)349 b(19)17 b(18)266 b(14)17 b(13)g(12)2333
865 y(5)2416 866 y(4)2748 865 y(0)197 952 y Fq(1)l(1)432
951 y(1001)l(1)255 b(000001)i(101)l(1)l(1)143 b(0)206
b(00000000)299 b(00000)p 314 968 4 84 v 729 968 V 1227
968 V 1642 968 V 1725 968 V 2389 968 V 0 1059 a(That)20
b(is,)d(1)l(1)l(10)j(01)l(10)g(0000)h(1)l(101)f(1)l(100)g(0000)g(0000)g
(0000)g(in)f(binary)-8 b(,)18 b(or)g(0xE60DC000.)p 0
1108 3300 4 v 125 1258 a Fx(In)k(the)g(second)g(format)f(the)h(32-bit)f
(instr)o(uction)i(is)f(divided)f(into)i(six)f(\002elds.)29
b(As)21 b(in)h(the)g(pr)o(evious)0 1357 y(format,)29
b(the)e(\002rst)h(\002eld)f(holds)h(the)g(2-bit)f(value)g(1)-5
b(1.)45 b(However)-6 b(,)28 b(unlike)h(the)e(pr)o(evious)g(format,)i
(the)0 1457 y(\002fth)j(\002eld)f(holds)h(the)f(1-bit)g(value)g(1.)56
b(The)32 b(r)o(emaining)f(\002elds,)j Fw(rd)p Fx(,)f
Fw(op)2354 1469 y Fc(3)2391 1457 y Fx(,)h Fw(rs)2510
1469 y Fc(1)2548 1457 y Fx(,)f(and)e Fw(siconst)3006
1469 y Fc(13)3077 1457 y Fx(,)i(hold)0 1557 y(encodings)26
b(for)e(the)h(destination)h(r)o(egister)-6 b(,)25 b(the)g(operation,)h
(the)f(sour)o(ce)f(r)o(egister)-6 b(,)25 b(and)f(the)h(constant)0
1656 y(value,)30 b(r)o(espectively)-9 b(.)47 b(When)29
b(this)g(format)f(is)h(used,)h(the)e(integer)h(constant)g(is)g(encoded)
f(using)h(the)0 1756 y(13-bit)20 b(2's)g(complement)i(r)o(epr)o
(esentation)d(and)h(stor)o(ed)h(in)g(the)g Fw(siconst)2250
1768 y Fc(13)2341 1756 y Fx(\002eld)g(of)f(the)h(instr)o(uction.)0
1999 y Fp(9.3.2)99 b(Encoding)25 b(sethi)h(instructions)0
2157 y Fx(The)d(format)f(used)g(to)h(encode)g(sethi)g(instr)o(uctions)i
(is)e(shown)h(in)f(Figur)o(e)f(9.2.)30 b(Sethi)23 b(instr)o(uctions)h
(ar)o(e)0 2256 y(encoded)e(in)h(four)g(\002elds.)31 b(The)22
b(\002rst)h(\002eld)g(holds)g(the)g(2-bit)f(value)g(00.)30
b(The)23 b(next)f(\002eld,)h Fw(rd)p Fx(,)f(holds)i(the)0
2356 y(5-bit)17 b(encoding)i(of)f(the)g(destination)g(r)o(egister)-6
b(.)24 b(The)18 b(thir)o(d)f(\002eld)h(holds)g(the)g(3-bit)g(value)f
(100.)23 b(The)18 b(\002nal)0 2456 y(\002led)j(holds)g(the)g(22-bit)f
(binary)g(encoding)i(of)e(the)h(value)f(speci\002ed)h(in)g(the)g(instr)
o(uction.)p 53 2678 3195 4 v 53 2778 4 100 v 3244 2778
V 53 2781 3195 4 v 73 2651 a Fh(31)172 2650 y(30)34 b(29)332
b(25)770 2652 y(24)1069 2651 y(22)1168 2652 y(21)3178
2650 y(0)118 2753 y Fq(00)467 2755 y(r)o(d)897 2753 y(100)2079
2747 y(const)2252 2755 y Ff(22)p 254 2778 4 100 v 752
2778 V 1150 2778 V 735 3044 a Fx(Figur)o(e)20 b(9.2)g(Instr)o(uction)i
(format)e(for)h(sethi)g(instr)o(uctions)p 0 3270 3300
4 v 0 3349 a Fs(Example)e(9.3)94 b Fr(Hand)19 b(assemble)g(the)g
(instruction:)224 3441 y Fo(sethi)134 b(\045hi\(0x87654321\),)42
b(\045r2)0 3557 y Fq(This)22 b(instr)o(uction)h(is)f(encoded)g(using)g
(the)h(format)f(shown)i(in)e(Figur)o(e)f(9.2.)34 b(As)22
b(such,)i(we)e(need)h(to)f(determined)0 3648 y(the)d(values)g(for)f
(the)h Fr(rd)g Fq(and)g Fr(const)980 3656 y Ff(22)1064
3648 y Fq(\002elds.)j(The)d(following)f(table)h(summarizes)f(these)g
(encodings:)199 3741 y(Field)170 b(Symbolic)19 b(value)146
b(Encoded)17 b(value)p 149 3772 1993 4 v 199 3836 a(r)o(d)263
b(\045r2)523 b(00010)199 3927 y(const)372 3935 y Ff(22)537
3927 y Fq(\045hi\(0x87654321\))103 b(1000)20 b(01)l(1)l(1)g(01)l(10)g
(0101)g(0100)g(00)0 4018 y(These)e(encodings)g(lead)g(to)h(the)h
(following)d(machine)j(instr)o(uction:)p 146 4130 2664
4 v 146 4213 4 84 v 2806 4213 V 146 4216 2664 4 v 158
4111 a Fh(31)241 4110 y(30)d(29)266 b(25)739 4112 y(24)988
4111 y(22)1071 4112 y(21)2748 4110 y(0)195 4196 y Fq(00)430
4197 y(00010)226 b(100)531 b(1000)20 b(01)l(1)l(1)g(01)l(10)g(0101)g
(0100)g(00)p 314 4213 4 84 v 729 4213 V 1061 4213 V 0
4304 a(That)g(is,)d(0000)k(0101)f(0010)g(0001)g(1)l(101)g(1001)g(0101)g
(0000)g(in)f(binary)-8 b(,)18 b(or)g(0x0521D950.)p 0
4354 3300 4 v 0 4646 a Fp(9.3.3)99 b(Encoding)25 b(integer)g(data)g
(manipulation)g(instructions)0 4804 y Fx(Data)h(manipulation)h(instr)o
(uctions)i(ar)o(e)c(encoded)h(using)i(two)f(formats:)37
b(one)27 b(for)g(instr)o(uctions)h(that)0 4904 y(use)21
b(two)h(sour)o(ce)e(r)o(egisters)g(and)h(another)g(for)g(instr)o
(uctions)i(that)e(use)g(a)f(sour)o(ce)g(r)o(egister)h(and)f(a)h(small)0
5003 y(integer)26 b(constant.)41 b(The)26 b(formats)f(used)h(for)g
(integer)f(data)g(manipulation)i(instr)o(uctions)g(ar)o(e)e(shown)0
5103 y(in)c(Figur)o(e)g(9.3)125 5203 y(In)d(the)g(\002rst)h(format)f
(the)g(32-bit)f(instr)o(uction)j(is)e(divided)g(into)h(seven)f
(\002elds.)25 b(The)18 b(\002rst)g(\002eld)g(\(r)o(ead-)0
5302 y(ing)g(fr)o(om)f(the)g(left\))f(holds)i(the)f(2-bit)g(value)g
(10,)f(while)i(the)f(\002fth)h(\002eld)f(\(bit)g(13\))f(holds)h(the)h
(1-bit)e(value)h(0.)p eop
%%Page: 62 64
62 63 bop 600 100 a Fx(62)1783 b(Lab)20 b(9.)41 b(The)21
b(SP)-8 b(ARC)20 b(Instr)o(uction)j(Formats)1560 304
y Fq(A.)18 b(Instr)o(uctions)i(of)e(the)h(form:)j(op)37
b(rs)2662 312 y Ff(1)2696 304 y Fq(,)19 b(rs)2796 312
y Ff(2)2829 304 y Fq(,)g(r)o(d)p 653 433 3195 4 v 653
533 4 100 v 3844 533 V 653 536 3195 4 v 673 406 a Fh(31)772
405 y(30)34 b(29)332 b(25)1370 406 y(24)432 b(19)34 b(18)332
b(14)34 b(13)f(12)3279 405 y(5)3379 406 y(4)3778 405
y(0)718 508 y Fq(10)1067 510 y(r)o(d)1592 490 y(op)1678
498 y Ff(3)2152 496 y Fq(rs)2214 504 y Ff(1)2480 508
y Fq(0)2728 502 y(unused\(zer)o(o\))3547 496 y(rs)3609
504 y Ff(2)p 854 533 4 100 v 1352 533 V 1949 533 V 2448
533 V 2547 533 V 3344 533 V 1458 749 a Fq(B.)18 b(Instr)o(uctions)i(of)
e(the)i(form:)i(op)37 b(rs)2549 757 y Ff(1)2582 749 y
Fq(,)19 b(siconst)2847 757 y Ff(13)2912 749 y Fq(,)f(r)o(d)p
653 902 3195 4 v 653 1002 4 100 v 3844 1002 V 653 1005
3195 4 v 673 875 a Fh(31)33 b(30)h(29)332 b(25)1370 876
y(24)1868 875 y(19)34 b(18)2366 876 y(14)2466 875 y(13)2565
876 y(12)3778 875 y(0)718 978 y Fq(10)1067 979 y(r)o(d)1592
959 y(op)1678 967 y Ff(3)2152 966 y Fq(rs)2214 974 y
Ff(1)2480 978 y Fq(1)3050 974 y(siconst)3277 982 y Ff(13)p
854 1002 4 100 v 1352 1002 V 1949 1002 V 2448 1002 V
2547 1002 V 1065 1268 a Fx(Figur)o(e)20 b(9.3)g(Instr)o(uction)i
(formats)f(for)f(data)g(manipulation)h(instr)o(uctions)600
1540 y(These)e(bits)g(ar)o(e)f(the)h(same)g(for)g(all)g(data)f
(manipulation)i(instr)o(uctions)g(that)f(use)h(two)f(sour)o(ce)g(r)o
(egisters.)600 1640 y(The)i(sixth)g(\002eld)f(\(bits)h(5)f(thr)o(ough)h
(12\))e(is)i(unused-the)f(bits)h(in)g(this)g(\002eld)g(must)g(be)f(zer)
o(o.)k(The)d(r)o(emain-)600 1739 y(ing)28 b(\002elds,)g
Fw(rd)p Fx(,)g Fw(op)1197 1751 y Fc(3)1234 1739 y Fx(,)g
Fw(rs)1347 1751 y Fc(1)1385 1739 y Fx(,)g(and)f Fw(rs)1666
1751 y Fc(2)1703 1739 y Fx(,)i(hold)e(encodings)h(for)f(the)g
(destination)h(r)o(egister)-6 b(,)27 b(the)g(operation,)600
1839 y(and)20 b(the)h(two)h(sour)o(ce)e(r)o(egisters,)g(r)o
(espectively)725 1939 y(In)i(the)g(second)g(format)f(the)h(32-bit)f
(instr)o(uction)i(is)f(divided)f(into)i(six)f(\002elds.)29
b(As)21 b(in)h(the)g(pr)o(evious)600 2038 y(format,)32
b(the)e(\002rst)h(\002eld)f(holds)h(the)f(\002rst)g(\002eld)g(holds)h
(the)f(2-bit)g(value)f(01.)53 b(However)-6 b(,)32 b(unlike)f(the)600
2138 y(pr)o(evious)c(format,)h(the)g(\002fth)g(\002eld)f(holds)h(the)f
(1-bit)g(value)g(1.)45 b(The)27 b(r)o(emaining)h(\002elds,)g
Fw(rd)p Fx(,)h Fw(op)3691 2150 y Fc(3)3728 2138 y Fx(,)f
Fw(rs)3841 2150 y Fc(1)3879 2138 y Fx(,)600 2238 y(and)19
b Fw(siconst)992 2250 y Fc(13)1063 2238 y Fx(,)g(hold)h(encodings)g
(for)g(the)f(destination)i(r)o(egister)-6 b(,)18 b(the)i(operation,)f
(the)h(sour)o(ce)f(r)o(egister)-6 b(,)600 2337 y(and)32
b(the)h(constant)g(value,)i(r)o(espectively)-9 b(.)60
b(When)33 b(this)g(format)g(is)g(used,)i(the)e(integer)f(constant)i(is)
600 2437 y(encoded)21 b(using)h(the)g(13-bit)e(2's)h(complement)h(r)o
(epr)o(esentation)e(and)h(stor)o(ed)g(in)h(the)f Fw(siconst)3549
2449 y Fc(13)3641 2437 y Fx(\002eld)g(of)600 2536 y(the)g(instr)o
(uction.)725 2636 y(Recall)29 b(that)h(a)g(SP)-8 b(ARC)29
b(assembly)h(language)g(instr)o(uction)h(begins)g(with)f(the)h(name)e
(of)h(the)g(op-)600 2736 y(eration,)i(followed)f(by)f(the)h(two)g(sour)
o(ce)e(operands,)j(followed)f(by)f(the)h(destination)f(operand.)54
b(In)600 2835 y(considering)21 b(the)e(translation)i(fr)o(om)e(an)g
(assembly)h(language)g(instr)o(uction)h(into)g(machine)f(language,)600
2935 y(ther)o(e)g(ar)o(e)f(a)i(few)f(points)i(to)f(keep)f(in)h(mind:)
725 3101 y Ft(\017)41 b Fx(The)20 b(operation)h(is)g(encoded)g(in)g
(the)g Fw(op)2063 3113 y Fc(3)2120 3101 y Fx(\002eld.)725
3201 y Ft(\017)41 b Fx(The)20 b(\002rst)h(sour)o(ce)g(operand)f(must)h
(be)g(a)f(r)o(egister)g(and)g(it)h(is)g(encoded)f(in)i(the)f
Fw(rs)3333 3213 y Fc(1)3391 3201 y Fx(\002eld.)725 3300
y Ft(\017)41 b Fx(The)19 b(second)h(sour)o(ce)f(operand)g(can)g(be)h(a)
f(r)o(egister)f(or)i(a)f(constant)i(value.)j(If)19 b(it)h(is)g(a)f(r)o
(egister)-6 b(,)19 b(it)h(is)808 3400 y(encoded)g(in)h(the)g
Fw(rs)1433 3412 y Fc(2)1492 3400 y Fx(\002eld;)f(otherwise,)h(it)g(is)g
(encoded)f(in)i(the)f Fw(siconst)3047 3412 y Fc(13)3138
3400 y Fx(\002eld.)725 3500 y Ft(\017)41 b Fx(The)20
b(destination)i(r)o(egister)e(is)h(encoded)f(in)h(the)g
Fw(rd)g Fx(\002eld.)725 3666 y(T)-8 b(able)31 b(9.2)f(summarizes)i(the)
g(operation)g(encodings)g(for)g(the)g(data)e(manipulation)j(operations)
600 3765 y(that)23 b(we)g(have)g(cover)o(ed)f(in)h(the)h(pr)o(evious)e
(labs.)33 b(When)23 b(an)g(instr)o(uction)i(using)f(one)g(of)f(these)g
(opera-)600 3865 y(tions)18 b(is)f(encoded,)g(the)g(operator)f
(encoding)h(is)g(placed)f(in)h(the)g(op)2694 3877 y Fc(3)2748
3865 y Fx(\002eld)g(of)g(the)g(machine)g(instr)o(uction.)p
600 3991 3300 4 v 600 4071 a Fs(Example)i(9.4)94 b Fr(Hand)19
b(Assemble)f(the)h(following)f(SP)-10 b(ARC)18 b(instructions.)824
4162 y Fo(sub)224 b(\045r27,)44 b(\045r16,)g(\045r26)600
4278 y Fq(Because)20 b(this)h(instr)o(uction)h(uses)e(two)h(sour)o(ce)f
(r)o(egisters,)e(it)j(is)f(encoded)g(using)g(the)i(\002rst)e(format)h
(shown)g(in)g(Fig-)600 4370 y(ur)o(e)c(9.3.)23 b(As)18
b(such,)g(we)h(must)f(determine)f(the)i(values)f(for)f(the)i
Fr(op)2477 4378 y Ff(3)2512 4370 y Fq(,)f Fr(rd)p Fq(,)g
Fr(rs)2710 4378 y Ff(1)2745 4370 y Fq(,)g(and)g Fr(rs)2984
4378 y Ff(2)3037 4370 y Fq(\002elds.)k(The)c(following)f(table)600
4461 y(summarizes)h(these)h(encodings:)799 4554 y(Field)98
b(Symbolic)19 b(value)99 b(Encoded)18 b(value)p 749 4585
1463 4 v 799 4649 a(r)o(d)191 b(\045r27)439 b(1)l(101)l(1)799
4740 y(op)885 4748 y Ff(3)1065 4740 y Fq(sub)488 b(000100)799
4832 y(rs)861 4840 y Ff(1)1065 4832 y Fq(\045r16)439
b(10000)799 4923 y(rs)861 4931 y Ff(2)1065 4923 y Fq(\045r26)g(1)l
(1010)600 5013 y(These)18 b(encodings)g(lead)g(to)h(the)h(following)d
(machine)j(instr)o(uction:)p 746 5126 2664 4 v 746 5209
4 84 v 3406 5209 V 746 5212 2664 4 v 758 5106 a Fh(31)d(30)g(29)266
b(25)1339 5107 y(24)1754 5106 y(19)17 b(18)2169 5107
y(14)2252 5106 y(13)2335 5107 y(12)2933 5106 y(5)3016
5107 y(4)3348 5106 y(0)795 5192 y Fq(10)165 b(1)l(101)l(1)257
b(000100)c(10000)139 b(0)206 b(00000000)301 b(1)l(1010)p
914 5209 4 84 v 1329 5209 V 1827 5209 V 2242 5209 V 2325
5209 V 2989 5209 V 600 5300 a(That)20 b(is,)d(101)l(1)j(01)l(10)g(0010)
h(0100)f(0000)g(0000)g(0001)g(1010)g(in)f(binary)-8 b(,)18
b(or)g(0xB624001A.)p 600 5349 3300 4 v eop
%%Page: 63 65
63 64 bop 0 100 a Fx(Lab)20 b(9.)41 b(The)20 b(SP)-8
b(ARC)21 b(Instr)o(uction)h(Formats)1785 b(63)409 393
y(T)-8 b(able)20 b(9.2)g(Operation)h(encodings)g(for)g(the)g(data)e
(manipulation)j(operations)940 539 y Fq(Operation)99
b(op)1462 547 y Ff(3)1700 539 y Fq(Operation)g(op)2222
547 y Ff(3)p 890 569 1521 4 v 940 633 a Fq(add)307 b(000000)102
b(addcc)241 b(010000)940 725 y(and)310 b(000001)102 b(andcc)244
b(010001)940 816 y(andn)267 b(000101)102 b(andncc)201
b(010101)940 907 y(or)365 b(000010)102 b(or)o(cc)300
b(010010)940 999 y(orn)322 b(0001)l(10)106 b(orncc)256
b(0101)l(10)940 1090 y(udiv)281 b(001)l(1)l(10)110 b(udivcc)215
b(01)l(1)l(1)l(10)940 1181 y(umul)258 b(001010)102 b(umulcc)192
b(01)l(1010)940 1272 y(smul)271 b(00101)l(1)106 b(smulcc)205
b(01)l(101)l(1)940 1364 y(sdiv)294 b(001)l(1)l(1)l(1)114
b(sdivcc)228 b(01)l(1)l(1)l(1)l(1)940 1455 y(sub)318
b(000100)102 b(subcc)252 b(010100)940 1546 y(xor)326
b(00001)l(1)106 b(xor)o(cc)261 b(01001)l(1)940 1638 y(xnor)283
b(0001)l(1)l(1)110 b(xnor)o(cc)218 b(0101)l(1)l(1)940
1729 y(sll)360 b(100101)940 1820 y(rsl)352 b(100101)940
1912 y(rsa)337 b(1001)l(1)l(1)p 0 2374 3300 4 v 0 2454
a Fs(Example)19 b(9.5)94 b Fr(Hand)19 b(Assemble)f(the)h(following)f
(SP)-10 b(ARC)18 b(instructions.)224 2545 y Fo(smulcc)89
b(\045r19,)44 b(-23,)g(\045r29)0 2661 y Fq(Because)23
b(this)g(instr)o(uction)i(uses)d(one)i(sour)o(ce)e(r)o(egister)e(and)k
(a)g(signed)e(integer)h(constant,)j(it)d(is)g(encoded)f(using)0
2753 y(the)i(second)e(format)h(shown)g(in)h(Figur)o(e)c(9.3.)36
b(As)23 b(such,)h(we)f(must)g(determine)f(the)h(values)g(for)f(the)i
Fr(op)3002 2761 y Ff(3)3037 2753 y Fq(,)g Fr(rd)p Fq(,)g
Fr(rs)3247 2761 y Ff(1)3281 2753 y Fq(,)0 2844 y(and)19
b Fr(siconst)354 2852 y Ff(13)438 2844 y Fq(\002elds.)j(The)c
(following)g(table)h(summarizes)f(these)h(encodings:)199
2937 y(Field)224 b(Symbolic)18 b(value)100 b(Encoded)18
b(value)p 149 2968 1615 4 v 199 3032 a(r)o(d)317 b(\045r19)439
b(1001)l(1)199 3123 y(op)285 3131 y Ff(3)591 3123 y Fq(smulcc)375
b(01)l(101)l(1)199 3215 y(rs)261 3223 y Ff(1)591 3215
y Fq(\045r29)439 b(1)l(1)l(101)199 3306 y(siconst)426
3314 y Ff(13)591 3306 y Fl(\000)p Fq(23)472 b(1)l(1)l(1)l(1)20
b(1)l(1)l(1)l(1)f(0100)i(1)0 3396 y(These)d(encodings)g(lead)g(to)h
(the)h(following)d(machine)j(instr)o(uction:)p 146 3509
2664 4 v 146 3592 4 84 v 2806 3592 V 146 3595 2664 4
v 158 3489 a Fh(31)d(30)g(29)266 b(25)739 3490 y(24)1154
3489 y(19)17 b(18)1569 3490 y(14)1652 3489 y(13)1735
3490 y(12)2748 3489 y(0)195 3575 y Fq(10)163 b(1001)l(1)259
b(01)l(101)l(1)i(1)l(1)l(101)1667 3576 y(1)2008 3575
y(1)l(1)l(1)l(1)20 b(1)l(1)l(1)l(1)g(0100)g(1)p 314 3592
4 84 v 729 3592 V 1227 3592 V 1642 3592 V 1725 3592 V
0 3683 a(That)g(is,)d(1010)k(01)l(10)f(1)l(101)g(1)l(1)l(1)l(1)f(01)l
(1)l(1)h(1)l(1)l(1)l(1)g(1)l(1)l(10)g(1001)g(in)f(binary)-8
b(,)18 b(or)g(0xA6DF7FE9.)p 0 3732 3300 4 v 0 4025 a
Fp(9.3.4)99 b(Encoding)25 b(conditional)i(branching)d(instructions)0
4183 y Fx(The)k(machine)g(language)f(format)g(for)h(the)f(conditional)i
(branching)f(operations)g(on)g(the)g(SP)-8 b(ARC)28 b(is)0
4282 y(shown)c(in)e(Figur)o(e)g(9.4.)29 b(This)23 b(format)f(divides)g
(the)g(machine)h(instr)o(uction)h(into)f(\002ve)f(\002elds.)30
b(The)23 b(\002rst)0 4382 y(and)28 b(fourth)h(\002elds)g(hold)g(the)g
(\002xed)f(values)h(102)e(and)h(0102.)47 b(The)29 b(r)o(emaining)g
(\002elds,)h Fw(a)p Fx(,)h Fw(cond)p Fx(,)e(and)0 4482
y Fw(disp)139 4494 y Fc(22)209 4482 y Fx(,)g(hold)f(the)g(encoded)g
(values)f(for)h(the)g(annul)g(bit,)i(the)d(branching)i(condition,)h
(and)e(pr)o(ogram)0 4581 y(counter)21 b(displacement.)p
53 4804 3195 4 v 53 4904 4 100 v 3244 4904 V 53 4907
3195 4 v 73 4777 a Fh(31)172 4776 y(30)34 b(29)f(28)233
b(25)770 4777 y(24)g(22)33 b(21)3178 4776 y(0)118 4878
y Fq(00)286 4871 y(a)473 4880 y(cond)897 4879 y(010)2093
4870 y(disp)2238 4878 y Ff(22)p 254 4904 4 100 v 353
4904 V 752 4904 V 1150 4904 V 477 5169 a Fx(Figur)o(e)20
b(9.4)g(Instr)o(uction)i(format)e(for)h(conditional)h(branch)e(instr)o
(uctions)p eop
%%Page: 64 66
64 65 bop 600 100 a Fx(64)1783 b(Lab)20 b(9.)41 b(The)21
b(SP)-8 b(ARC)20 b(Instr)o(uction)j(Formats)725 333 y(The)16
b Fw(a)h Fx(\002eld)f(of)h(a)f(machine)h(instr)o(uction)h(is)f(set)g
(\(i.e.,)f(1\))g(for)h(instr)o(uctions)h(that)f(use)g(the)f(annul)i
(suf)o(\002x)600 432 y(\(\223,a\224\).)40 b(This)26 b(\002eld)h(is)f
(clear)g(\(i.e,)g(0\))g(for)g(conditional)h(branching)g(instr)o
(uctions)h(that)e(do)g(not)h(nullify)600 532 y(the)32
b(r)o(esults)g(of)g(the)h(next)f(instr)o(uction.)61 b(The)32
b Fw(cond)g Fx(\002eld)g(of)g(a)g(machine)g(instr)o(uction)i(encodes)e
(the)600 632 y(condition)22 b(under)f(which)h(the)g(branch)f(is)g
(taken.)27 b(T)-8 b(able)21 b(9.3)e(summarizes)i(the)h(operation)f
(encodings)600 731 y(for)g(the)f(branching)i(operations)f(supported)f
(by)h(the)g(SP)-8 b(ARC.)944 998 y(T)g(able)20 b(9.3)g(Operation)h
(encodings)g(for)g(the)g(conditional)g(branching)h(operations)1599
1143 y Fq(Operation)103 b(cond)c(Operation)h(cond)p 1549
1174 1402 4 v 1599 1238 a(ba)362 b(1000)114 b(bn)353
b(0000)1599 1329 y(bne)19 b(\(bnz\))130 b(1001)114 b(be)19
b(\(bz\))213 b(0001)1599 1420 y(bg)357 b(1010)114 b(ble)338
b(0010)1599 1512 y(bge)321 b(101)l(1)118 b(bl)374 b(001)l(1)1599
1603 y(bgu)312 b(1)l(100)118 b(bleu)293 b(0100)1599 1694
y(bcc)20 b(\(bgeu\))99 b(1)l(101)118 b(bcs)19 b(\(blu\))154
b(0101)1599 1786 y(bpos)281 b(1)l(1)l(10)122 b(bneg)275
b(01)l(10)1599 1877 y(bvc)324 b(1)l(1)l(1)l(1)126 b(bvs)322
b(01)l(1)l(1)725 2163 y Fx(T)-8 b(o)31 b(complete)f(the)h(encoding)g
(of)g(an)f(assembly)h(language)f(instr)o(uction)i(that)e(uses)h
(conditional)600 2263 y(branching,)e(you)f(need)f(to)g(determine)g(the)
g(value)g(of)g(the)h Fw(disp)2653 2275 y Fc(22)2750 2263
y Fx(\002eld.)44 b(W)-8 b(e)28 b(addr)o(ess)d(this)j(issue)g(by)600
2363 y(considering)35 b(how)f(a)g(pr)o(ocessor)f(uses)h(this)h(value.)
64 b(When)35 b(the)f(pr)o(ocessor)f(determines)h(that)g(the)600
2462 y(branching)29 b(condition)i(is)e(satis\002ed,)i(it)f(multiplies)g
(the)f(value)f(in)i(the)f Fw(disp)3067 2474 y Fc(22)3166
2462 y Fx(\002eld)g(by)g(4)g(and)g(adds)600 2562 y(it)e(to)h(the)f(pr)o
(ogram)f(counter)h(\(PC\).)f(T)-8 b(o)28 b(be)f(mor)o(e)f(pr)o(ecise,)i
(the)f(pr)o(ocessor)f(sign)i(extends)f(the)g(22-bit)600
2661 y(value)e(stor)o(ed)h(in)g(the)g Fw(disp)1462 2673
y Fc(22)1558 2661 y Fx(\002eld)g(to)g(30)f(bits)i(and)e(concatenates)h
(two)g(zer)o(os)f(to)i(constr)o(uct)g(a)e(32-bit)600
2761 y(which)f(which)f(it)g(adds)f(to)i(the)f(PC.)f(In)h(ef)o(fect,)f
(the)h Fw(disp)2378 2773 y Fc(22)2470 2761 y Fx(\002eld)g(holds)g(the)g
(distance)g(fr)o(om)f(the)h(tar)o(get)600 2861 y(to)e(the)g
(destination)g(measur)o(ed)f(in)h(instr)o(uctions.)p
600 2965 3300 4 v 600 3045 a Fs(Example)e(9.6)94 b Fr(Hand)19
b(Assemble)f(the)h(branch)g(instruction)f(in)g(the)h(following)f(SP)-10
b(ARC)17 b(code)j(fragment.)1183 3136 y Fo(cmp)223 b(\045r2,)45
b(8)1183 3228 y(bne)223 b(l1)1183 3319 y(nop)1183 3410
y(inc)g(\045r3)824 3502 y(l1:)600 3618 y Fq(In)16 b(this)g(case,)g(the)
g(tar)o(get)g(is)f(3)h(instr)o(uctions)g(fr)o(om)e(the)i(branch)h
(instr)o(uction,)g(so)e(the)i Fr(disp)3113 3626 y Ff(22)3194
3618 y Fq(\002eld)e(will)g(be)h(the)g(22-bit)600 3709
y(binary)j(encoding)f(of)g(3.)799 3803 y(Field)149 b(Symbolic)18
b(value)100 b(Encoded)18 b(value)p 749 3833 1934 4 v
799 3897 a(a)886 b(0)799 3989 y(cond)154 b(bne)486 b(1001)799
4080 y(disp)944 4088 y Ff(2)978 4080 y Fd(2)100 b Fq(l1)547
b(0000)20 b(0000)g(0000)g(0000)g(0000)g(1)l(1)600 4170
y(These)e(encodings)g(lead)g(to)h(the)h(following)d(machine)j(instr)o
(uction:)p 746 4282 2664 4 v 746 4365 4 84 v 3406 4365
V 746 4368 2664 4 v 758 4263 a Fh(31)d(30)g(29)g(28)183
b(25)1339 4264 y(24)g(22)17 b(21)3348 4263 y(0)795 4349
y Fq(00)69 b(0)k(1001)245 b(010)527 b(0000)20 b(0000)g(0000)g(0000)g
(0000)g(1)l(1)p 914 4365 4 84 v 997 4365 V 1329 4365
V 1661 4365 V 600 4457 a(That)g(is,)d(0001)k(0010)f(1000)g(0000)g(0000)
g(0000)g(0000)g(001)l(1)g(in)f(binary)-8 b(,)18 b(or)g(0x12800002.)p
600 4506 3300 4 v 600 4659 V 600 4738 a Fs(Example)h(9.7)94
b Fr(Hand)19 b(Assemble)f(the)h(branch)g(instruction)f(in)g(the)h
(following)f(SP)-10 b(ARC)17 b(code)j(fragment.)824 4830
y Fo(top:)179 b(add)223 b(\045r2,)45 b(\045r3,)f(\045r2)1183
4921 y(deccc)133 b(\045r4)1183 5012 y(bne)223 b(top)600
5129 y Fq(In)22 b(this)g(case,)f(the)h(tar)o(get)f(is)g(2)h(instr)o
(uctions)g(\(back\))f(fr)o(om)f(the)i(branch)h(instr)o(uction,)f(so)f
(the)h Fr(disp)3417 5137 y Ff(22)3504 5129 y Fq(\002eld)f(will)g(be)600
5220 y(the)e(22-bit)h(binary)f(encoding)f(of)g Fl(\000)p
Fd(2)p Fq(.)p eop
%%Page: 65 67
65 66 bop 0 100 a Fx(Lab)20 b(9.)41 b(The)20 b(SP)-8
b(ARC)21 b(Instr)o(uction)h(Formats)1785 b(65)199 314
y Fq(Field)149 b(Symbolic)18 b(value)100 b(Encoded)18
b(value)p 149 344 1876 4 v 199 408 a(a)886 b(0)199 500
y(cond)154 b(bne)486 b(1001)199 591 y(disp)344 599 y
Ff(2)378 591 y Fd(2)100 b Fq(l1)547 b(1)l(1)l(1)l(1)20
b(1)l(1)l(1)l(1)f(1)l(1)l(1)l(1)h(1)l(1)l(1)l(1)g(1)l(1)l(1)l(1)g(10)0
681 y(These)e(encodings)g(lead)g(to)h(the)h(following)d(machine)j
(instr)o(uction:)p 146 793 2664 4 v 146 876 4 84 v 2806
876 V 146 879 2664 4 v 158 774 a Fh(31)d(30)g(29)g(28)183
b(25)739 775 y(24)g(22)17 b(21)2748 774 y(0)195 860 y
Fq(00)69 b(0)k(1001)245 b(010)546 b(1)l(1)l(1)l(1)20
b(1)l(1)l(1)l(1)g(1)l(1)l(1)l(1)g(1)l(1)l(1)l(1)f(1)l(1)l(1)l(1)39
b(10)p 314 876 4 84 v 397 876 V 729 876 V 1061 876 V
0 968 a(That)20 b(is,)d(0001)k(0010)f(101)l(1)g(1)l(1)l(1)l(1)g(1)l(1)l
(1)l(1)f(1)l(1)l(1)l(1)h(1)l(1)l(1)l(1)g(1)l(1)l(10)g(in)f(binary)-8
b(,)18 b(or)g(0x12BFFFFE.)p 0 1017 3300 4 v 0 1304 a
Fp(9.3.5)99 b(Synthetic)25 b(Instructions)0 1462 y Fx(In)h(most)h
(cases,)g(an)e(assembly)h(language)g(instr)o(uction)h(is)g(simply)g(a)e
(symbolic)i(r)o(epr)o(esentation)e(of)g(a)0 1562 y(machine)j(language)g
(instr)o(uction.)48 b(The)28 b(SP)-8 b(ARC)28 b(ar)o(chitectur)o(e)d
(also)j(de\002nes)g(a)g(number)g(of)f(assem-)0 1662 y(bly)34
b(language)f(instr)o(uctions)i(that)f(do)f(not)h(corr)o(espond)g(dir)o
(ectly)e(to)i(SP)-8 b(ARC)34 b(machine)f(language)0 1761
y(instr)o(uctions.)56 b(These)31 b(ar)o(e)e(called)g(synthetic)i(instr)
o(uctions.)57 b(The)30 b(assembler)g(translates)g(synthetic)0
1861 y(instr)o(uctions)c(one)e(or)g(mor)o(e)f(machine)h(language)g
(instr)o(uctions.)36 b(Using)24 b(synthetic)h(instr)o(uctions)g(can)0
1960 y(fr)o(equently)f(make)h(your)g(pr)o(ograms)f(easier)g(to)h(r)o
(ead.)36 b(T)-8 b(able)24 b(9.4)f(summarizes)i(the)g(translation)g(pr)o
(o-)0 2060 y(vided)20 b(by)h(the)g(assembler)f(for)h(most)g(of)g(the)g
(synthetic)h(instr)o(uctions)g(on)g(the)f(SP)-8 b(ARC.)125
2160 y(Most)26 b(of)f(the)i(translations)f(shown)h(in)g(T)-8
b(able)25 b(9.4)g(ar)o(e)g(straightforwar)o(d.)39 b(However)-6
b(,)27 b(the)f(imple-)0 2259 y(mentation)21 b(of)f(the)g
Fw(set)g Fx(instr)o(uction)i(merits)e(further)f(discussion.)27
b(The)20 b(assembler)f(will)i(always)f(try)g(to)0 2359
y(use)d(one)g(of)g(the)g(\002rst)h(two)f(translations)h(if)e(it)i(can.)
24 b(That)16 b(is,)i(if)f(the)g(constant)h(value)e(can)h(be)f(r)o(epr)o
(esented)0 2459 y(in)22 b(13)e(bits,)h(the)g(assembler)g(will)g(select)
g(the)h(\002rst)f(translation.)27 b(If)20 b(the)i(least)e
(signi\002cant)i(10)e(bits)i(of)f(the)0 2558 y(constant)h(value)f(ar)o
(e)f(0,)g(it)i(will)g(used)f(the)h(second)f(translation.)28
b(Otherwise,)22 b(the)f(assembler)g(will)h(use)0 2658
y(the)k(thir)o(d)e(translation.)40 b(Note,)27 b(if)e(the)g(constant)h
(value)f(is)h(r)o(elocatable,)f(the)g(assembler)g(will)h(always)0
2757 y(select)21 b(the)f(thir)o(d)h(translation.)0 2999
y Fp(9.3.6)99 b(The)25 b(read)f(and)h(write)f(instructions)0
3157 y Fx(The)j(Y)g(r)o(egister)-6 b(,)28 b(intr)o(oduced)e(in)i(Lab)e
(4)g(is)i(one)f(of)g(the)g(SP)-8 b(ARC)27 b(state)g(r)o(egisters.)44
b(As)27 b(shown)h(in)g(T)-8 b(a-)0 3256 y(ble)19 b(9.4,)f(when)h(you)h
(use)f(a)g(state)f(r)o(egister)g(as)h(the)g(destination)h(in)f(a)g(mov)
g(instr)o(uction,)i(it)f(is)f(translated)0 3356 y(to)i(a)f(wr)g
(\(write\))g(instr)o(uction.)27 b(Similarly)-9 b(,)20
b(when)h(you)g(use)f(a)g(state)g(r)o(egister)f(as)i(the)f(sour)o(ce)g
(r)o(egister)g(in)0 3455 y(a)g(mov)i(instr)o(uction)g(it)f(is)g
(translated)f(to)h(a)f(r)o(d)g(\(r)o(ead\))e(instr)o(uction.)125
3555 y(W)-6 b(rite)21 b(instr)o(uctions)j(ar)o(e)d(encoded)g(using)i
(the)g(formats)f(shown)h(in)g(Figur)o(e)e(9.3.)29 b(When)22
b(the)g(desti-)0 3655 y(nation)e(r)o(egister)f(is)h(the)g(Y)g(r)o
(egister)-6 b(,)19 b(the)h Fw(rd)f Fx(\002eld)h(is)g(set)g(to)g(the)f
(5-bit)g(value)g(00000)f(and)h(the)h Fw(op)3000 3667
y Fc(3)3056 3655 y Fx(\002eld)g(is)0 3754 y(set)h(to)g(the)g(6-bit)f
(value)g(1)-5 b(10000.)125 3854 y(Read)21 b(instr)o(uctions)j(ar)o(e)c
(encoded)h(using)i(the)f(second)g(format)g(shown)h(in)f(Figur)o(e)g
(9.3.)28 b(When)22 b(the)0 3954 y(sour)o(ce)e(r)o(egister)f(is)h(the)g
(Y)h(r)o(egister)-6 b(,)18 b(the)j Fw(op)1370 3966 y
Fc(3)1426 3954 y Fx(\002eld)f(is)g(set)g(to)h(the)f(6-bit)f(value)h
(101000)d(and)i(the)h Fw(rs)3077 3966 y Fc(1)3135 3954
y Fx(\002eld)0 4053 y(is)h(set)g(to)g(the)g(5-bit)f(value)g(00000.)0
4294 y Fp(9.3.7)99 b(Relocatable)25 b(expressions)0 4452
y Fx(In)j(this)h(lab,)g(we)f(have)f(limited)i(our)f(discussion)h(to)f
(the)g(translation)g(of)g(instr)o(uctions)i(that)e(use)g(ab-)0
4552 y(solute)h(expr)o(essions.)50 b(W)-8 b(e)29 b(will)h(consider)f
(the)g(translation)g(of)g(r)o(elocatable)e(expr)o(essions)i(when)g(we)0
4652 y(consider)21 b(linking)h(and)e(loading)i(in)f(Lab)f(15.)0
4893 y Fp(9.3.8)99 b(Decoding)26 b(SP)-7 b(ARC)23 b(instructions)0
5051 y Fx(W)-8 b(e)30 b(conclude)g(our)g(discussion)h(of)f(instr)o
(uction)i(formats)e(by)g(considering)h(instr)o(uction)g(decoding.)0
5150 y(That)19 b(is,)h(the)g(pr)o(ocess)f(by)h(which)h(a)e(SP)-8
b(ARC)19 b(pr)o(ocessor)h(determines)f(the)h(instr)o(uction)h(it)f(is)g
(executing.)125 5250 y(The)k(SP)-8 b(ARC)25 b(uses)g(a)g(distributed)f
(opcode.)38 b(The)25 b(two)g(most)h(signi\002cant)g(bits)f(in)h(an)e
(instr)o(uction)0 5350 y(r)o(epr)o(esent)j(the)i(primary)f(opcode.)49
b(If)29 b(the)f(primary)h(opcode)f(is)h(00,)h(bits)f(22\22624)d(of)j
(the)f(instr)o(uction)p eop
%%Page: 66 68
66 67 bop 600 100 a Fx(66)1783 b(Lab)20 b(9.)41 b(The)21
b(SP)-8 b(ARC)20 b(Instr)o(uction)j(Formats)1606 393
y(T)-8 b(able)21 b(9.4)e(The)i(synthetic)h(instr)o(uctions)1277
539 y Fq(Synthetic)d(instr)o(uction)243 b(Implementation)p
1227 569 2047 4 v 1277 633 a(bclr)154 b Fr(rs)p Fq(,)19
b Fr(rd)484 b Fq(andn)126 b Fr(rd)p Fq(,)19 b Fr(rs)p
Fq(,)f Fr(rd)1277 725 y Fq(bclr)154 b Fr(rs)p Fq(,)19
b Fr(siconst)1862 733 y Ff(13)2203 725 y Fq(andn)126
b Fr(rs)p Fq(,)18 b Fr(siconst)2802 733 y Ff(13)2867
725 y Fq(,)h Fr(rd)1277 816 y Fq(bset)147 b Fr(rs)p Fq(,)19
b Fr(rd)484 b Fq(or)224 b Fr(rd)p Fq(,)19 b Fr(rs)p Fq(,)f
Fr(rd)1277 907 y Fq(bset)147 b Fr(siconst)1766 915 y
Ff(13)1831 907 y Fq(,)18 b Fr(rd)269 b Fq(or)224 b Fr(rd)p
Fq(,)19 b Fr(siconst)2811 915 y Ff(13)2876 907 y Fq(,)f
Fr(rd)1277 999 y Fq(btst)159 b Fr(rs)1615 1007 y Ff(1)1650
999 y Fq(,)18 b Fr(rs)1745 1007 y Ff(2)2203 999 y Fq(andcc)103
b Fr(rs)2556 1007 y Ff(1)2591 999 y Fq(,)18 b Fr(rs)2686
1007 y Ff(2)2721 999 y Fq(,)g(\045g0)1277 1090 y(btst)159
b Fr(rs)p Fq(,)19 b Fr(siconst)1862 1098 y Ff(13)2203
1090 y Fq(andcc)103 b Fr(rs)p Fq(,)18 b Fr(siconst)2802
1098 y Ff(13)2867 1090 y Fq(,)h(\045g0)1277 1181 y(btog)132
b Fr(rs)p Fq(,)19 b Fr(rd)484 b Fq(xor)185 b Fr(rd)p
Fq(,)19 b Fr(rs)p Fq(,)f Fr(rd)1277 1272 y Fq(btog)132
b Fr(rs)p Fq(,)19 b Fr(siconst)1862 1280 y Ff(13)2203
1272 y Fq(xor)185 b Fr(rs)p Fq(,)18 b Fr(siconst)2802
1280 y Ff(13)2867 1272 y Fq(,)h Fr(rd)p 1227 1303 V 1277
1367 a Fq(clr)195 b Fr(rd)580 b Fq(or)224 b(\045g0,)18
b(\045g0,)g Fr(rd)1277 1458 y Fq(clrb)154 b([)p Fr(addr)o(ess)p
Fq(])374 b(stb)198 b(\045g0,)18 b([)p Fr(addr)o(ess)p
Fq(])1277 1550 y(clr)o(h)153 b([)p Fr(addr)o(ess)p Fq(])374
b(sth)196 b(\045g0,)18 b([)p Fr(addr)o(ess)p Fq(])1277
1641 y(clr)195 b([)p Fr(addr)o(ess)p Fq(])374 b(st)239
b(\045g0,)18 b([)p Fr(addr)o(ess)p Fq(])p 1227 1672 V
1277 1736 a(cmp)136 b Fr(rs)1615 1744 y Ff(1)1650 1736
y Fq(,)18 b Fr(rs)1745 1744 y Ff(2)2203 1736 y Fq(subcc)111
b Fr(rs)2556 1744 y Ff(1)2591 1736 y Fq(,)18 b Fr(rs)2686
1744 y Ff(2)2721 1736 y Fq(,)g(\045g0)1277 1827 y(cmp)136
b Fr(rs)p Fq(,)19 b Fr(siconst)1862 1835 y Ff(13)2203
1827 y Fq(subcc)111 b Fr(rs)p Fq(,)18 b Fr(siconst)2802
1835 y Ff(13)2867 1827 y Fq(,)h(\045g0)p 1227 1858 V
1277 1922 a(dec)165 b Fr(rd)580 b Fq(sub)177 b Fr(rd)p
Fq(,)19 b(1,)f Fr(rd)1277 2013 y Fq(dec)165 b Fr(siconst)1766
2021 y Ff(13)1831 2013 y Fq(,)18 b Fr(rd)269 b Fq(sub)177
b Fr(rd)p Fq(,)19 b Fr(siconst)2811 2021 y Ff(13)2876
2013 y Fq(,)f Fr(rd)1277 2104 y Fq(deccc)99 b Fr(rd)580
b Fq(subcc)111 b Fr(rd)p Fq(,)19 b(1,)f Fr(rd)1277 2196
y Fq(deccc)99 b Fr(siconst)1766 2204 y Ff(13)1831 2196
y Fq(,)18 b Fr(rd)269 b Fq(subcc)111 b Fr(rd)p Fq(,)19
b Fr(siconst)2811 2204 y Ff(13)2876 2196 y Fq(,)f Fr(rd)p
1227 2226 V 1277 2290 a Fq(inc)182 b Fr(rd)580 b Fq(add)166
b Fr(rd)p Fq(,)19 b(1,)f Fr(rd)1277 2382 y Fq(inc)182
b Fr(siconst)1766 2390 y Ff(13)1831 2382 y Fq(,)18 b
Fr(rd)269 b Fq(add)166 b Fr(rd)p Fq(,)19 b Fr(siconst)2811
2390 y Ff(13)2876 2382 y Fq(,)f Fr(rd)1277 2473 y Fq(inccc)116
b Fr(rd)580 b Fq(addcc)100 b Fr(rd)p Fq(,)19 b(1,)f Fr(rd)1277
2564 y Fq(inccc)116 b Fr(siconst)1766 2572 y Ff(13)1831
2564 y Fq(,)18 b Fr(rd)269 b Fq(addcc)100 b Fr(rd)p Fq(,)19
b Fr(siconst)2811 2572 y Ff(13)2876 2564 y Fq(,)f Fr(rd)p
1227 2595 V 1277 2659 a Fq(mov)131 b Fr(rs)p Fq(,)19
b Fr(rd)484 b Fq(or)224 b(\045g0,)18 b Fr(rs)p Fq(,)g
Fr(rd)1277 2750 y Fq(mov)131 b Fr(siconst)1766 2758 y
Ff(13)1831 2750 y Fq(,)18 b Fr(rd)269 b Fq(or)224 b(\045g0,)18
b Fr(siconst)2886 2758 y Ff(13)2951 2750 y Fq(,)g Fr(rd)1277
2842 y Fq(mov)131 b Fr(stater)o(eg)p Fq(,)19 b Fr(rd)307
b Fq(r)o(d)220 b Fr(stater)o(eg)p Fq(,)18 b Fr(rd)1277
2933 y Fq(mov)131 b Fr(rs)p Fq(,)19 b Fr(stater)o(eg)315
b Fq(wr)203 b(\045g0,)18 b Fr(rs)p Fq(,)g Fr(stater)o(eg)1277
3024 y Fq(mov)131 b Fr(siconst)1766 3032 y Ff(13)1831
3024 y Fq(,)18 b Fr(stater)o(eg)100 b Fq(wr)203 b(\045g0,)18
b Fr(siconst)2886 3032 y Ff(13)2951 3024 y Fq(,)g Fr(stater)o(eg)p
1227 3055 V 1277 3119 a Fq(neg)159 b Fr(rs)p Fq(,)19
b Fr(rd)484 b Fq(sub)177 b(\045g0,)18 b Fr(rs)p Fq(,)g
Fr(rd)1277 3210 y Fq(neg)159 b Fr(rd)580 b Fq(sub)177
b(\045g0,)18 b Fr(rd)p Fq(,)h Fr(rd)p 1227 3241 V 1277
3305 a Fq(not)172 b Fr(rd)580 b Fq(xnor)142 b Fr(rd)p
Fq(,)19 b(\045g0,)f Fr(rd)1277 3396 y Fq(not)172 b Fr(rs)p
Fq(,)19 b Fr(rd)484 b Fq(xnor)142 b Fr(rs)p Fq(,)18 b(\045g0,)g
Fr(rd)p 1227 3427 V 1277 3491 a Fq(set)188 b Fr(iconst)p
Fq(,)18 b Fr(rd)363 b Fq(or)224 b(\045g0,)18 b Fr(iconst)p
Fq(,)g Fr(rd)2608 3582 y Fq(\227)p Fr(or)p Fq(\227)2203
3673 y(sethi)138 b(\045hi\()p Fr(iconst)p Fq(\),)18 b
Fr(rd)2608 3765 y Fq(\227)p Fr(or)p Fq(\227)2203 3856
y(sethi)138 b(\045hi\()p Fr(iconst)p Fq(\),)18 b Fr(rd)2203
3947 y Fq(or)224 b Fr(rd)p Fq(,)19 b(\045lo\()p Fr(iconst)p
Fq(\),)e Fr(rd)p 1227 3978 V 1277 4042 a Fq(tst)200 b
Fr(rs)588 b Fq(or)o(cc)159 b(\045g0,)18 b Fr(rs)p Fq(,)g(\045g0)600
4402 y Fx(pr)o(ovide)h(the)h(secondary)g(opcode.)25 b(If)20
b(the)g(primary)g(opcode)g(is)g(01,)f(the)h(instr)o(uction)i(is)e(a)g
(call)g(instr)o(uc-)600 4501 y(tion)g(and)f(the)h(r)o(emaining)f(bits)h
(\(bits)g(0\22629\))d(ar)o(e)h(a)h(displacement)g(for)g(the)h(pr)o
(ogram)f(counter)g(\(we)g(will)600 4601 y(discuss)25
b(the)f(call)g(instr)o(uction)i(at)d(gr)o(eater)g(length)i(in)g(Lab)e
(10\).)35 b(Otherwise,)25 b(if)f(the)g(primary)g(opcode)600
4700 y(is)k(either)f(10)g(or)g(1)-5 b(1,)29 b(bits)e(19\22624)e(of)j
(the)f(instr)o(uction)i(pr)o(ovide)e(the)h(secondary)f(opcode.)45
b(Figur)o(e)27 b(9.5)600 4800 y(illustrates)21 b(the)g(positions)h(of)f
(the)g(secondary)f(opcodes)h(based)f(on)h(the)g(primary)g(opcode.)725
4900 y(Once)29 b(you)i(have)e(determined)g(the)h(primary)g(and)f
(secondary)g(opcodes,)j(you'll)f(be)e(able)g(to)i(to)600
4999 y(determined)c(the)h(instr)o(uction)h(and,)g(knowing)g(the)f
(instr)o(uction,)j(decode)c(the)h(r)o(emaining)f(\002elds)h(of)600
5099 y(the)19 b(instr)o(uction.)27 b(If)19 b(the)g(primary)g(opcode)g
(is)h(01,)e(the)i(instr)o(uction)h(is)e(a)g(call)g(instr)o(uction)i
(and)e(you)g(can)600 5199 y(easily)i(complete)g(the)g(decoding)f(of)h
(the)g(instr)o(uction.)725 5298 y(If)j(the)h(primary)g(opcode)g(is)g
(00,)g(the)g(instr)o(uction)i(is)e(an)g(unimplemented)h(instr)o
(uction,)h(a)e(condi-)p eop
%%Page: 67 69
67 68 bop 0 100 a Fx(Lab)20 b(9.)41 b(The)20 b(SP)-8
b(ARC)21 b(Instr)o(uction)h(Formats)1785 b(67)p 53 349
3195 4 v 53 449 4 100 v 3244 449 V 53 452 3195 4 v 73
322 a Fh(31)172 321 y(30)34 b(29)332 b(25)770 323 y(24)1069
322 y(22)1168 323 y(21)3178 321 y(0)118 424 y Fq(00)892
406 y(op)978 414 y Ff(2)p 254 449 4 100 v 752 449 V 1150
449 V 53 607 3195 4 v 53 706 4 100 v 3244 706 V 53 709
3195 4 v 73 579 a Fh(31)33 b(30)h(29)2840 b(0)118 682
y Fq(01)p 254 706 4 100 v 53 864 3195 4 v 53 964 4 100
v 3244 964 V 53 967 3195 4 v 73 837 a Fh(31)172 836 y(30)34
b(29)332 b(25)770 837 y(24)432 b(19)34 b(18)3178 836
y(0)118 939 y Fq(10)992 921 y(op)1078 929 y Ff(3)p 254
964 4 100 v 752 964 V 1349 964 V 53 1121 3195 4 v 53
1221 4 100 v 3244 1221 V 53 1224 3195 4 v 73 1094 a Fh(31)f(30)h(29)332
b(25)770 1095 y(24)1268 1094 y(19)34 b(18)1744 b(0)120
1197 y Fq(1)l(1)992 1178 y(op)1078 1186 y Ff(3)p 254
1221 4 100 v 752 1221 V 1349 1221 V 664 1487 a Fx(Figur)o(e)20
b(9.5)g(The)h(primary)f(opcode)h(ina)f(SP)-8 b(ARC)21
b(instr)o(uction)0 1759 y(tional)j(branch)e(instr)o(uction,)k(or)d(a)f
(sethi)i(instr)o(uction.)34 b(T)-8 b(able)23 b(9.5)f(summarizes)h(how)h
(the)f(3-bit)g(value)0 1859 y(in)e(op)188 1871 y Fc(2)246
1859 y Fx(is)h(used)e(to)h(identify)g(the)g(instr)o(uction.)1065
2125 y(T)-8 b(able)20 b(9.5)g(Decoding)h(the)g(op)2012
2137 y Fc(2)2070 2125 y Fx(\002eld)848 2271 y Fq(V)-7
b(alue)99 b(Instr)o(uction)p 798 2301 1705 4 v 923 2365
a(000)h(The)19 b(unimplemented)g(instr)o(uction)923 2457
y(001)100 b Fr(illegal)923 2548 y Fq(010)g(Conditional)19
b(branch\227integer)g(unit)927 2639 y(01)l(1)100 b Fr(illegal)923
2731 y Fq(100)g(SETHI)923 2822 y(101)g Fr(illegal)927
2913 y Fq(1)l(10)g(Conditional)19 b(branch\227\003oating)i(point)e
(unit)931 3005 y(1)l(1)l(1)100 b(Conditional)19 b(branch\227copr)o
(ocessor)125 3291 y Fx(The)h(data)e(manipulation)j(instr)o(uctions)h
(ar)o(e)d(encoded)g(with)i(a)f(primary)f(opcode)h(of)g(10.)25
b(T)-8 b(able)19 b(9.6)0 3391 y(shows)27 b(how)g(the)g(6-bit)e(value)g
(in)i(the)f(op)1345 3403 y Fc(3)1409 3391 y Fx(\002eld)g(is)g(used)g
(to)g(determine)g(the)g(instr)o(uction)i(when)f(the)0
3490 y(primary)20 b(opcode)h(is)g(10.)487 3757 y(T)-8
b(able)20 b(9.6)g(Decoding)h(the)g(op)1434 3769 y Fc(3)1492
3757 y Fx(\002eld)g(when)g(the)g(primary)f(opcode)h(is)g(10)p
452 3930 4 92 v 503 3902 a Fq(000xxx)100 b(001xxx)j(010xxx)114
b(01)l(1xxx)139 b(100xxx)128 b(101xxx)112 b(1)l(10xxx)j(1)l(1)l(1xxx)p
126 3933 3049 4 v 176 3997 a(xxx000)p 452 4024 4 92 v
149 w(add)179 b(addx)150 b(addcc)125 b(addxcc)138 b(taddcc)210
b(r)o(d)254 b(wr)216 b(jmpl)176 4088 y(xxx001)p 452 4116
V 150 w(and)227 b(\227)198 b(andcc)207 b(\227)222 b(tsubcc)216
b(r)o(d)254 b(wr)234 b(r)o(ett)176 4179 y(xxx010)p 452
4207 V 178 w(or)202 b(umul)175 b(or)o(cc)150 b(umulcc)100
b(taddcctv)177 b(r)o(d)254 b(wr)223 b(trap)176 4271 y(xxx01)l(1)p
452 4298 V 163 w(xor)189 b(smul)162 b(xor)o(cc)137 b(smulcc)111
b(tsubcctv)183 b(r)o(d)254 b(wr)208 b(\003ush)176 4362
y(xxx100)p 452 4390 V 154 w(sub)190 b(subx)161 b(subcc)136
b(subxcc)i(mulscc)204 b(\227)176 b(FPU)18 b(op)138 b(save)176
4453 y(xxx101)p 452 4481 V 128 w(andn)206 b(\227)176
b(andncc)186 b(\227)289 b(sll)281 b(\227)176 b(FPU)18
b(op)99 b(r)o(estor)o(e)176 4545 y(xxx1)l(10)p 452 4572
V 160 w(orn)193 b(udiv)164 b(orncc)139 b(udivcc)213 b(srl)277
b(\227)199 b(CP)19 b(op)197 b(\227)176 4636 y(xxx1)l(1)l(1)p
452 4663 V 145 w(xnor)180 b(sdiv)151 b(xnor)o(cc)127
b(sdivcc)211 b(sra)270 b(\227)199 b(CP)19 b(op)197 b(\227)125
4922 y Fx(Instr)o(uctions)29 b(that)f(access)g(memory)g(ar)o(e)f
(encoded)h(with)g(a)g(primary)g(opcode)g(of)g(1)-5 b(1.)47
b(T)-8 b(able)27 b(9.7)0 5022 y(shows)g(how)g(the)g(6-bit)e(value)g(in)
i(the)f(op)1345 5034 y Fc(3)1409 5022 y Fx(\002eld)g(is)g(used)g(to)g
(determine)g(the)g(instr)o(uction)i(when)f(the)0 5122
y(primary)20 b(opcode)h(is)g(1)-5 b(1.)125 5221 y(When)19
b(you)g(decode)f(an)g(instr)o(cution)h(that)g(has)g(a)f(primary)g
(opcode)h(of)f(10)g(or)h(1)-5 b(1,)18 b(you)h(will)g(need)g(to)0
5321 y(examine)j(bit)h(13)f(to)h(determine)f(whether)h(bits)g(0\22612)e
(of)h(the)h(instr)o(uction)i(hold)e(an)f(immediate)h(value)p
eop
%%Page: 68 70
68 69 bop 600 100 a Fx(68)1783 b(Lab)20 b(9.)41 b(The)21
b(SP)-8 b(ARC)20 b(Instr)o(uction)j(Formats)1089 393
y(T)-8 b(able)20 b(9.7)g(Decoding)h(the)g(op)2036 405
y Fc(3)2094 393 y Fx(\002eld)g(when)g(the)g(primary)g(opcode)f(is)h(1)
-5 b(1)p 1099 566 4 92 v 1150 539 a Fq(000xxx)100 b(001xxx)f(010xxx)111
b(01)l(1xxx)g(100xxx)100 b(101xxx)f(1)l(10xxx)g(1)l(1)l(1xxx)p
773 569 2954 4 v 823 633 a(xxx000)p 1099 661 4 92 v 180
w(ld)255 b(\227)238 b(lda)247 b(\227)253 b(ldf)243 b(\227)238
b(ldc)233 b(\227)823 725 y(xxx001)p 1099 752 V 136 w(ldub)181
b(ldsb)161 b(lduba)152 b(ldsba)172 b(ldfsr)211 b(\227)c(ldcsr)202
b(\227)823 816 y(xxx010)p 1099 843 V 135 w(lduh)178 b(ldsh)159
b(lduha)151 b(ldsha)210 b(\227)252 b(\227)f(\227)246
b(\227)823 907 y(xxx01)l(1)p 1099 935 V 161 w(ldd)232
b(\227)215 b(ldda)224 b(\227)230 b(lddf)220 b(\227)215
b(lddc)210 b(\227)823 999 y(xxx100)p 1099 1026 V 185
w(st)262 b(\227)243 b(sta)254 b(\227)259 b(stf)249 b(\227)243
b(stc)d(\227)823 1090 y(xxx101)p 1099 1117 V 165 w(stb)174
b(ldstub)155 b(stba)147 b(ldstuba)142 b(stfsr)218 b(\227)213
b(stcsr)208 b(\227)823 1181 y(xxx1)l(10)p 1099 1209 V
168 w(sth)240 b(\227)222 b(stha)232 b(\227)215 b(stdfq)205
b(\227)199 b(scdfq)c(\227)823 1272 y(xxx1)l(1)l(1)p 1099
1300 V 170 w(std)189 b(swap)170 b(stda)160 b(swapa)168
b(stdf)226 b(\227)220 b(scdf)c(\227)600 1632 y Fx(or)21
b(a)f(r)o(egister)-6 b(.)25 b(If)20 b(bit)h(13)f(is)h(1,)f(bits)h
(0\22612)e(hold)i(an)g(immediate)f(value.)p 600 1758
3300 4 v 600 1838 a Fs(Example)f(9.8)94 b Fr(Give)19
b(an)f(instruction)g(that)h(will)f(assemble)g(to)h(the)g(value)g
(0x09012345.)600 1954 y Fq(In)h(binary)-8 b(,)18 b(this)i(instr)o
(uction)g(is)e(00)i(00100)h(100)f(000100.)11 b(.)g(.)g(.)26
b(That)20 b(is,)f(the)g(primary)f(opcode)g(is)h(00)h(and)f(op)3643
1962 y Ff(2)3697 1954 y Fq(is)f(100.)600 2046 y(Fr)o(om)f(T)-7
b(able)19 b(9.5,)g(this)g(is)f(a)h(sethi)g(instr)o(uction.)k(Using)18
b(the)i(sethi)f(format)f(to)h(partition)g(the)g(bits)g(yields:)p
746 2158 2664 4 v 746 2241 4 84 v 3406 2241 V 746 2244
2664 4 v 758 2139 a Fh(31)841 2138 y(30)e(29)266 b(25)1339
2140 y(24)1588 2139 y(22)1671 2140 y(21)3348 2138 y(0)795
2224 y Fq(00)951 2226 y(r)o(d)18 b(=)h(00100)1441 2225
y(100)1991 2221 y(iconst)2186 2229 y Ff(22)2270 2221
y Fq(=)g(01)h(0010)g(001)l(1)g(0100)g(0101)p 914 2241
4 84 v 1329 2241 V 1661 2241 V 600 2332 a(Thus,)i(the)g(destination)g
(r)o(egister)d(is)i(\045r4,)g(and)h(the)g(integer)f(constant)i(is)e
(0x12345.)33 b(The)22 b(following)e(instr)o(uction)600
2424 y(will)e(be)h(assembled)f(as)g(0x09012345.)824 2515
y Fo(sethi)134 b(\045hi\(0x12345<<10\),)42 b(\045r4)p
600 2551 3300 4 v 600 2704 V 600 2784 a Fs(Example)19
b(9.9)94 b Fr(Give)19 b(an)f(instruction)g(that)h(will)f(assemble)g(to)
h(the)g(value)g(0x10800006.)600 2900 y Fq(In)27 b(binary)-8
b(,)28 b(this)f(instr)o(uction)g(is)f(00)h(01000)h(010)f(000000.)11
b(.)g(.)g(.)48 b(That)28 b(is,)f(the)g(primary)e(opcode)h(is)g(00)h
(and)g(op)3786 2908 y Ff(2)3847 2900 y Fq(is)600 2991
y(010.)i(Fr)o(om)19 b(T)-7 b(able)21 b(9.5,)f(this)h(is)f(a)h
(conditional)f(branch)i(instr)o(uction.)29 b(Using)20
b(the)h(conditional)g(branch)h(format)e(to)600 3083 y(partition)f(the)g
(bits)g(yields:)p 746 3195 2664 4 v 746 3278 4 84 v 3406
3278 V 746 3281 2664 4 v 758 3176 a Fh(31)e(30)g(29)g(28)183
b(25)1339 3177 y(24)1588 3176 y(22)1671 3177 y(21)3348
3176 y(0)795 3261 y Fq(00)69 b(0)1028 3263 y(cd=1000)1441
3262 y(010)1982 3253 y(disp=0000)20 b(0000)g(0000)g(0000)g(0001)g(10)p
914 3278 4 84 v 997 3278 V 1329 3278 V 1661 3278 V 600
3369 a(Thus,)k(the)g(operator)e(is)h(\223ba\224)h(and)g(the)g
(displacement)e(is)h(+6)h(wor)o(ds.)35 b(The)23 b(following)f(instr)o
(uction)i(will)f(be)g(as-)600 3461 y(sembled)18 b(as)g(0x10800006.)824
3552 y Fo(ba)269 b(.+\(6*4\))600 3643 y Fq(\(When)19
b(you)f(use)g(isem-as,)g(`.')k(is)c(the)i(addr)o(ess)c(of)j(the)g(curr)
o(ent)f(instr)o(uction.)p 600 3693 3300 4 v 600 3845
V 600 3925 a Fs(Example)h(9.10)95 b Fr(Give)18 b(an)h(instruction)e
(that)i(will)f(assemble)h(to)f(the)h(value)g(0x8601600E)600
4041 y Fq(In)26 b(binary)-8 b(,)27 b(the)f(instr)o(uction)h(is)e(10)h
(0001)l(1)i(000000)g(0001.)11 b(.)g(.)g(.)44 b(That)27
b(is,)g(the)f(primary)e(opcode)h(is)g(10)h(and)h(op)3787
4049 y Ff(3)3847 4041 y Fq(is)600 4133 y(000000.)38 b(Fr)o(om)21
b(T)-7 b(able)23 b(9.6,)h(this)f(is)f(an)i(add)f(instr)o(uction.)36
b(Because)22 b(bit)i(13)f(is)g(1,)h(we)f(use)f(the)i(second)e(format)h
(in)600 4224 y(Figur)o(e)17 b(9.3)i(to)f(decode)g(this)h(instr)o
(uction.)p 746 4336 2664 4 v 746 4419 4 84 v 3406 4419
V 746 4422 2664 4 v 758 4317 a Fh(31)e(30)g(29)266 b(25)1339
4318 y(24)1754 4317 y(19)17 b(18)2169 4318 y(14)2252
4317 y(13)2335 4318 y(12)3348 4317 y(0)795 4403 y Fq(10)972
4404 y(r)o(d=0001)l(1)1468 4403 y(000000)1872 4400 y(rs)1934
4408 y Ff(1)1968 4400 y Fq(=00101)2267 4404 y(1)2431
4400 y(siconst)2658 4408 y Ff(13)2723 4400 y Fq(=0)i(0000)i(0000)f(1)l
(1)l(10)p 914 4419 4 84 v 1329 4419 V 1827 4419 V 2242
4419 V 2325 4419 V 600 4511 a(Thus,)27 b(the)e(destination)h(is)f
(\045r3,)h(the)g(sour)o(ce)e(r)o(egister)f(is)h(\045r5,)j(and)e(the)h
(constant)h(is)e(0xE.)f(The)i(following)e(in-)600 4602
y(str)o(uction)19 b(will)f(be)h(assembled)f(as)h(0x8601600E.)824
4693 y Fo(add)224 b(\045r5,)44 b(14,)g(\045r3)p 600 4730
3300 4 v eop
%%Page: 69 71
69 70 bop 0 100 a Fx(Lab)20 b(9.)41 b(The)20 b(SP)-8
b(ARC)21 b(Instr)o(uction)h(Formats)1785 b(69)0 333 y
Fu(9.4)119 b(Summary)0 572 y(9.5)g(Review)30 b(Questions)0
811 y(9.6)119 b(Exercises)p eop
%%Page: 70 72
70 71 bop 600 100 a Fx(70)1783 b(Lab)20 b(9.)41 b(The)21
b(SP)-8 b(ARC)20 b(Instr)o(uction)j(Formats)p eop
%%Page: 71 73
71 72 bop 0 474 3300 12 v 0 723 a Fv(Laboratory)53 b(10)0
976 y(Leaf)g(Procedures)g(on)e(the)h(SP)-15 b(ARC)p 0
1092 1200 12 v 0 1449 a Fu(10.1)119 b(Goal)0 1638 y Fx(T)-8
b(o)21 b(intr)o(oduce)g(the)g(calling)g(conventions)h(associated)e
(with)i(leaf)d(pr)o(ocedur)o(es)g(on)j(the)f(SP)-8 b(ARC.)0
1923 y Fu(10.2)119 b(Objectives)0 2112 y Fx(After)20
b(completing)h(this)h(lab,)e(you)h(will)h(be)e(able)g(to)h(write)g
(assembly)g(language)g(pr)o(ograms)f(that:)125 2288 y
Ft(\017)41 b Fx(Use)20 b(leaf)g(pr)o(ocedur)o(es,)125
2386 y Ft(\017)41 b Fx(Use)20 b(the)h(call)f(and)h(link)g(operation,)g
(and)125 2484 y Ft(\017)41 b Fx(Use)20 b(the)h(\(synthetic\))g(r)o
(eturn)f(fr)o(om)g(leaf)g(operation.)0 2768 y Fu(10.3)119
b(Discussion)0 2958 y Fx(This)27 b(lab)f(is)h(the)g(\002rst)g(of)f(thr)
o(ee)g(labs)g(that)h(cover)f(pr)o(ocedur)o(e)e(calling)j(conventions)h
(on)g(the)e(SP)-8 b(ARC.)0 3057 y(In)27 b(this)g(lab)f(we)h(consider)g
(the)g(conventions)h(associated)e(with)h(leaf)f(pr)o(ocedur)o(es:)35
b(pr)o(ocedur)o(es)25 b(that)0 3157 y(do)e(not)h(make)e(calls)h(to)h
(other)f(pr)o(ocedur)o(es.)30 b(In)24 b(Lab)e(1)-5 b(1)22
b(we)h(consider)g(the)h(use)f(of)g(r)o(egister)f(windows)0
3256 y(on)27 b(the)g(SP)-8 b(ARC.)27 b(In)g(Lab)f(12)g(we)g(complete)h
(our)g(coverage)f(of)h(pr)o(ocedur)o(e)e(calling)i(conventions)h(by)0
3356 y(considering)22 b(the)e(standar)o(d)g(calling)h(conventions)h
(used)e(by)h(compilers.)0 3598 y Fp(10.3.1)99 b(Register)25
b(usage)0 3756 y Fx(The)32 b(SP)-8 b(ARC)31 b(Ar)o(chitectur)o(e)f
(Manual)h(describes)g(a)h(class)f(of)h(pr)o(ocedur)o(es)e(called)h
(\223optimized)g(leaf)0 3855 y(pr)o(ocedur)o(es.\224)53
b(As)30 b(we)h(have)f(noted,)j(a)d(leaf)g(pr)o(ocedur)o(e)e(is)j(a)g
(pr)o(ocedur)o(e)d(that)j(does)f(not)i(call)e(any)0 3955
y(other)h(pr)o(ocedur)o(es.)54 b(Optimized)31 b(r)o(efers)e(to)j(r)o
(estrictions)f(placed)e(on)j(the)f(pr)o(ocedur)o(e's)e(use)i(of)g(the)0
4054 y(r)o(egisters.)125 4154 y(T)-8 b(able)22 b(10.1)f(summarizes)h(r)
o(egister)g(uses)h(for)g(optimized)f(leaf)g(pr)o(ocedur)o(es.)30
b(This)23 b(table)f(speci\002es)0 4254 y(which)33 b(r)o(egisters)f(can)
h(be)f(modi\002ed)h(by)f(a)g(leaf)g(pr)o(ocedur)o(e.)59
b(Registers)33 b(\045r8\226\045r13)d(ar)o(e)h(used)h(for)0
4353 y(parameters)21 b(passed)h(to)h(the)g(leaf)f(pr)o(ocedur)o(e.)29
b(The)22 b(\002rst)h(parameter)e(\(i.e.,)h(the)h(leftmost)g
(parameter\))0 4453 y(should)i(be)f(placed)f(in)i(\045r8,)f(the)h(next)
f(in)h(\045r9,)f(and)g(so)h(forth.)36 b(Note)25 b(that)f(\045r8)f(is)i
(used)f(for)g(the)h(\002rst)0 4553 y(parameter)19 b(and)h(the)h(r)o
(eturn)f(value.)125 4652 y(Beyond)32 b(the)g(r)o(egisters)f(used)h(to)g
(pass)g(parameters)f(to)h(the)g(leaf)f(pr)o(ocedur)o(e,)i(ther)o(e)e
(ar)o(e)g(a)g(few)0 4752 y(other)19 b(conventions)h(in)f(T)-8
b(able)18 b(10.1)e(that)j(ar)o(e)e(worth)i(noting.)26
b(Register)18 b(\045r1)g(can)g(always)g(be)g(used)g(as)g(a)0
4851 y(temporary)g(r)o(egister)g(and)g(the)g(caller)g(cannot)g(assume)h
(that)f(it)h(will)g(r)o(etain)e(its)i(value)f(acr)o(oss)g(a)g(call)g
(to)g(a)0 4951 y(leaf)f(pr)o(ocedur)o(e.)22 b(W)-8 b(e)18
b(have)g(fr)o(equently)f(used)h(this)g(r)o(egister)f(in)i(the)f(sethi)g
(instr)o(uctions)i(used)d(with)i(the)0 5051 y(load)24
b(and)f(stor)o(e)h(instr)o(uctions,)i(and)d(you)i(can)e(continue)i(to)f
(do)g(this)h(in)f(leaf)f(pr)o(ocedur)o(es.)33 b(The)24
b(stack)0 5150 y(pointer)i(is)h(stor)o(ed)e(in)h(\045r14.)40
b(W)-8 b(e)26 b(will)h(discuss)f(the)g(use)g(of)g(the)g(stack)g
(pointer)g(when)h(we)f(consider)0 5250 y(stack)32 b(based)e(calling)i
(conventions)i(in)e(Lab)f(12.)57 b(For)32 b(the)g(moment,)j(note)d
(that)g(a)f(leaf)g(pr)o(ocedur)o(e)0 5350 y(should)h(not)f(alter)f(the)
h(value)f(stor)o(ed)h(in)g(r)o(egister)f(\045r14.)54
b(Finally)-9 b(,)33 b(note)f(that)f(the)f(r)o(eturn)h(addr)o(ess)1608
5560 y(71)p eop
%%Page: 72 74
72 73 bop 600 100 a Fx(72)1785 b(Lab)20 b(10.)40 b(Leaf)19
b(Pr)o(ocedur)o(es)h(on)h(the)g(SP)-8 b(ARC)1238 393
y(T)g(able)21 b(10.1)e(Register)i(usage)f(for)h(optimized)g(leaf)e(pr)o
(ocedur)o(es)1239 539 y Fq(Register\(s\))117 b(Use)528
b(Changed)19 b(by)g(leaf)f(pr)o(ocedur)o(e)p 1189 569
2122 4 v 1239 633 a(\045r0)341 b(zer)o(o)511 b(No)1239
725 y(\045r1)341 b(temporary)303 b(Y)-7 b(es)1239 816
y(\045r2\226\045r7)174 b(caller)6 b('s)17 b(variables)99
b(No)1239 907 y(\045r8)341 b(r)o(eturn)18 b(value)247
b(Y)-7 b(es)1239 999 y(\045r8\226\045r13)137 b(parameters)281
b(Y)-7 b(es)1239 1090 y(\045r14)304 b(stack)19 b(pointer)226
b(No)1239 1181 y(\045r15)304 b(r)o(eturn)18 b(addr)o(ess)171
b(Y)-7 b(es)1239 1272 y(\045r16\226\045r31)100 b(caller)6
b('s)17 b(variable)131 b(No)600 1628 y Fx(\(actually)-9
b(,)32 b(the)g(addr)o(ess)d(of)i(the)h(call)e(instr)o(uction)j(used)e
(to)h(call)e(the)i(leaf)e(pr)o(ocedur)o(e\))f(is)i(stor)o(ed)g(in)600
1727 y(r)o(egister)20 b(\045r15.)k(A)c(leaf)g(pr)o(ocedur)o(e)e(can)j
(alter)f(this)h(r)o(egister;)f(however)-6 b(,)20 b(it)h(will)g(be)g
(dif)o(\002cult)f(to)h(r)o(eturn)600 1827 y(to)g(the)g(point)h(of)e
(the)h(call)g(if)f(you)i(alter)e(the)g(value)h(in\045r15.)725
1927 y(An)26 b(optimized)g(leaf)g(pr)o(ocedur)o(e)f(should)i(only)g
(alter)f(the)h(values)f(stor)o(ed)g(in)h(r)o(egisters)f(\045r1)f(and)
600 2026 y(\045r8\226\045r13.)38 b(If)26 b(the)g(leaf)f(pr)o(ocedur)o
(e)f(r)o(equir)o(es)g(mor)o(e)i(local)g(storage)g(than)g(these)g(r)o
(egisters)f(pr)o(ovide,)600 2126 y(or)c(if)f(the)g(parameters)f(do)i
(not)g(\002t)f(in)h(these)g(r)o(egisters,)e(the)i(leaf)f(pr)o(ocedur)o
(e)e(cannot)j(be)f(implemented)600 2225 y(as)j(an)h(\223optimized\224)f
(leaf)g(pr)o(ocedur)o(e.)32 b(W)-8 b(e)24 b(will)g(discuss)h(the)f
(techniques)g(use)g(to)g(implement)h(other)600 2325 y(types)c(of)g(pr)o
(ocedur)o(es)e(in)i(the)g(next)f(two)i(labs.)600 2567
y Fp(10.3.2)99 b(Calling)25 b(sequence)600 2725 y Fx(In)i(assembly)g
(language,)g(a)f(pr)o(ocedur)o(e)f(is)i(a)f(block)h(of)g(instr)o
(uctions.)44 b(The)27 b(\002rst)g(instr)o(uction)h(in)f(this)600
2824 y(block)21 b(is)g(labeled)f(by)h(the)g(name)f(of)h(the)g(pr)o
(ocedur)o(e.)725 2924 y(T)-8 b(able)16 b(10.2)g(summarizes)h(the)g
(operations)g(used)g(to)h(call)e(and)h(r)o(eturn)f(fr)o(om)h(optimized)
g(leaf)f(pr)o(oce-)600 3024 y(dur)o(es.)31 b(Like)22
b(the)h(branching)g(operations)h(intr)o(oduced)e(in)h(Lab)f(3,)h(these)
f(operations)i(have)e(a)g(branch)600 3123 y(delay)h(slot.)35
b(The)23 b(call)h(and)f(link)h(operation)g(saves)f(the)h(curr)o(ent)f
(value)g(of)h(the)f(PC)h(in)g(\045r15,)f(updates)600
3223 y(the)28 b(PC,)f(and)g(sets)h(the)g(nPC)g(to)g(the)g(addr)o(ess)e
(speci\002ed)h(in)i(the)e(call.)46 b(The)28 b(r)o(etl)f(operation)h
(updates)600 3323 y(the)e(PC)g(and)f(sets)h(to)h(nPC)f(to)g(the)g
(contents)h(of)f(\045r15)e(plus)j(eight.)41 b(The)26
b(\223plus)g(eight\224)f(is)i(needed)e(to)600 3422 y(skip)20
b(over)g(the)g(call)g(instr)o(uction)i(and)d(the)h(instr)o(uction)i(in)
e(the)g(delay)g(slot)g(of)g(the)g(call.)25 b(Examples)20
b(10.1)600 3522 y(and)g(10.2)f(illustrate)i(the)g(use)g(of)f(these)h
(operations.)1559 3786 y(T)-8 b(able)20 b(10.2)f(The)i(call)f(and)h(r)o
(etl)f(operations)1197 3932 y Fq(Operation)286 b(Assembler)17
b(syntax)100 b(Operation)18 b(implemented)p 1147 3962
2207 4 v 1197 4026 a(call)g(and)i(link)216 b(call)99
b(label)316 b(\045r15)18 b(=)h(PC)2507 4118 y(PC)f(=)h(nPC)2507
4209 y(nPC)g(=)g(label)1197 4300 y(r)o(eturn)f(fr)o(om)f(leaf)100
b(r)o(etl)576 b(PC)18 b(=)h(nPC)2507 4392 y(nPC)g(=)g(\045r15)g(+)g(8)p
600 4698 3300 4 v 600 4778 a Fs(Example)i(10.1)76 b Fr(W)o(rite)19
b(SP)-10 b(ARC)20 b(pr)o(ocedur)o(e)h(that)g(prints)f(a)h(NULL)f
(terminated)g(string.)28 b(The)21 b(addr)o(ess)g(of)g(the)g(string)f
(to)600 4869 y(print)e(will)g(be)h(passed)g(as)g(the)g(\002rst)g
(parameter)h(\(i.e.,)e(in)f(\045r8\).)1183 4984 y Fo(.text)824
5076 y(!)45 b(pr_str)f(-)g(print)g(a)h(null)f(terminated)f(string)824
5167 y(!)824 5258 y(!)i(Parameters:)132 b(\045r8)45 b(-)f(pointer)g(to)
h(string)e(\(initially\))824 5350 y(!)p eop
%%Page: 73 75
73 74 bop 0 100 a Fx(Lab)20 b(10.)40 b(Leaf)20 b(Pr)o(ocedur)o(es)f(on)
i(the)g(SP)-8 b(ARC)1786 b(73)224 333 y Fo(!)45 b(Temporaries:)87
b(\045r8)45 b(-)f(the)h(character)e(to)i(be)f(printed)224
424 y(!)672 b(\045r9)45 b(-)f(pointer)g(to)h(string)224
515 y(!)224 698 y(pr_str:)f(mov)223 b(\045r8,)45 b(\045r9)358
b(!)44 b(we)h(need)f(\045r8)g(for)h(the)f("ta)g(1")224
789 y(pr_lp:)89 b(ldub)178 b([\045r9],)44 b(\045r8)269
b(!)44 b(load)h(character)583 881 y(cmp)223 b(\045r8,)45
b(0)448 b(!)44 b(check)g(for)h(null)583 972 y(be)268
b(pr_dn)583 1063 y(nop)583 1155 y(ta)g(1)673 b(!)44 b(print)g
(character)583 1246 y(ba)268 b(pr_lp)583 1337 y(inc)223
b(\045r9)583 b(!)44 b(increment)g(the)g(pointer)224 1520
y(pr_dn:)89 b(retl)896 b(!)44 b(return)g(from)g(leaf)h(procedure)583
1611 y(nop)941 b(!)134 b(\(branch)44 b(delay\))p 0 1651
3300 4 v 0 1804 V 0 1883 a Fs(Example)28 b(10.2)76 b
Fr(W)o(rite)26 b(a)i(SP)-10 b(ARC)26 b(assembly)i(language)g(fragment)f
(that)h(calls)g(the)f(pr)o(ocedur)o(e)h(pr)o(esented)g(in)f(Exam-)0
1975 y(ple)19 b(10.1.)583 2091 y Fo(.data)224 2182 y(str:)179
b(.asciz)88 b("Hello,)44 b(World!)p Fl(n)p Fo(n")583
2365 y(.text)224 2456 y(main:)134 b(set)223 b(str,)45
b(\045r8)358 b(!)44 b(setup)g(the)h(first)f(argument)583
2548 y(call)178 b(pr_str)448 b(!)44 b(call)h(print)f(string)583
2639 y(nop)941 b(!)134 b(\(branch)44 b(delay\))224 2730
y(end:)179 b(ta)268 b(0)673 b(!)44 b(exit)h(gracefully)p
0 2770 V 0 3063 a Fp(10.3.3)99 b(Instruction)25 b(Encodings)0
3221 y Fx(W)-8 b(e)27 b(have)e(intr)o(oduced)h(two)h(new)g(instr)o
(uctions)h(in)f(this)g(lab:)36 b Fw(call)26 b Fx(and)g
Fw(r)o(etl)p Fx(.)42 b(Figur)o(e)26 b(10.1)f(illustrates)0
3320 y(the)c(format)g(used)g(to)h(encode)f(call)g(instr)o(uctions.)29
b(This)22 b(instr)o(uction)h(encoding)f(uses)f(two)h(\002elds.)27
b(The)0 3420 y(\002rst)c(\002eld)g(holds)g(the)g(2-bit)f(value)g(01,)g
(the)h(second)g(holds)h(a)e(30-bit)g(displacement)g(for)h(the)g(pr)o
(ogram)0 3519 y(counter)-6 b(.)34 b(This)24 b(\002eld)f(is)h(encoded)e
(in)i(the)g(same)f(fashion)h(as)f(the)h(displacement)f(\002eld)g(for)g
(the)h(condi-)0 3619 y(tional)d(branch)g(instr)o(uctions)h(\(see)f(Lab)
e(9)i(for)f(mor)o(e)h(details\).)p 53 3836 3195 4 v 53
3936 4 100 v 3244 3936 V 53 3939 3195 4 v 73 3809 a Fh(31)172
3808 y(30)34 b(29)2840 b(0)118 3911 y Fq(01)1645 3903
y(disp)1790 3911 y Ff(30)p 254 3936 4 100 v 738 4201
a Fx(Figur)o(e)20 b(10.1)f(Instr)o(uction)k(format)d(for)h(call)f
(instr)o(uctions)p 0 4427 3300 4 v 0 4507 a Fs(Example)f(10.3)95
b Fr(Show)18 b(how)h(the)g(call)g(instruction)f(in)g(the)h(following)e
(SP)-10 b(ARC)18 b(assembly)h(code)h(fragment)f(is)f(encoded.)583
4598 y Fo(.text)224 4690 y(main:)134 b(set)223 b(str,)45
b(\045r8)358 b(!)44 b(setup)g(the)h(first)f(argument)583
4781 y(call)178 b(pr_string)313 b(!)44 b(call)h(print)f(string)583
4872 y(nop)941 b(!)134 b(\(branch)44 b(delay\))583 4964
y(ta)268 b(0)673 b(!)44 b(exit)h(gracefully)224 5146
y(pr_string:)583 5238 y(mov)223 b(\045r8,)45 b(\045r9)358
b(!)44 b(we)h(need)f(\045r8)g(for)h(the)f("ta)g(1")p
eop
%%Page: 74 76
74 75 bop 600 100 a Fx(74)1785 b(Lab)20 b(10.)40 b(Leaf)19
b(Pr)o(ocedur)o(es)h(on)h(the)g(SP)-8 b(ARC)600 333 y
Fq(In)21 b(this)g(case,)f(the)h(tar)o(get)f(is)f(3)i(instr)o(uctions)g
(fr)o(om)e(the)i(call)f(instr)o(uction,)h(so)f(the)h
Fr(disp)3063 341 y Ff(30)3149 333 y Fq(\002eld)f(is)f(set)i(to)f(the)h
(30-bit)600 424 y(binary)e(encoding)f(of)g(3.)600 515
y(This)g(leads)g(to)h(the)g(following)f(machine)i(instr)o(uction:)p
746 628 2664 4 v 746 711 4 84 v 3406 711 V 746 714 2664
4 v 758 609 a Fh(31)841 608 y(30)d(29)2358 b(0)795 694
y Fq(01)668 b(0000)20 b(0000)g(0000)g(0000)h(0000)f(0000)g(0000)g(1)l
(1)p 914 711 4 84 v 600 802 a(That)g(is,)d(0100)k(0000)f(0000)g(0000)g
(0000)g(0000)g(0000)g(001)l(1)g(in)f(binary)-8 b(,)18
b(or)g(0x40000003.)p 600 851 3300 4 v 725 1000 a Fx(The)24
b Fw(r)o(etl)g Fx(instr)o(uction)i(is)f(actually)f(a)g(synthetic)h
(instr)o(uction)h(that)f(is)g(translated)e(to)i(a)f Fw(jmpl)g
Fx(\(jump)600 1099 y(and)19 b(link\))g(instr)o(uction.)27
b(The)19 b Fw(jmpl)f Fx(instr)o(uction)j(has)e(two)h(operands:)k(an)19
b(addr)o(ess,)e(and)i(a)f(destination)600 1199 y(r)o(egister)-6
b(.)49 b(The)29 b(addr)o(ess)e(is)i(similar)g(to)h(the)f(addr)o(esses)e
(used)i(in)g(the)g(load)f(and)h(stor)o(e)f(instr)o(uctions;)600
1299 y(however)-6 b(,)20 b(the)h(brackets)f(surr)o(ounding)h(the)g
(addr)o(ess)e(in)i(the)g(load)f(and)g(stor)o(e)h(instr)o(uctions)h(ar)o
(e)d(omit-)600 1398 y(ted)k(in)h(the)g(jmpl)g(instr)o(uction.)36
b(When)24 b(a)f(SP)-8 b(ARC)24 b(pr)o(ocessor)f(executes)g(a)g(jmpl)i
(instr)o(uction,)h(it)d(saves)600 1498 y(the)29 b(addr)o(ess)e(of)h
(the)h(jmpl)g(instr)o(uction)i(in)e(the)f(destination)i(r)o(egister)d
(and)i(sets)f(the)h(next)g(pr)o(ogram)600 1597 y(counter)22
b(to)h(the)f(addr)o(ess)f(speci\002ed)h(in)g(the)h(instr)o(uction.)31
b(Figur)o(e)22 b(10.2)f(illustrates)h(the)g(formats)g(used)600
1697 y(to)f(encode)g(jmpl)g(instr)o(uctions.)1523 1873
y Fq(A.)e(Instr)o(uctions)g(of)g(the)g(form:)j(jmpl)38
b(rs)2691 1881 y Ff(1)2724 1873 y Fq(+rs)2831 1881 y
Ff(2)2865 1873 y Fq(,)19 b(r)o(d)p 653 2002 3195 4 v
653 2102 4 100 v 3844 2102 V 653 2105 3195 4 v 673 1975
a Fh(31)33 b(30)h(29)332 b(25)1370 1976 y(24)1868 1975
y(19)34 b(18)2366 1976 y(14)2466 1975 y(13)2565 1976
y(12)3279 1975 y(5)3379 1976 y(4)3778 1975 y(0)718 2077
y Fq(10)1067 2079 y(r)o(d)1544 2077 y(1)l(1)l(1000)2152
2066 y(rs)2214 2074 y Ff(1)2480 2077 y Fq(0)2728 2071
y(unused\(zer)o(o\))3547 2066 y(rs)3609 2074 y Ff(2)p
854 2102 4 100 v 1352 2102 V 1949 2102 V 2448 2102 V
2547 2102 V 3344 2102 V 1422 2318 a Fq(B.)18 b(Instr)o(uctions)i(of)e
(the)h(form:)j(jmpl)38 b(rs)2577 2326 y Ff(1)2611 2318
y Fq(+siconst)2883 2326 y Ff(13)2948 2318 y Fq(,)18 b(r)o(d)p
653 2472 3195 4 v 653 2571 4 100 v 3844 2571 V 653 2574
3195 4 v 673 2444 a Fh(31)33 b(30)h(29)332 b(25)1370
2445 y(24)1868 2444 y(19)34 b(18)2366 2445 y(14)2466
2444 y(13)2565 2445 y(12)3778 2444 y(0)718 2547 y Fq(10)1067
2548 y(r)o(d)1544 2547 y(1)l(1)l(1000)2152 2535 y(rs)2214
2543 y Ff(1)2480 2548 y Fq(1)3050 2543 y(siconst)3277
2551 y Ff(13)p 854 2571 4 100 v 1352 2571 V 1949 2571
V 2448 2571 V 2547 2571 V 1300 2837 a Fx(Figur)o(e)21
b(10.2)e(Instr)o(uction)j(formats)f(for)f(jmpl)i(instr)o(uctions)725
3035 y(The)27 b(r)o(etl)g(instr)o(uction)j(is)e(translated)f(to)h(a)f
(jmpl)i(instr)o(uction)g(with)g(the)f(addr)o(ess)e(set)h(to)i
(\045r15+8)600 3135 y(and)22 b(the)h(destination)g(r)o(egister)f(set)h
(to)g(\045r0.)31 b(That)22 b(is,)h(the)g(tar)o(get)f(of)h(the)f(branch)
h(is)g(instr)o(uction)h(after)600 3234 y(the)c(branch)g(delay)g(slot)h
(of)f(the)g(call)g(instr)o(uction)i(\(r)o(emember)-6
b(,)18 b(call)i(instr)o(uction)i(saved)d(its)i(addr)o(ess)e(in)600
3334 y(\045r15\),)g(and)h(the)h(addr)o(ess)e(of)i(the)g(r)o(etl)f
(instr)o(uction)i(is)f(discar)o(ded)e(\(saved)h(in)h(\045r0\).)p
600 3453 3300 4 v 600 3532 a Fs(Example)e(10.4)95 b Fr(Show)18
b(how)h(a)g(r)o(etl)f(instruction)g(is)g(encoded.)600
3648 y Fq(A)f(r)o(etl)f(instr)o(uction)i(is)e(translated)h(to)g(the)g
(instr)o(uction)h(jmpl)34 b(\045r15+8,)17 b(\045r0.)22
b(This)16 b(instr)o(uction)i(is)e(encoded)g(using)600
3739 y(the)22 b(second)f(format)g(shown)i(in)e(Figur)o(e)f(10.2.)31
b(Figur)o(e)20 b(9.3.)31 b(As)22 b(such,)g(we)f(must)h(determine)e(the)
i(values)g(for)e(the)600 3831 y Fr(rd)p Fq(,)f Fr(rs)762
3839 y Ff(1)797 3831 y Fq(,)f(and)h Fr(siconst)1188 3839
y Ff(13)1272 3831 y Fq(\002elds.)j(The)c(following)g(table)h
(summarizes)f(these)h(encodings:)799 3924 y(Field)224
b(Symbolic)18 b(value)100 b(Encoded)18 b(value)p 749
3955 1639 4 v 799 4019 a(r)o(d)317 b(\045r0)476 b(00000)799
4110 y(rs)861 4118 y Ff(1)1191 4110 y Fq(\045r15)439
b(01)l(1)l(1)l(1)799 4201 y(siconst)1026 4209 y Ff(13)1191
4201 y Fq(8)569 b(0000)20 b(0000)g(0100)g(0)600 4291
y(These)e(encodings)g(lead)g(to)h(the)h(following)d(machine)j(instr)o
(uction:)p 746 4404 2664 4 v 746 4487 4 84 v 3406 4487
V 746 4490 2664 4 v 758 4385 a Fh(31)841 4384 y(30)d(29)266
b(25)1339 4385 y(24)349 b(19)17 b(18)266 b(14)17 b(13)g(12)3348
4384 y(0)795 4470 y Fq(10)161 b(00000)257 b(1)l(1)l(1000)263
b(01)l(1)l(1)l(1)2267 4471 y(1)2596 4470 y(0000)20 b(0000)g(0100)g(0)p
914 4487 4 84 v 1329 4487 V 1827 4487 V 2242 4487 V 2325
4487 V 600 4578 a(That)g(is,)d(1000)k(0001)f(1)l(100)g(001)l(1)g(1)l(1)
l(10)g(0000)g(0000)g(1000)g(in)f(binary)-8 b(,)18 b(or)g(0x81C3E008.)p
600 4627 3300 4 v 600 4961 a Fu(10.4)119 b(Summary)600
5150 y Fx(A)24 b(leaf)g(pr)o(ocedur)o(e)e(is)j(a)f(pr)o(ocedur)o(e)f
(that)h(never)g(calls)h(any)f(other)h(pr)o(ocedur)o(e.)35
b(In)25 b(this)g(lab)f(we)g(have)600 5250 y(intr)o(oduced)d(the)h(SP)-8
b(ARC)22 b(instr)o(uctions)h(used)f(to)g(write)f(leaf)g(pr)o(ocedur)o
(es:)26 b(call)21 b(and)h(r)o(etl.)27 b(In)22 b(the)g(next)600
5350 y(two)f(labs,)g(we)f(will)i(examine)e(mor)o(e)h(general)f(pr)o
(ocedur)o(e)f(calling)i(conventions.)p eop
%%Page: 75 77
75 76 bop 0 100 a Fx(Lab)20 b(10.)40 b(Leaf)20 b(Pr)o(ocedur)o(es)f(on)
i(the)g(SP)-8 b(ARC)1786 b(75)0 333 y Fu(10.5)119 b(Review)29
b(Questions)104 523 y Fx(1.)41 b(xxx)0 808 y Fu(10.6)119
b(Exercises)104 997 y Fx(1.)41 b(W)-6 b(rite)25 b(a)h(SP)-8
b(ARC)26 b(assembly)g(language)g(pr)o(ogram)f(consisting)j(of)e(of)g(a)
f(main)i(pr)o(ogram)e(and)g(a)208 1097 y(pr)o(ocedur)o(e,)18
b(\223pr)p 754 1097 25 4 v 29 w(octal\224,)i(that)h(prints)g(an)g
(unsigned)g(integer)g(in)g(octal)g(notation.)104 1197
y(2.)41 b(W)-6 b(rite)25 b(a)h(SP)-8 b(ARC)26 b(assembly)g(language)g
(pr)o(ogram)f(consisting)j(of)e(of)g(a)f(main)i(pr)o(ogram)e(and)g(a)
208 1296 y(pr)o(ocedur)o(e,)18 b(\223pr)p 754 1296 V
29 w(hex\224,)i(that)h(prints)g(an)g(unsigned)g(integer)g(in)g
(hexadecimal)f(notation.)104 1396 y(3.)41 b(W)-6 b(rite)25
b(a)g(SP)-8 b(ARC)26 b(pr)o(ocedur)o(e,)e(called)h(\223str)o(cmp\224,)h
(that)f(compar)o(es)g(two)h(strings.)42 b(Y)-8 b(our)26
b(pr)o(oce-)208 1496 y(dur)o(e)i(should)j(accept)e(two)h(parameters,)h
(s1)e(and)h(s2,)h(both)g(pointers)f(to)h(NULL)e(terminated)208
1595 y(strings.)d(Y)-8 b(our)20 b(pr)o(ocedur)o(e)e(should)j(r)o(eturn)
e(an)h(integer)g(based)f(on)h(the)g(comparison.)26 b(In)20
b(partic-)208 1695 y(ular)-6 b(,)307 1828 y Ft(\017)41
b Fx(if)21 b(\(s1)f Fn(<)g Fx(s1\))g(r)o(eturn)g Ft(\000)p
Fx(1;)307 1927 y Ft(\017)41 b Fx(if)21 b(\(s1)f Fn(>)g
Fx(s2\))g(r)o(eturn)g(1;)307 2027 y Ft(\017)41 b Fx(if)21
b(\(s1)f(==)h(s2\))f(r)o(eturn)g(0;)208 2160 y(Y)-8 b(ou)21
b(should)h(also)f(pr)o(ovide)f(a)g(small)h(driver)f(to)h(test)g(your)g
(pr)o(ocedur)o(e.)104 2259 y(4.)41 b(W)-6 b(rite)28 b(a)f(SP)-8
b(ARC)29 b(pr)o(ocedur)o(e,)f(called)f(\223str)o(chr)6
b(\224,)29 b(that)g(r)o(eturns)e(a)h(pointer)h(to)g(the)f(\002rst)h
(occur)o(-)208 2359 y(r)o(ence)h(of)i(a)f(character)f(within)j(a)e
(string.)60 b(The)31 b(\002rst)h(parameter)e(should)j(be)e(a)g(pointer)
h(to)g(a)208 2459 y(string.)42 b(The)26 b(second)g(parameter)f(should)i
(be)f(the)g(character)f(sear)o(ch)g(for)-6 b(.)41 b(If)26
b(the)g(character)f(is)208 2558 y(not)c(pr)o(esent)f(in)h(the)g
(string,)g(the)g(pr)o(ocedur)o(e)e(should)j(r)o(eturn)e(NULL)f(\(i.e.,)
h(0\).)208 2658 y(Y)-8 b(ou)21 b(should)h(also)f(pr)o(ovide)f(a)g
(small)h(driver)f(to)h(test)g(your)g(pr)o(ocedur)o(e.)104
2758 y(5.)41 b(W)-6 b(rite)32 b(a)g(pr)o(ocedur)o(e)e(to)j(draw)f(a)g
(black)g(pixel)g(at)h(an)f(arbitrary)f(\(x,)k(y\))d(location)h(on)h
(the)e(GX)208 2857 y(device.)24 b(The)d(C)g(declaration)f(for)g(the)h
(pr)o(ocedur)o(e)e(would)i(be:)208 2957 y(void)f(draw)p
595 2957 V 30 w(pixel\(int)g(x,)h(int)g(y\))p eop
%%Page: 76 78
76 77 bop 600 100 a Fx(76)1785 b(Lab)20 b(10.)40 b(Leaf)19
b(Pr)o(ocedur)o(es)h(on)h(the)g(SP)-8 b(ARC)p eop
%%Page: 77 79
77 78 bop 0 474 3300 12 v 0 723 a Fv(Laboratory)53 b(1)-8
b(1)0 976 y(Register)52 b(W)-8 b(indows)p 0 1092 1200
12 v 0 1449 a Fu(1)l(1.1)118 b(Goal)0 1638 y Fx(T)-8
b(o)21 b(intr)o(oduce)g(r)o(egister)f(windows.)0 1919
y Fu(1)l(1.2)118 b(Objectives)0 2108 y Fx(After)20 b(completing)h(this)
h(lab,)e(you)h(will)h(be)e(able)g(to)h(use:)125 2253
y Ft(\017)41 b Fx(Register)21 b(windows,)125 2348 y Ft(\017)41
b Fx(The)20 b(save)g(and)h(r)o(estor)o(e)e(operations,)125
2442 y Ft(\017)41 b Fx(The)20 b(\(synthetic\))h(r)o(eturn)f(operation.)
0 2723 y Fu(1)l(1.3)118 b(Discussion)0 2912 y Fx(In)30
b(this)h(lab)f(we)g(intr)o(oduce)f(a)h(mor)o(e)f(general)h(pr)o(ocedur)
o(e)e(calling)i(mechanism)h(that)f(uses)g(r)o(egister)0
3011 y(windows.)25 b(W)-8 b(e)17 b(intr)o(oduce)f(the)h(save)f(and)g(r)
o(estor)o(e)f(instr)o(uctions)j(and)f(another)f(synthetic)i(instr)o
(uction,)0 3111 y(r)o(et,)i(for)g(r)o(eturning)h(fr)o(om)f(pr)o(ocedur)
o(es.)0 3349 y Fp(1)l(1.3.1)99 b(Register)25 b(W)l(indows)0
3507 y Fx(T)-8 b(o)30 b(this)g(point,)i(we)d(have)g(used)g(the)g(\045r)
g(names)h(for)f(the)g(integer)h(r)o(egisters.)50 b(Fr)o(om)29
b(this)i(point)f(on,)0 3607 y(we)j(will)h(use)f(the)g(alternate)f
(names)h(for)f(these)h(r)o(egisters.)62 b(The)33 b(alternate)f(names)h
(ar)o(e)e(shown)k(in)0 3706 y(T)-8 b(able)20 b(1)-5 b(1.1.)896
3940 y(T)d(able)20 b(1)-5 b(1.1)19 b(Names)i(for)f(the)h(integer)g(r)o
(egisters)741 4086 y Fq(Integer)d(r)o(egisters)97 b(Alternate)19
b(names)100 b(Gr)o(oup)18 b(name)p 691 4117 1919 4 v
741 4181 a(\045r0\226\045r7)337 b(\045g0\226\045g7)322
b(Global)19 b(r)o(egisters)741 4272 y(\045r8\226\045r15)300
b(\045o0\226\045o7)324 b(Output)19 b(r)o(egisters)741
4363 y(\045r16\226\045r23)263 b(\045l0\226\045l7)362
b(Local)18 b(r)o(egisters)741 4455 y(\045r24\226\045r31)263
b(\045i0\226\045i7)362 b(Input)20 b(r)o(egisters)125
4752 y Fx(The)i(alternate)f(names)h(r)o(e\003ect)g(the)g(uses)h(of)f
(the)h(r)o(egisters)e(when)i(pr)o(ocedur)o(es)e(use)h(r)o(egister)g
(win-)0 4851 y(dows.)37 b(The)24 b(global)h(r)o(egisters)f
(\(\045g0\226\045g7\))e(ar)o(e)h(shar)o(ed)g(by)h(all)h(pr)o(ocedur)o
(es.)34 b(The)25 b(output)g(r)o(egisters)0 4951 y(ar)o(e)e(used)h(for)f
(parameters)g(when)i(calling)f(another)h(pr)o(ocedur)o(e.)33
b(That)24 b(is,)h(the)f(output)h(r)o(egisters)e(ar)o(e)0
5051 y(outputs)j(fr)o(om)f(the)h(caller)f(to)h(the)f(called)g(pr)o
(ocedur)o(e.)38 b(The)26 b(local)f(r)o(egisters)g(\(\045l0\226\045l7\))
e(ar)o(e)h(used)i(to)0 5150 y(stor)o(e)d(local)g(values)g(used)h(by)f
(a)g(pr)o(ocedur)o(e.)31 b(The)24 b(input)f(r)o(egisters)g
(\(\045i0\226\045i7\))e(ar)o(e)h(used)h(for)g(the)h(pa-)0
5250 y(rameters)c(passed)h(into)h(the)f(pr)o(ocedur)o(e.)k(That)c(is,)h
(the)f(input)h(r)o(egisters)f(ar)o(e)f(inputs)h(passed)g(fr)o(om)g(the)
0 5350 y(caller)f(to)h(the)g(called)f(pr)o(ocedur)o(e.)1608
5560 y(77)p eop
%%Page: 78 80
78 79 bop 600 100 a Fx(78)2244 b(Lab)20 b(1)-5 b(1.)40
b(Register)22 b(W)-5 b(indows)725 333 y(When)20 b(you)g(consider)g(the)
g(r)o(elationship)g(between)g(the)g(output)h(and)e(input)h(r)o
(egisters,)g(the)g(trick)g(is)600 432 y(to)h(make)g(the)f(caller)6
b('s)21 b(output)g(r)o(egisters)f(the)h(same)f(as)h(the)g(called)e(pr)o
(ocedur)o(e's)g(input)j(r)o(egisters.)i(On)600 532 y(the)d(SP)-8
b(ARC,)20 b(this)i(is)f(done)g(using)h Fw(overlapping)d(r)o(egister)i
(windows)p Fx(.)725 632 y(All)29 b(pr)o(ocedur)o(es)f(shar)o(e)h(the)h
(global)g(r)o(egisters)g(\(\045g0\226\045g7\).)50 b(The)30
b(r)o(emaining)g(r)o(egisters,)h(\045o0\226)600 731 y(\045o7,)26
b(\045l0\226\045l7,)e(and)h(\045i0\226\045i7,)g(ar)o(e)f(called)g(a)h
Fw(r)o(egister)h(window)p Fx(.)39 b(When)26 b(a)e(pr)o(ocedur)o(e)g
(starts)h(its)h(ex-)600 831 y(ecution,)e(it)g(allocates)f(a)g(set)h(of)
f(16)g(r)o(egisters)f(\(using)i(the)g(save)f(instr)o(uction)i(as)e
(described)g(in)h(the)f(fol-)600 930 y(lowing)d(section\).)25
b(The)19 b(new)g(r)o(egister)f(set)h(pr)o(ovides)f(the)h(pr)o(ocedur)o
(e)e(with)i(its)h(own)f(output)h(and)e(local)600 1030
y(r)o(egisters)32 b(\(\045o0\226\045o7)e(and)i(\045l0\226\045l7\).)58
b(The)32 b(pr)o(ocedur)o(e's)f(input)i(r)o(egisters)e
(\(\045i0\226\045i7\))f(ar)o(e)h(over)o(-)600 1130 y(lapped)20
b(with)i(the)g(caller)6 b('s)21 b(output)h(r)o(egisters.)k(Figur)o(e)21
b(1)-5 b(1.1)20 b(illustrates)i(the)f(overlapping)g(of)h(r)o(egister)
600 1229 y(windows)g(between)f(the)f(caller)g(and)h(the)g(callee.)621
1430 y Fq(Global)d(r)o(egisters)p 628 1497 505 4 v 628
2161 4 665 v 1129 2161 V 628 2164 505 4 v 631 2080 499
4 v 631 1997 V 631 1914 V 631 1830 V 631 1747 V 631 1664
V 631 1581 V 1171 2136 a(\045g0)g(\(\045r0\))1171 2053
y(\045g1)g(\(\045r1\))1171 1970 y(\045g2)g(\(\045r2\))1171
1887 y(\045g3)g(\(\045r3\))1171 1804 y(\045g4)g(\(\045r4\))1171
1721 y(\045g5)g(\(\045r5\))1171 1638 y(\045g6)g(\(\045r6\))1171
1555 y(\045g7)g(\(\045r7\))p 1999 4984 4 3653 v 2497
4984 V 2001 4819 499 4 v 2001 4736 V 2001 4653 V 2001
4570 V 2001 4487 V 2001 4404 V 2001 4321 V 2001 4238
V 2001 4155 V 2001 4072 V 2001 3989 V 2001 3906 V 2001
3823 V 2001 3740 V 2001 3657 V 2001 3574 V 2001 3491
V 2001 3408 V 2001 3325 V 2001 3242 V 2001 3159 V 2001
3076 V 2001 2993 V 2001 2910 V 2001 2827 V 2001 2744
V 2001 2661 V 2001 2578 V 2001 2495 V 2001 2412 V 2001
2329 V 2001 2246 V 2001 2163 V 2001 2080 V 2001 1997
V 2001 1914 V 2001 1830 V 2001 1747 V 2001 1664 V 2001
1581 V 2001 1498 V 2001 4821 499 7 v 2001 4157 V 2001
3493 V 2001 2828 V 2001 2164 V 2001 1500 V 2541 4819
1329 4 v 2541 4155 V 2541 3491 V 2541 2827 V 2541 2163
665 4 v 2541 1498 V 1793 1498 167 4 v 1586 3491 374 4
v 1692 2420 a(Callee's)1697 2511 y(r)o(egister)1683 2603
y(window)p 1875 2244 4 748 v 1876 1580 a Fi(6)p 1875
3489 V 1876 3489 a(?)1575 3174 y Fq(Overlap)p 1709 3074
4 250 v 1710 2908 a Fi(6)p 1709 3489 V 1710 3489 a(?)p
1461 2827 333 4 v 1471 3748 a Fq(Caller)6 b('s)1475 3840
y(r)o(egister)1461 3931 y(window)p 1543 3572 4 748 v
1544 2908 a Fi(6)p 1543 4818 V 1544 4818 a(?)p 1461 4819
499 4 v 2744 1378 a Fq(Callee's)2756 1469 y(Names)3408
2706 y(Caller)g('s)3420 2798 y(Names)p 2579 1497 588
4 v 2579 3489 4 1993 v 3163 3489 V 2579 3492 588 4 v
2582 1557 a(\045o0)19 b(\(\045r8\))2582 1640 y(\045o1)g(\(\045r9\))2582
1723 y(\045o2)g(\(\045r10\))2582 1807 y(\045o3)g(\(\045r1)l(1\))2582
1890 y(\045o4)g(\(\045r12\))2582 1973 y(\045o5)g(\(\045r13\))2582
2053 y(\045o6)g(\(\045r14\),)f(\045sp)2582 2139 y(\045o7)h(\(\045r15\))
2582 2222 y(\045l0)g(\(\045r16\))2582 2305 y(\045l1)g(\(\045r17\))2582
2388 y(\045l2)g(\(\045r18\))2582 2471 y(\045l3)g(\(\045r19\))2582
2554 y(\045l4)g(\(\045r20\))2582 2637 y(\045l5)g(\(\045r21\))2582
2720 y(\045l6)g(\(\045r22\))2582 2803 y(\045l7)g(\(\045r23\))2582
2886 y(\045i0)g(\(\045r24\))2582 2969 y(\045i1)g(\(\045r25\))2582
3052 y(\045i2)g(\(\045r26\))2582 3135 y(\045i3)g(\(\045r27\))2582
3218 y(\045i4)g(\(\045r28\))2582 3301 y(\045i5)g(\(\045r29\))2582
3381 y(\045i6)g(\(\045r30\),)f(\045fp)2582 3467 y(\045i7)h(\(\045r31\))
p 3243 2825 V 3243 4818 4 1993 v 3827 4818 V 3243 4821
588 4 v 3246 2886 a(\045o0)g(\(\045r8\))3246 2969 y(\045o1)g
(\(\045r9\))3246 3052 y(\045o2)g(\(\045r10\))3246 3135
y(\045o3)g(\(\045r1)l(1\))3246 3218 y(\045o4)g(\(\045r12\))3246
3301 y(\045o5)g(\(\045r13\))3246 3381 y(\045o6)g(\(\045r14\),)f(\045sp)
3246 3467 y(\045o7)h(\(\045r15\))3246 3550 y(\045l0)g(\(\045r16\))3246
3633 y(\045l1)g(\(\045r17\))3246 3716 y(\045l2)g(\(\045r18\))3246
3799 y(\045l3)g(\(\045r19\))3246 3882 y(\045l4)g(\(\045r20\))3246
3965 y(\045l5)g(\(\045r21\))3246 4048 y(\045l6)g(\(\045r22\))3246
4131 y(\045l7)g(\(\045r23\))3246 4214 y(\045i0)g(\(\045r24\))3246
4297 y(\045i1)g(\(\045r25\))3246 4380 y(\045i2)g(\(\045r26\))3246
4463 y(\045i3)g(\(\045r27\))3246 4546 y(\045i4)g(\(\045r28\))3246
4629 y(\045i5)g(\(\045r29\))3246 4710 y(\045i6)g(\(\045r30\),)f(\045fp)
3246 4795 y(\045i7)h(\(\045r31\))1476 5249 y Fx(Figur)o(e)h(1)-5
b(1.1)20 b(Overlapping)g(r)o(egister)g(windows)p eop
%%Page: 79 81
79 80 bop 0 100 a Fx(Lab)20 b(1)-5 b(1.)41 b(Register)21
b(W)-5 b(indows)2246 b(79)125 333 y(In)27 b(addition)g(to)h(the)f(r)o
(egister)g(names)g(we)g(have)g(discussed,)h(Figur)o(e)f(1)-5
b(1.1)26 b(intr)o(oduces)h(two)h(new)0 432 y(names:)38
b(\045sp)27 b(and)g(\045fp.)44 b(The)27 b(\002rst)g(of)g(these,)i
(\045sp,)f(denotes)g(the)f(stack)g(pointer)-6 b(.)44
b(In)28 b(an)f(assembly)0 532 y(language)20 b(pr)o(ogram,)g(\045sp)h
(is)g(simply)h(another)f(name)g(for)f(\045o6.)26 b(Similarly)-9
b(,)20 b(\045fp)g(denotes)h(the)g(frame)0 632 y(pointer)33
b(and)f(is)h(simply)h(another)e(name)h(for)f(\045i6.)61
b(W)-8 b(e)32 b(will)i(discuss)f(the)f(special)g(uses)h(of)g(these)0
731 y(r)o(egisters)25 b(\(and)g(hence)h(the)g(additional)g(names\))f
(in)i(the)f(next)g(lab)f(when)h(we)g(consider)g(stack)g(frame)0
831 y(or)o(ganization.)125 930 y(An)h(implementation)i(of)f(the)g(SP)-8
b(ARC)28 b(integer)g(unit)g(may)g(have)g(between)f(40)g(and)h(520)e
(integer)0 1030 y(r)o(egisters.)34 b(Every)23 b(SP)-8
b(ARC)24 b(has)f(8)h(global)f(r)o(egisters,)h(plus)g(a)f(cir)o(cular)g
(stack)g(of)h(2)f(to)h(32)f(r)o(egister)g(sets.)0 1130
y(Each)i(r)o(egister)g(set)h(has)g(16)f(r)o(egisters.)40
b(The)26 b(number)g(of)g(r)o(egisters)g(sets)g(is)g(implementation)h
(depen-)0 1229 y(dent.)d(Number)18 b(of)g(r)o(egister)f(sets)h(pr)o
(ovided)f(a)h(particular)e(implementation)k(of)d(the)i(SP)-8
b(ARC)18 b(ar)o(chitec-)0 1329 y(tur)o(e)i(has)h(been)f(given)h(the)g
(name)f(NWINDOWS.)h(ISEM)e(pr)o(ovides)h(32)g(r)o(egister)g(sets,)h
(the)g(maximum)0 1429 y(number)j(supported)g(by)h(the)f(SP)-8
b(ARC)24 b(Ar)o(chitectur)o(e.)34 b(Most)24 b(har)o(dwar)o(e)e
(implementations)k(pr)o(ovide)0 1528 y(7)20 b(or)h(8)f(r)o(egister)g
(sets.)0 1771 y Fp(1)l(1.3.2)99 b(Save)25 b(and)f(Restore)0
1929 y Fx(The)18 b(curr)o(ent)f(window)i(in)f(the)g(integer)g(r)o
(egisters)f(is)i(given)f(by)g(the)g(curr)o(ent)f(window)i(pointer)f
(\(CWP\).)0 2029 y(The)g(CWP)h(is)f(stor)o(ed)g(in)h(the)f(lower)h
(\002ve)f(bits)h(of)f(the)h(pr)o(ocessor)f(status)g(r)o(egister)g
(\(PSR\).)f(The)i(save)e(and)0 2128 y(r)o(estor)o(e)i(instr)o(uctions)k
(let)e(the)g(pr)o(ogrammer)f(to)h(manipulate)f(the)h(CWP)-11
b(.)125 2228 y(T)j(able)19 b(1)-5 b(1.2)19 b(summarizes)h(the)h(SP)-8
b(ARC)20 b(save)f(and)h(r)o(estor)o(e)f(operations.)26
b(SP)-8 b(ARC)20 b(assemblers)g(pr)o(o-)0 2327 y(vide)c(two)g(instr)o
(uction)i(formats)e(for)g(save)f(instr)o(uctions)j(and)e(thr)o(ee)f
(formats)h(for)g(r)o(estor)o(e)e(instr)o(uctions.)0 2427
y(Both)27 b(formats)f(for)g(the)g(save)g(instr)o(uction)i(and)e(the)g
(\002rst)h(two)g(formats)f(for)g(the)g(r)o(estor)o(e)f(instr)o(uction)0
2527 y(use)g(thr)o(ee)f(explicit)g(operands\227two)h(sour)o(ce)g
(operands)f(and)g(a)h(destination)g(operand.)37 b(In)25
b(the)g(\002rst)0 2626 y(format,)j(both)f(sour)o(ce)g(operands)f(ar)o
(e)f(in)j(r)o(egisters.)43 b(In)27 b(the)g(second)g(format,)h(one)f
(sour)o(ce)g(operand)0 2726 y(is)g(in)h(a)e(r)o(egister)-6
b(,)27 b(the)h(other)f(is)g(speci\002ed)g(using)g(a)g(small)g(constant)
h(value.)43 b(This)28 b(constant)f(may)g(be)0 2826 y(positive)22
b(or)g(negative;)g(however)g(its)g(2's)g(complement)g(r)o(epr)o
(esentation)f(must)i(\002t)f(in)g(13)f(bits.)29 b(Its)22
b(im-)0 2925 y(portant)h(to)g(note,)h(for)e(both)i(the)f(save)f(and)h
(r)o(estor)o(e)e(operations,)j(that)f(the)g(destination)g(r)o(egister)f
(is)i(in)0 3025 y(the)j(r)o(egister)e(window)j Fw(after)f
Fx(the)f(CWP)h(has)g(been)f(modi\002ed.)43 b(The)27 b(r)o(estor)o(e)e
(instr)o(uction)j(also)f(has)f(a)0 3124 y(format)20 b(that)h(doesn't)g
(have)g(any)f(operands.)750 3391 y(T)-8 b(able)21 b(1)-5
b(1.2)19 b(Saving)h(and)h(r)o(estoring)g(r)o(egister)f(windows)355
3536 y Fq(Operation)307 b(Syntax)592 b(Operation)18 b(implemented)p
306 3567 2689 4 v 355 3631 a(save)h(caller)6 b('s)239
b(save)18 b Fr(rs)1222 3639 y Ff(1)1257 3631 y Fq(,)g
Fr(rs)1352 3639 y Ff(2)1387 3631 y Fq(,)g Fr(rd)325 b
Fq(r)o(es)17 b(=)i(r)o(eg[)p Fr(rs)2183 3639 y Ff(1)2216
3631 y Fq(]+r)o(eg[)p Fr(rs)2476 3639 y Ff(2)2509 3631
y Fq(])355 3722 y(r)o(egister)e(window)916 b(CWP)18 b(=)h(\(CWP)p
Fl(\000)p Fq(1\))g(\045)f(NWINDOWS)1815 3814 y(r)o(eg[)p
Fr(rd)p Fq(])f(=)i(r)o(es)999 3905 y(save)f Fr(rs)1222
3913 y Ff(1)1257 3905 y Fq(,)g Fr(siconst)1503 3913 y
Ff(13)1568 3905 y Fq(,)h Fr(rd)143 b Fq(r)o(es)17 b(=)i(r)o(eg[)p
Fr(rs)2183 3913 y Ff(1)2216 3905 y Fq(]+)p Fr(siconst)2495
3913 y Ff(13)1815 3996 y Fq(CWP)f(=)h(\(CWP)p Fl(\000)p
Fq(1\))g(\045)f(NWINDOWS)1815 4088 y(r)o(eg[)p Fr(rd)p
Fq(])f(=)i(r)o(es)355 4179 y(r)o(estor)o(e)e(caller)6
b('s)161 b(r)o(estor)o(e)16 b Fr(rs)1300 4187 y Ff(1)1335
4179 y Fq(,)i Fr(rs)1430 4187 y Ff(2)1465 4179 y Fq(,)g
Fr(rd)247 b Fq(r)o(es)17 b(=)i(r)o(eg[)p Fr(sr)2183 4187
y Ff(1)2216 4179 y Fq(]+r)o(eg[)p Fr(sr)2476 4187 y Ff(2)2509
4179 y Fq(])355 4270 y(r)o(egister)e(window)916 b(CWP)18
b(=)h(\(CWP+1\))g(\045)g(NWINDOWS)1815 4362 y(r)o(eg[)p
Fr(rd)p Fq(])e(=)i(r)o(es)999 4453 y(r)o(estor)o(e)d
Fr(rs)p Fq(,)i Fr(siconst)1546 4461 y Ff(13)1611 4453
y Fq(,)h Fr(rd)100 b Fq(r)o(es)17 b(=)i(r)o(eg[)p Fr(rs)p
Fq(]+)p Fr(siconst)2462 4461 y Ff(13)1815 4544 y Fq(CWP)f(=)h
(\(CWP+1\))g(\045)g(NWINDOWS)1815 4636 y(r)o(eg[)p Fr(rd)p
Fq(])e(=)i(r)o(es)999 4727 y(r)o(estor)o(e)589 b(CWP)18
b(=)h(\(CWP+1\))g(\045)g(NWINDOWS)p eop
%%Page: 80 82
80 81 bop 600 100 a Fx(80)2244 b(Lab)20 b(1)-5 b(1.)40
b(Register)22 b(W)-5 b(indows)600 333 y Fp(1)l(1.3.3)99
b(Stack)25 b(management)600 491 y Fx(The)17 b(operands)g(of)h(the)f
(save)g(instr)o(uction)i(ar)o(e)d(commonly)j(used)e(to)h(allocate)e
(space)h(for)g(a)g(stack)g(frame.)600 590 y(W)-8 b(e'll)24
b(discuss)f(the)h(stack)f(and)g(stack)g(frames)f(at)h(gr)o(eater)f
(length)i(in)g(the)f(next)g(lab.)33 b(However)-6 b(,)23
b(to)h(the)600 690 y(save)c(and)g(r)o(estor)o(e)g(instr)o(uctions)j
(corr)o(ectly)-9 b(,)19 b(you)i(must)h(allocate)e(and)g(maintain)h(a)g
(r)o(untime)g(stack.)725 790 y(The)c(r)o(untime)h(stack)g(gr)o(ows)f
(fr)o(om)g(higher)i(to)e(lower)h(addr)o(esses.)23 b(The)18
b(stack)f(pointer)h(\(\045r14,)e(\045o6\))600 889 y(should)22
b(be)f(aligned)g(on)g(an)g(8)g(byte)g(addr)o(ess)f(at)g(all)h(times.)27
b(For)22 b(now)-8 b(,)22 b(we'll)g(use)f(the)g(operands)g(of)g(the)600
989 y(save)29 b(instr)o(uction)h(to)g(subtract)f(96)f(fr)o(om)h(the)g
(stack)g(pointer)h(\(\045sp\).)50 b(The)29 b(r)o(eason)f(for)h(this)h
(will)g(be)600 1088 y(clear)o(er)19 b(in)i(the)g(next)g(lab.)725
1188 y(In)h(most)h(cases,)e(you)i(will)f(simply)h(use)f(the)g(r)o
(estor)o(e)f(instr)o(uction)i(with)g(no)f(ar)o(guments)g(to)g(r)o
(estor)o(e)600 1288 y(the)h(caller)6 b('s)22 b(r)o(egister)f(window)-8
b(.)32 b(However)-6 b(,)23 b(you)g(can)f(occasionally)h(use)f(the)h
(other)g(versions)g(of)f(this)600 1387 y(instr)o(uction)g(to)g(r)o
(eturn)e(a)g(value)g(fr)o(om)g(a)h(pr)o(ocedur)o(e.)600
1630 y Fp(1)l(1.3.4)99 b(Procedure)24 b(calling)i(conventions)600
1788 y Fx(Fr)o(om)19 b(the)g(caller)6 b('s)18 b(perspective)g(using)i
(r)o(egister)e(windows)i(does)f(not)g(change)g(anything)g(about)g(how)
600 1888 y(it)k(interacts)f(with)i(the)e(called)g(pr)o(ocedur)o(e.)29
b(The)23 b(caller)f(still)h(puts)g(the)g(outgoing)h(parameters)d(in)i
(r)o(eg-)600 1987 y(isters)h(\045o0\226\045o5)f(\(\045r8\226\045r13\))e
(and)i(expect)h(the)g(r)o(esult)g(in)g(\045o0)g(\(\045r8\).)34
b(Mor)o(eover)-6 b(,)23 b(the)i(caller)e(may)600 2087
y(assume)30 b(that)g(r)o(egisters)f(\045g0,)j(\045g2\226\045g7,)e
(\045o6)g(\(\045sp\),)h(\045l0\226\045l7,)g(and)e(\045i0\226\045i7)g
(will)h(not)h(be)f(al-)600 2187 y(ter)o(ed)21 b(by)h(the)g(called)g(pr)
o(ocedur)o(e.)27 b(Finally)-9 b(,)23 b(the)f(caller)g(uses)g(the)g
(call)g(instr)o(uction)i(intr)o(oduced)d(in)i(the)600
2286 y(pr)o(evious)d(lab)h(to)g(transfer)f(contr)o(ol)h(to)g(the)g
(called)f(pr)o(ocedur)o(e.)725 2386 y(Fr)o(om)h(the)g(perspective)f(of)
i(the)f(called)f(pr)o(ocedur)o(e,)f(things)k(have)e(changed)f(quite)i
(a)f(bit.)27 b(As)21 b(soon)600 2486 y(as)j(contr)o(ol)h(is)g
(transferr)o(ed)d(to)j(the)f(pr)o(ocedur)o(e,)f(it)i(needs)f(to)h(save)
f(to)h(the)f(caller)6 b('s)24 b(r)o(egister)g(window)-8
b(.)600 2585 y(In)21 b(the)g(body)g(of)g(the)g(pr)o(ocedur)o(e,)e(you)i
(can)g(modify)g(\045g1,)f(\045i0\226\045i5,)f(\045l0\226\045l7,)g(and)h
(\045o0\226\045o6.)25 b(Y)-8 b(ou)600 2685 y(could)27
b(also)f(modify)h(\045i7;)i(however)-6 b(,)27 b(\045i7)f(holds)h(the)g
(r)o(eturn)f(addr)o(ess,)g(so)h(it's)g(not)g(a)f(good)h(idea)f(to)600
2784 y(change)d(it.)34 b(Finally)-9 b(,)24 b(just)g(befor)o(e)e(r)o
(eturning)h(contr)o(ol)h(to)g(the)f(caller)-6 b(,)23
b(the)h(called)e(pr)o(ocedur)o(e)f(needs)j(to)600 2884
y(r)o(estor)o(e)19 b(the)i(caller)6 b('s)21 b(r)o(egister)f(window)-8
b(.)725 2984 y(The)19 b(instr)o(uction)j(used)e(to)g(r)o(estor)o(e)f
(the)h(caller)6 b('s)19 b(r)o(egister)g(window)i(is)g(usually)f(put)g
(in)g(the)g(branch)600 3083 y(delay)e(slot)i(of)f(the)h(instr)o(uction)
h(used)d(to)i(r)o(eturn)e(contr)o(ol)i(to)f(the)h(caller)-6
b(.)24 b(Because)18 b(the)h(caller)6 b('s)19 b(r)o(egister)600
3183 y(window)i(has)f(not)h(been)f(r)o(estor)o(ed)e(when)j(the)f
(called)g(pr)o(ocedur)o(e)e(issues)j(the)f(r)o(eturn)f(instr)o(uction,)
j(the)600 3283 y(r)o(eturn)c(instr)o(uction)j(needs)e(to)g(use)g
(\045i7)f(in)i(calculating)e(the)i(r)o(eturn)e(addr)o(ess)f(instead)i
(of)g(\045o7)f(\(\045r15\).)600 3382 y(SP)-8 b(ARC)22
b(assemblers)h(pr)o(ovide)e(the)i Fw(r)o(et)f Fx(instr)o(uction)i(for)f
(this)g(purpose.)30 b(T)-8 b(able)22 b(1)-5 b(1.3)22
b(summarizes)g(the)600 3482 y(call)e(and)h(r)o(eturn)f(instr)o
(uctions.)1430 3727 y(T)-8 b(able)21 b(1)-5 b(1.3)19
b(The)i(SP)-8 b(ARC)21 b(call)f(and)g(r)o(et)g(operations)1227
3872 y Fq(Operation)504 b(Syntax)185 b(Operation)18 b(implemented)p
1177 3903 2146 4 v 1227 3967 a(call)h(and)g(link)434
b(call)37 b(label)100 b(\045o7)18 b(=)h(PC)2477 4058
y(PC)f(=)h(nPC)2477 4149 y(nPC)g(=)g(label)1227 4241
y(r)o(eturn)f(fr)o(om)f(pr)o(ocedur)o(e)98 b(r)o(et)320
b(PC)18 b(=)h(nPC)2477 4332 y(nPC)g(=)g(\045i7)f(+)h(8)p
600 4645 3300 4 v 600 4725 a Fs(Example)29 b(1)m(1.1)75
b Fr(W)o(rite)27 b(a)h(SP)-10 b(ARC)27 b(assembly)i(language)e(pr)o
(ocedur)o(e,)k(pr)p 2660 4725 23 4 v 27 w(str)-6 b(,)31
b(that)d(will)f(print)h(a)g(NULL)f(terminated)600 4816
y(string.)52 b(Y)-8 b(our)28 b(pr)o(ocedur)o(e)h(should)g(take)g(a)g
(single)f(ar)o(gument,)i(the)f(addr)o(ess)g(of)g(the)g(string)f(to)h
(print.)52 b(In)28 b(writing)g(this)600 4907 y(pr)o(ocedur)o(e,)19
b(you)g(should)f(assume)h(that)g(the)g(pr)o(ocedur)o(e)g(pr)p
2149 4907 V 28 w(ch)g(is)g(available)f(for)h(printing)f(a)h(character)
-6 b(.)1183 5024 y Fo(.text)824 5115 y(!)45 b(pr_str)f(-)g(print)g(a)h
(null)f(terminated)f(string)824 5206 y(!)824 5298 y(!)i(Temporaries:)87
b(\045i0)45 b(-)f(pointer)g(to)h(string)p eop
%%Page: 81 83
81 82 bop 0 100 a Fx(Lab)20 b(1)-5 b(1.)41 b(Register)21
b(W)-5 b(indows)2246 b(81)224 333 y Fo(!)672 b(\045o0)45
b(-)f(character)g(to)g(be)h(printed)224 424 y(!)224 515
y(pr_str:)f(save)178 b(\045sp,)45 b(-96,)f(\045sp)134
b(!)44 b(PROLOGUE)g(-)h(save)f(the)g(current)g(window)g(and)1659
607 y(!)134 b(allocate)44 b(the)g(minimum)g(stack)g(frame)224
789 y(pr_lp:)89 b(ldub)178 b([\045i0],)44 b(\045o0)269
b(!)44 b(load)h(character)583 881 y(cmp)223 b(\045o0,)45
b(0)448 b(!)44 b(check)g(for)h(null)583 972 y(be)268
b(pr_dn)583 1063 y(nop)583 1155 y(call)178 b(pr_char)403
b(!)44 b(print)g(character)583 1246 y(nop)583 1337 y(ba)268
b(pr_lp)583 1429 y(inc)223 b(\045i0)583 b(!)44 b(increment)g(the)g
(pointer)g(\(branch)f(delay\))224 1611 y(pr_dn:)89 b(ret)941
b(!)44 b(EPILOGUE)g(return)g(from)g(procedure)f(and)583
1703 y(restore)761 b(!)134 b(restore)44 b(old)g(window;)g(no)g(return)g
(value)p 0 1739 3300 4 v 0 1892 V 0 1971 a Fs(Example)24
b(1)m(1.2)99 b Fr(W)o(rite)22 b(a)h(\223main\224)g(SP)-10
b(ARC)23 b(assembly)g(language)g(fragment)g(that)h(allocates)f(space)i
(for)e(the)g(stack)h(and)0 2063 y(calls)19 b(the)g(pr)p
333 2063 23 4 v 27 w(str)g(pr)o(ocedur)o(e)g(in)f(the)h(pr)o(evious)g
(example.)583 2179 y Fo(.data)224 2270 y(str:)179 b(.asciz)88
b("Hello,)44 b(World!)p Fl(n)p Fo(n")583 2453 y(.align)88
b(8)224 2544 y(stack_top:)583 2636 y(.)44 b(=)h(.)g(+)f(2048)224
2727 y(stack_bot:)583 2910 y(.text)224 3001 y(start:)583
3092 y(set)223 b(stack_bot-96,)43 b(\045sp)h(!)h(initialize)e(the)i
(stack)f(and)g(allocate)1748 3184 y(!)90 b(the)44 b(minimum)g(stack)g
(frame)583 3275 y(set)223 b(str,)45 b(\045o0)447 b(!)45
b(initialize)e(pointer)h(to)g(str)583 3366 y(call)178
b(pr_str)537 b(!)45 b(call)f(print)g(string)583 3457
y(nop)1030 b(!)135 b(\(branch)43 b(delay\))224 3549 y(end:)179
b(ta)268 b(0)p 0 3578 3300 4 v 0 3731 V 0 3810 a Fs(Example)24
b(1)m(1.3)100 b Fr(W)o(rite)23 b(a)g(pr)o(ocedur)o(e)i(that)f(r)o
(ecursively)g(calculates)g(the)g(Nth)g(Fibonacci)f(number)-6
b(.)38 b(Y)-8 b(ou)23 b(may)h(assume)0 3902 y(that)19
b(N)g(is)f(non-negative)g(and)h(will)f(be)g(small)h(enough)g(that)g(r)o
(egister)f(over\003ow)i(will)d(not)i(occur)-6 b(.)224
4018 y Fo(!)45 b(fib)f(-)h(calculate)e(the)h(Nth)h(Fibonacci)e(number)
224 4109 y(!)224 4201 y(!)314 b(fib\(N\))44 b(=)g(fib\(N-1\))g(+)g
(fib\(N-2\))224 4292 y(!)314 b(fib\(0\))44 b(=)g(fib\(1\))g(=)h(1)224
4475 y(fib:)179 b(save)f(\045sp,)45 b(-96,)f(\045sp)134
b(!)44 b(PROLOGUE)583 4657 y(cmp)223 b(\045i0,)45 b(1)583
4749 y(bg)268 b(fib_call)358 b(!)44 b(call)h(recursively)583
4840 y(nop)583 5023 y(ret)941 b(!)44 b(EPILOGUE)583 5114
y(restore)f(\045g0,)i(1,)f(\045o0)224 b(!)44 b(return)g(1)p
eop
%%Page: 82 84
82 83 bop 600 100 a Fx(82)2244 b(Lab)20 b(1)-5 b(1.)40
b(Register)22 b(W)-5 b(indows)824 333 y Fo(fib_call:)1183
424 y(call)178 b(fib)583 b(!)44 b(call)h(with)f(N-1)1183
515 y(sub)223 b(\045i0,)45 b(1,)f(\045o0)224 b(!)89 b(\(branch)44
b(delay\))1183 607 y(mov)223 b(\045o0,)45 b(\045l0)358
b(!)44 b(\045l0)h(=)f(fib\(N-1\))1183 789 y(call)178
b(fib)583 b(!)44 b(call)h(with)f(N-2)1183 881 y(sub)223
b(\045i0,)45 b(2,)f(\045o0)224 b(!)89 b(\(branch)44 b(delay\))1183
1063 y(ret)941 b(!)44 b(EPILOGUE)1183 1155 y(restore)f(\045l0,)i
(\045o0,)f(\045o0)134 b(!)44 b(return)g(fib\(N-1\))g(+)g(fib\(N-2\))p
600 1191 3300 4 v 600 1484 a Fp(1)l(1.3.5)99 b(Exceptions)600
1642 y Fx(Both)21 b(the)g(save)g(and)f(r)o(estor)o(e)g(operations)h
(can)g(generate)f(exceptions)h(\(or)f(traps\).)25 b(Befor)o(e)20
b(the)h(CWP)g(is)600 1741 y(modi\002ed,)h(the)g(bit)g(in)g(the)g(WIM)g
(coor)o(esponding)g(to)g(the)g(new)g(value)g(for)f(the)h(CWP)g(is)g
(tested.)28 b(If)22 b(the)600 1841 y(bit)e(in)g(the)g(WIM)g(is)g(1,)f
(an)h(exception)g(is)g(generated.)k(For)c(a)g(save)f(instr)o(uction,)j
(this)e(causes)g(a)f(window)600 1941 y(over\003ow)j(trap.)i(For)d(a)g
(r)o(estor)o(e)e(instr)o(uction,)j(this)g(causes)e(a)g(window)i
(under\003ow)g(trap.)725 2040 y(These)k(traps)f(ar)o(e)g(normally)i
(handled)f(by)g(the)h(operating)f(system)h(and)e(ar)o(e)g(transpar)o
(ent)g(to)i(the)600 2140 y(application)18 b(pr)o(ogrammer)-6
b(.)23 b(In)18 b Fw(tkisem)g Fx(these)g(traps)f(ar)o(e)g(handled)g(by)h
(the)g Fw(r)o(om)f Fx(code.)24 b(W)-8 b(e)18 b(will)h(discuss)600
2239 y(the)i(code)f(used)h(to)g(handle)g(these)f(traps)h(in)g(Lab)f
(17.)600 2482 y Fp(1)l(1.3.6)99 b(Instruction)25 b(encoding)600
2640 y Fx(W)-8 b(e)21 b(have)g(intr)o(oduced)g(thr)o(ee)f(new)i(instr)o
(uctions)h(in)e(this)h(lab:)k(save,)21 b(r)o(estor)o(e,)f(and)h(r)o
(et.)26 b(The)21 b(save)f(and)600 2740 y(r)o(estor)o(e)f(instr)o
(uctions)i(ar)o(e)e(encoded)g(as)h(data)e(manipulation)j(instr)o
(uctions)h(\(the)e(instr)o(uction)h(formats)600 2839
y(ar)o(e)i(shown)k(in)e(Figur)o(e)f(9.3\).)36 b(The)25
b(r)o(estor)o(e)f(instr)o(uction)i(with)g(no)f(operands)f(is)i
(actually)e(a)g(synthetic)600 2939 y(instr)o(uction)h(in)g(which)g(all)
e(of)h(the)g(operands)f(ar)o(e)g(\045g0.)34 b(T)-8 b(able)23
b(1)-5 b(1.4)23 b(summarizes)g(the)h(encodings)h(of)600
3039 y(the)c Fw(op)815 3051 y Fc(3)872 3039 y Fx(\002eld)g(for)f(the)h
(save)f(and)h(r)o(estor)o(e)e(instr)o(uctions.)1228 3305
y(T)-8 b(able)20 b(1)-5 b(1.4)20 b(Encoding)h(op)2071
3317 y Fc(3)2129 3305 y Fx(in)g(save)g(and)f(r)o(estor)o(e)f(instr)o
(uctions)1913 3450 y Fq(Instr)o(uction)101 b(op)2461
3458 y Ff(3)p 1863 3481 774 4 v 1913 3545 a Fq(save)315
b(1)l(1)l(1)l(100)1913 3636 y(r)o(estor)o(e)235 b(1)l(1)l(1)l(101)725
3923 y Fx(Like)23 b(the)h Fw(r)o(etl)g Fx(instr)o(uction,)i(the)e
Fw(r)o(et)f Fx(instr)o(uction)i(is)g(a)e(synthetic)i(instr)o(uction,)h
(based)c(on)j(the)f Fw(jmpl)600 4023 y Fx(instr)o(uction.)j(The)21
b(r)o(et)f(instr)o(uction)i(is)f(translated)f(to)h(jmpl)43
b(\045i7+8,)19 b(\045g0.)600 4308 y Fu(1)l(1.4)118 b(Summary)600
4497 y Fx(This)25 b(lab)f(pr)o(esents)g(a)g(mor)o(e)g(general)g
(mechanism)i(for)e(pr)o(ocedur)o(es)f(on)i(the)f(SP)-8
b(ARC.)25 b(Register)g(win-)600 4597 y(dows)d(pr)o(ovide)f(easy)g
(access)g(to)h(a)f(lar)o(ge)f(collection)j(of)e(r)o(egisters)g(and)h
(can)f(r)o(educe)f(the)i(need)f(to)h(save)600 4697 y(r)o(egisters)28
b(in)i(memory)-9 b(.)51 b(While)29 b(this)h(mechanism)f(has)g(many)h
(advantages)d(ther)o(e)i(ar)o(e)e(several)h(dis-)600
4796 y(advantages)i(to)i(keep)f(in)g(mind.)58 b(The)32
b(mechanism)g(only)g(pr)o(ovides)f(six)g(r)o(egisters)g(for)g(pr)o
(ocedur)o(e)600 4896 y(parameters.)37 b(If)25 b(you)h(write)f(a)g(pr)o
(ocedur)o(e)e(with)j(mor)o(e)e(than)i(six)f(parameters,)g(you)g(will)h
(need)f(to)h(to)600 4996 y(use)c(the)f(stack)h(for)f(any)h(parameters)e
(beyond)i(six.)28 b(Secondly)-9 b(,)21 b(most)i(implementations)g(only)
f(have)f(7)600 5095 y(or)k(8)g(r)o(egister)f(sets.)39
b(So,)25 b(if)g(your)h(call)e(sequence)i(gets)f(deeper)f(than)h
(NWINDOWS)g(\(as)g(it)g(pr)o(obably)600 5195 y(will)c(in)h(most)f(r)o
(ecursive)f(pr)o(ocedur)o(es\),)e(you)k(ar)o(e)d(again)h(for)o(ced)g
(to)h(use)g(the)g(stack.)p eop
%%Page: 83 85
83 84 bop 0 100 a Fx(Lab)20 b(1)-5 b(1.)41 b(Register)21
b(W)-5 b(indows)2246 b(83)0 333 y Fu(1)l(1.5)118 b(Review)30
b(Questions)0 572 y(1)l(1.6)118 b(Exercises)104 762 y
Fx(1.)41 b(W)-6 b(rite)20 b(a)h(pr)o(ocedur)o(e)f(which)i(will)g(draw)e
(a)h(bitmap)g(at)g(an)g(arbitrary)f(\(x,)h(y\))g(location)h(on)g(the)f
(GX)208 861 y(device.)32 b(The)23 b(bitmap)h(is)f(described)g(by)g(an)g
(array)f(of)i(chars,)f(a)g(width,)h(and)f(a)g(height)h(\(i.e.,)f(the)
208 961 y(X)e(W)-5 b(indows)22 b(bitmap)e(format\))h(The)f(C)h
(declaration)f(for)g(the)h(pr)o(ocedur)o(e)e(would)i(be:)208
1060 y(void)f(draw)p 595 1060 25 4 v 30 w(bitmap\(char*)g(bits,)g(int)i
(w)-8 b(,)21 b(int)g(h,)g(int)g(x,)g(int)g(y\))208 1160
y(The)f(draw)p 567 1160 V 29 w(bitmap)g(pr)o(ocedur)o(e)f(should)i
(make)f(use)h(of)f(the)g(draw)p 2338 1160 V 30 w(pixel)g(pr)o(ocedur)o
(e)e(\(fr)o(om)i(the)208 1260 y(pr)o(evious)g(lab\).)104
1359 y(2.)41 b(W)-6 b(rite)21 b(a)g(pr)o(ocedur)o(e)f(that)h
(\223tiles\224)h(a)f(bitmap)g(to)h(the)g(GX)h(display)-9
b(.)27 b(The)22 b(pr)o(ocedur)o(e)e(should)i(call)208
1459 y(draw)p 408 1459 V 29 w(bitmap)g(for)g(the)h(\002rst)g(tile.)31
b(But,)23 b(for)f(all)g(of)h(the)f(subsequent)i(tiles,)f(you)g(should)g
(use)g(the)208 1559 y(GX)p 331 1559 V 30 w(BLIT)d(operation.)26
b(The)21 b(C)f(declaration)g(for)h(the)g(pr)o(ocedur)o(e)d(would)k(be:)
208 1658 y(void)e(tile)p 515 1658 V 30 w(bitmap\(char*)g(bits,)h(int)h
(w)-8 b(,)21 b(int)g(h\))208 1758 y(Don't)g(for)o(get)f(to)i(clip)e
(the)h(bor)o(der)f(tiles)h(appr)o(opriately)-9 b(.)p
eop
%%Page: 84 86
84 85 bop 600 100 a Fx(84)2244 b(Lab)20 b(1)-5 b(1.)40
b(Register)22 b(W)-5 b(indows)p eop
%%Page: 85 87
85 86 bop 0 474 3300 12 v 0 723 a Fv(Laboratory)53 b(12)0
976 y(Standard)g(Calling)f(Conventions)p 0 1092 1200
12 v 0 1449 a Fu(12.1)119 b(Goal)0 1638 y Fx(T)-8 b(o)21
b(cover)g(the)g(standar)o(d)e(pr)o(ocedur)o(e)g(calling)i(conventions)h
(for)e(the)h(SP)-8 b(ARC.)0 1923 y Fu(12.2)119 b(Objectives)0
2112 y Fx(After)20 b(completing)h(this)h(lab,)e(you)h(will)h(be)e(able)
g(to)h(write)g(assembly)g(language)g(pr)o(ocedur)o(es)e(that:)125
2288 y Ft(\017)41 b Fx(Follow)22 b(the)f(standar)o(d)e(calling)i
(conventions)h(for)f(the)g(SP)-8 b(ARC,)125 2386 y Ft(\017)41
b Fx(Call)20 b(C)h(functions,)g(and)125 2484 y Ft(\017)41
b Fx(Can)20 b(be)g(called)g(fr)o(om)h(C.)0 2768 y Fu(12.3)119
b(Discussion)0 2958 y Fx(In)24 b(most)h(cases,)f(you)h(will)g(not)f
(want)h(to)f(write)g(entir)o(e)f(pr)o(ograms)h(in)g(assembly)h
(language.)35 b(Instead,)0 3057 y(you)19 b(will)g(want)f(to)g(write)h
(most)g(of)f(the)g(pr)o(ogram)g(in)g(a)g(high-level)h(language)e
(\(like)h(C\))g(and)g(only)h(write)0 3157 y(a)26 b(few)g(pr)o(ocedur)o
(es)e(in)j(assembly)f(language\227the)g(pr)o(ocedur)o(es)e(that)j
(cannot)f(be)g(easily)g(optimized)0 3256 y(in)f(the)g(high-level)g
(language)g(or)g(that)f(need)h(to)g(take)f(advantage)f(of)i(special)f
(featur)o(es)f(pr)o(ovided)h(by)0 3356 y(the)d(machine.)125
3456 y(In)31 b(this)h(lab,)h(we)f(complete)f(our)h(pr)o(esentation)f
(of)g(the)g(SP)-8 b(ARC)32 b(application)f(binary)g(interface)0
3555 y(\(ABI\).)22 b(The)i(SP)-8 b(ARC)24 b(ABI)f(is)h(a)f(set)h(of)f
(conventions)j(that)d(ar)o(e)g(expected)f(to)i(be)g(folowed)f(by)h(all)
g(com-)0 3655 y(pilers)d(and)f(assembly)h(language)f(pr)o(ogrammers.)25
b(These)20 b(conventions)i(cover)e(the)h(uses)g(of)g(r)o(egisters)0
3755 y(and)f(the)h(str)o(uctur)o(e)e(of)i(the)f(stack)h(frame.)j(If)c
(you)h(follow)g(the)g(conventions)h(speci\002ed)e(by)g(the)h(SP)-8
b(ARC)0 3854 y(ABI)18 b(in)h(your)g(assembly)g(language)f(pr)o(ocedur)o
(es,)f(it)i(will)g(be)f(possible)h(to)g(call)g(your)g(pr)o(oceudr)o(es)
d(fr)o(om)0 3954 y(pr)o(ocedur)o(es)g(written)j(in)f(high-level)g
(languages.)25 b(Y)-8 b(ou)19 b(will)f(also)h(be)e(able)g(to)i(call)e
(pr)o(ocedur)o(es)g(written)0 4054 y(in)k(high-level)g(languages)g(fr)o
(om)f(your)h(assembly)g(language)g(pr)o(ocedur)o(es.)125
4153 y(In)32 b(Lab)f(10)g(we)h(cover)o(ed)f(the)h(portion)h(of)f(the)g
(SP)-8 b(ARC)32 b(ABI)g(that)g(deals)f(with)i(optimized)f(leaf)0
4253 y(pr)o(ocedur)o(es.)26 b(In)21 b(Lab)g(1)-5 b(1)21
b(we)g(cover)o(ed)f(the)i(conventions)h(r)o(elated)c(to)j(r)o(egister)f
(usage)g(for)g(pr)o(ocedur)o(es)0 4352 y(that)d(ar)o(e)f(not)i
(implementd)g(as)e(optimized)i(leaf)e(pr)o(ocedur)o(es.)23
b(In)18 b(this)h(lab)f(we)g(cover)g(the)g(conventions)0
4452 y(r)o(elated)g(to)i(the)h(allocation)f(and)f(str)o(uctur)o(e)h(of)
g(stack)f(frames.)25 b(Thr)o(oughout)20 b(this)h(lab)e(we)h(will)h
(assume)0 4552 y(that)g(we)f(ar)o(e)g(not)h(implementing)h(an)f
(optimized)g(leaf)f(pr)o(ocedur)o(e.)0 4793 y Fp(12.3.1)99
b(The)25 b(allocation)h(of)f(stack)g(frames)0 4951 y
Fx(The)33 b(stack)g(pointer)g(is)g(stor)o(ed)f(in)i(r)o(egister)e
(\045o6.)61 b(In)34 b(assembly)f(language,)i(this)f(r)o(egister)e(can)g
(be)0 5051 y(r)o(efer)o(enced)21 b(using)k(the)g(alias)e(\045sp.)36
b(Due)24 b(to)g(the)h(overlap)e(of)h(r)o(egister)g(windows,)h(the)g
(stack)f(pointer)0 5150 y(for)k(the)g(calling)h(pr)o(ocedur)o(e)d(is)i
(always)g(available)f(in)h(r)o(egister)f(\045i6.)47 b(In)29
b(SP)-8 b(ARC)28 b(terminology)-9 b(,)31 b(the)0 5250
y(pr)o(evious)21 b(stack)h(pointer)g(is)g(called)f(the)h(frame)f
(pointer)h(and)f(can)h(be)f(accessed)g(using)i(the)f(alias)f(\045fp.)0
5350 y(The)j(stack)f(gr)o(ows)h(fr)o(om)f(addr)o(esses)f(with)i(lar)o
(ger)e(numbers)i(to)g(addr)o(esses)e(with)i(smaller)g(numbers.)1608
5560 y(85)p eop
%%Page: 86 88
86 87 bop 600 100 a Fx(86)1801 b(Lab)20 b(12.)40 b(Standar)o(d)18
b(Calling)j(Conventions)600 333 y(As)d(such,)h(allocation)g(of)f(a)g
(stack)g(frame)f(is)i(implemented)f(by)h(subtracting)f(a)g(value)g(fr)o
(om)f(the)i(curr)o(ent)600 432 y(stack)e(pointer)g(\(actually)-9
b(,)16 b(this)i(usually)f(done)g(by)f(adding)h(a)f(negative)h(number)g
(to)g(the)g(stack)f(pointer\).)p 1979 2714 4 2159 v 2809
2714 V 1980 2466 831 4 v 1980 1636 V 1980 806 V 2267
1977 a Fq(Caller)6 b('s)2311 2068 y(stack)2299 2159 y(frame)2266
1146 y(Curr)o(ent)2311 1238 y(stack)2299 1329 y(frame)p
1731 1678 250 4 v 1897 1676 a Fi(-)p 1731 848 V 1897
846 a(-)1321 1693 y Fq(\045fp)19 b(\(=\045i6\))1191 1776
y(\(pr)o(evious)e(\045sp\))1296 863 y(\045sp)h(\(=\045o6\))2958
2562 y(lar)o(ger)2893 2653 y(addr)o(esses)2933 652 y(smaller)2893
744 y(addr)o(esses)p 2975 2050 4 831 v 2976 1303 a Fi(6)3092
1607 y Fq(Stack)3059 1699 y(gr)o(owth)1293 2980 y Fx(Figur)o(e)j(12.1)e
(Stack)h(frame)f(allocation)j(in)f(the)g(SP)-8 b(ARC)20
b(ABI)600 3322 y Fp(12.3.2)99 b(Parameters)600 3480 y
Fx(As)23 b(we)g(noted)g(in)h(the)f(pr)o(evious)g(two)h(labs,)f(r)o
(egisters)g(\045o0\226\045o5)f(ar)o(e)f(used)i(for)g(the)h(\002rst)f
(six)g(param-)600 3580 y(eters)29 b(passed)h(to)g(a)f(pr)o(ocedur)o(e.)
51 b(If)29 b(a)h(pr)o(ocedur)o(e)e(has)i(mor)o(e)f(than)h(6)g
(parameters,)g(the)g(r)o(emaining)600 3679 y(parameters)24
b(ar)o(e)f(passed)h(on)i(the)f(stack.)38 b(SP)-8 b(ARC)25
b(pr)o(ocedur)o(es)e(do)i(not)g(push)h(parameters)d(\(beyond)600
3779 y(the)17 b(sixth)g(parameter\))e(onto)j(the)f(pr)o(ocedur)o(e)e
(call)h(stack.)24 b(Instead,)17 b(they)g(allocate)f(space)g(in)h(their)
g(stack)600 3878 y(frame)23 b(for)g(the)h(parameters)e(and)h(copy)h
(parameters)e(into)j(this)f(space.)34 b(This)24 b(means)f(that)h(the)g
(called)600 3978 y(pr)o(ocedur)o(e)18 b(will)i(\002nd)g(its)g
(parameters)e(\(beyond)h(the)h(sixth\))g(in)g(the)g(caller)6
b('s)19 b(stack)g(frame.)24 b(The)c(called)600 4078 y(pr)o(ocedur)o(e)f
(can)h(access)g(these)g(parameters)g(using)h(the)g(frame)e(pointer)i
(\(\045fp\))e(with)j(positive)f(of)o(fsets.)600 4321
y Fp(12.3.3)99 b(Stack)25 b(frame)e(organization)600
4479 y Fx(As)i(a)f(minimum,)k(every)c(pr)o(ocedur)o(e)f(that)i(is)g
(not)h(implemented)f(as)g(an)g(optimized)g(leaf)f(pr)o(ocedur)o(e)600
4578 y(\(i.e.,)35 b(any)e(pr)o(ocudur)o(e)f(that)h(executes)g(a)f(save)
h(instr)o(uction\))h(must)g(allocate)f(a)f(stack)h(frame)g(or)g(64)600
4678 y(bytes.)25 b(This)c(space)f(will)h(be)f(used)g(to)h(stor)o(e)f
(the)g(input)h(and)f(local)g(r)o(egisters)g(\(\045i0\226\045i7)e(and)i
(\045l0\226\045l7\))600 4777 y(allocated)26 b(by)g(this)i(pr)o(ocedur)o
(e)d(should)i(you)g(r)o(un)g(out)g(of)g(r)o(egister)f(windows)i(in)f(a)
f(later)g(pr)o(ocedur)o(e)600 4877 y(call.)725 4977 y(Every)32
b(nonleaf)g(pr)o(ocedur)o(e)f(must)i(allocate)f(an)h(additional)f(7)g
(wor)o(ds)g(\(28)g(bytes\))g(in)h(its)g(stack)600 5076
y(frame.)54 b(The)30 b(\002rst)h(wor)o(d)f(of)g(this)i(space)d(is)i
(used)f(to)h(stor)o(e)f(a)g(\223hidden\224)g(parameter)-6
b(.)53 b(The)30 b(hidden)600 5176 y(parameter)g(is)i(used)f(for)h(pr)o
(ocedur)o(es)e(that)h(r)o(eturn)g(str)o(uctur)o(ed)g(values.)58
b(Pr)o(ocedur)o(es)30 b(that)i(r)o(eturn)600 5276 y(simple)h(values)g
(use)g(\045i0)f(\(the)h(caller)6 b('s)33 b(\045o0\))f(to)h(r)o(eturn)g
(the)g(r)o(esult.)61 b(However)-6 b(,)36 b(if)d(a)f(pr)o(ocedur)o(e)p
eop
%%Page: 87 89
87 88 bop 0 100 a Fx(Lab)20 b(12.)40 b(Standar)o(d)19
b(Calling)i(Conventions)1803 b(87)0 333 y(r)o(eturns)30
b(a)g(str)o(uctur)o(ed)g(value,)j(the)e(r)o(esult)f(may)h(not)g(\002t)g
(in)g(a)g(r)o(egister)-6 b(.)54 b(In)31 b(this)h(case,)g(the)f
(ccalling)0 432 y(pr)o(ocedur)o(e)15 b(must)k(allocate)d(space)h(for)g
(the)h(r)o(eturn)f(value)g(\(pr)o(obably)f(in)i(its)g(stack)f(frame\).)
23 b(The)18 b(calling)0 532 y(pr)o(ocedur)o(e)f(then)i(puts)g(the)g
(addr)o(ess)f(of)g(this)i(space)e(into)i(the)f(hidden)g(parameter)e
(befor)o(e)g(making)j(the)0 632 y(call.)125 731 y(The)30
b(r)o(emaining)g(6)g(wor)o(ds)g(can)g(be)g(used)g(by)g(the)h(called)e
(pr)o(ocedur)o(e)f(to)j(stor)o(e)f(the)g(\002rst)h(six)g(ar)o(-)0
831 y(guments)c(\(the)g(ones)g(passed)e(in)i(\045o0\226\045o5\).)41
b(In)27 b(most)g(cases,)h(the)e(called)g(pr)o(ocedur)o(e)e(will)k(be)e
(able)0 930 y(to)e(access)f(these)h(parameters)e(in)i(the)g(r)o
(egisters)f(\045i0\226\045i5)f(and)h(will)i(not)f(need)f(to)h(stor)o(e)
g(them)g(in)g(the)0 1030 y(caller)6 b('s)18 b(stack)f(frame.)24
b(However)-6 b(,)18 b(if)f(the)h(called)g(pr)o(ocedur)o(e)d(needs)j(to)
g(take)g(the)g(addr)o(ess)e(of)i(a)f(param-)0 1130 y(eter)-6
b(,)20 b(it)h(needs)f(to)h(stor)o(e)g(the)g(parameter)e(into)j(memory)f
(\(you)g(can't)f(take)h(the)g(addr)o(ess)e(of)i(a)f(r)o(egister\).)125
1229 y(In)i(addition)g(to)g(the)g(r)o(egions)g(that)g(we)g(have)g
(discussed,)g(a)f(pr)o(ocedur)o(e)f(may)i(allocate)f(additional)0
1329 y(stack)k(space)g(for:)35 b(alignment)26 b(\(the)f(stack)g
(pointer)h(should)g(always)f(be)h(a)e(multiple)i(of)g(8\),)f(outgoing)0
1429 y(parameters)g(\(beyond)i(the)g(sixth)g(parameter\),)g(automatic)f
(local)h(arrays)f(and)g(other)h(automatic)g(lo-)0 1528
y(cal)g(variables)g(that)h(don't)g(\002t)g(in)h(the)e(local)h(r)o
(egisters)g(\045l0\226\045l7,)f(temporaries,)i(and)e(\003oating)i
(point)0 1628 y(r)o(egisters.)c(Figur)o(e)20 b(12.2)f(illustrates)i
(the)g(or)o(ganization)g(of)f(a)h(SP)-8 b(ARC)20 b(stack)h(frame.)p
1275 4812 4 3072 v 2105 4812 V 1276 4564 831 4 v 1276
3983 V 1276 3734 V 1276 3153 V 1276 2655 V 1276 2572
V 1276 1990 V 1508 4192 a(automatic)1606 4292 y(local)1526
4391 y(variables)1471 3827 y(temporaries)1540 3927 y(and)f(pad)1525
3362 y(outgoing)1485 3462 y(parameters)1448 3561 y(past)g(the)h(sixth)
1527 2822 y(space)f(for)1489 2922 y(the)h(\002rst)g(six)1485
3022 y(parameters)1361 2630 y(hidden)g(parameter)1527
2200 y(space)f(for)1535 2299 y(\045i0\226\045i7)1455
2399 y(and)g(\045l0\226\045l7)p 1027 4606 250 4 v 1193
4604 a Fi(-)839 4623 y Fx(\045fp)p 1027 4025 V 1193 4023
a Fi(-)545 4042 y Fx(\045fp)d Ft(\000)h Fm(\(4)h Ft(\001)f
Fn(l)r Fm(\))p 1027 3775 V 1193 3773 a Fi(-)337 3793
y Fx(\045sp)g Fm(+)h(\(92)e(+)h(4)g Ft(\001)h Fn(p)p
Fm(\))p 1027 3194 V 1193 3192 a Fi(-)646 3210 y Fx(\045sp)g
Fm(+)f(92)p 1027 2696 V 1193 2694 a Fi(-)646 2712 y Fx(\045sp)h
Fm(+)f(68)p 1027 2613 V 1193 2611 a Fi(-)646 2629 y Fx(\045sp)h
Fm(+)f(64)p 1027 2032 V 1193 2030 a Fi(-)831 2048 y Fx(\045sp)p
2148 1990 623 4 v 2148 2572 291 4 v 2148 3153 623 4 v
2199 2200 a(r)o(equir)o(ed)2248 2299 y(for)i(all)2151
2399 y(pr)o(ocedur)o(es)p 2354 2113 4 125 v 2356 2072
a Fi(6)p 2354 2570 V 2356 2570 a(?)2531 2490 y Fx(r)o(equir)o(ed)2487
2590 y(for)h(nonleaf)2483 2690 y(pr)o(ocedur)o(es)p 2686
2404 4 416 v 2688 2072 a Fi(6)p 2686 3151 V 2688 3151
a(?)980 5077 y Fx(Figur)o(e)f(12.2)f(Stack)h(frame)g(or)o(ganization)p
0 5270 3300 4 v 0 5350 a Fs(Example)f(12.1)76 b Fr(T)-8
b(ranslate)18 b(the)h(following)f(C)g(function)f(into)h(a)h(SP)-10
b(ARC)18 b(pr)o(ocedur)o(e.)p eop
%%Page: 88 90
88 89 bop 600 100 a Fx(88)1801 b(Lab)20 b(12.)40 b(Standar)o(d)18
b(Calling)j(Conventions)824 333 y Fo(int)44 b(add7\()g(int)h(p1,)f(int)
g(p2,)h(int)f(p3,)g(int)h(p4,)f(int)g(p5,)h(int)f(p6,)g(int)h(p7)f(\))
824 424 y Fl(f)914 515 y Fo(return)g(p1)g(+)h(p2)f(+)h(p3)f(+)h(p4)g(+)
f(p5)h(+)f(p6)h(+)g(p7;)824 607 y Fl(g)600 723 y Fq(In)29
b(this)f(case,)i(the)f(parameters)f(p1\226p6)h(will)e(be)i(in)f(r)o
(egisters)d(\045i0\226\045i5.)52 b(The)28 b(parameter)g(p7)g(will)g(be)
g(in)g(the)600 814 y(caller)6 b('s)17 b(stack)i(frame)f(at)h(of)o(fset)
f(92)i(\(that)g(is,)d(\045fp)i(+)g(92\).)1183 906 y Fo(.text)824
997 y(add7:)134 b(save)178 b(\045sp,)45 b(-64,)f(\045sp)179
b(!)44 b(this)g(is)h(a)g(leaf)f(procedure)1183 1179 y(ld)268
b([\045fp+92],)44 b(\045l0)179 b(!)44 b(we'll)g(eventually)f(need)i(p7)
1183 1362 y(add)223 b(\045i0,)45 b(\045i1,)f(\045i0)179
b(!)44 b(add)h(in)f(p2)1183 1453 y(add)223 b(\045i0,)45
b(\045i2,)f(\045i0)179 b(!)44 b(add)h(in)f(p3)1183 1545
y(add)223 b(\045i0,)45 b(\045i3,)f(\045i0)179 b(!)44
b(add)h(in)f(p4)1183 1636 y(add)223 b(\045i0,)45 b(\045i4,)f(\045i0)179
b(!)44 b(add)h(in)f(p5)1183 1727 y(add)223 b(\045i0,)45
b(\045i5,)f(\045i0)179 b(!)44 b(add)h(in)f(p6)1183 1910
y(ret)1183 2001 y(restore)f(\045i0,)i(\045l0,)f(\045o0)179
b(!)44 b(add)h(in)f(p7)p 600 2041 3300 4 v 600 2194 V
600 2274 a Fs(Example)28 b(12.2)76 b Fr(T)-8 b(ranslate)26
b(the)i(following)f(C)g(function)f(which)j(includes)e(a)g(call)h(to)f
(the)h(function)e(de\002ned)j(in)d(exam-)600 2365 y(ple)19
b(12.1)824 2456 y Fo(int)44 b(test\()g(int)h(x1,)f(int)g(x2)h(\))824
2548 y Fl(f)914 2639 y Fo(int)f(l1,)g(l2;)914 2822 y(l1)g(=)h(x1)f(+)h
(x2;)914 2913 y(l2)f(=)h(x2)f(-)h(x1;)914 3004 y(return)f(add7\()g(x1,)
g(x2,)g(l1,)h(l2,)f(l1+l2,)g(l2-l1,)g(l2+l2)g(\);)824
3095 y Fl(g)1183 3212 y Fo(.text)824 3303 y(test:)134
b(save)178 b(\045sp,)45 b(-\(92+4\),)e(\045sp)179 b(!)45
b(allocate)e(the)h(minimum)g(stack)g(frame)2483 3394
y(!)89 b(\(includes)44 b(a)g(4)h(byte)f(``alignment'')600
3486 y(pad\))1183 3668 y(add)223 b(\045i0,)45 b(\045i1,)f(\045l0)358
b(!)45 b(l1)f(=)h(x1)f(+)h(x2;)1183 3760 y(sub)223 b(\045i1,)45
b(\045i0,)f(\045l1)358 b(!)45 b(l2)f(=)h(x2)f(-)h(x1;)1183
3942 y(mov)223 b(\045i0,)45 b(\045o0)582 b(!)45 b(first)f(parameter)
1183 4034 y(mov)223 b(\045i1,)45 b(\045o1)582 b(!)45
b(second)e(parameter)1183 4125 y(mov)223 b(\045l0,)45
b(\045o2)582 b(!)45 b(third)f(parameter)1183 4216 y(mov)223
b(\045l1,)45 b(\045o3)582 b(!)45 b(fourth)e(parameter)1183
4308 y(add)223 b(\045l0,)45 b(\045l1,)f(\045o4)358 b(!)45
b(fifth)f(parameter)1183 4399 y(sub)223 b(\045l1,)45
b(\045l0,)f(\045o5)358 b(!)45 b(sixth)f(parameter)1183
4582 y(add)223 b(\045l1,)45 b(\045l1,)f(\045l2)358 b(!)45
b(temp)f(=)g(l2+l2)1183 4673 y(call)178 b(add7)1183 4764
y(st)268 b(\045l2,)45 b([\045sp+92])357 b(!)45 b(seventh)e(parameter)h
(\(delay)f(slot\))1183 4947 y(ret)1183 5038 y(restore)g(\045g0,)i
(\045o0,)f(\045o0)358 b(!)45 b(return)e(the)i(result)f(to)g(caller's)g
(\045o0)p 600 5078 V eop
%%Page: 89 91
89 90 bop 0 100 a Fx(Lab)20 b(12.)40 b(Standar)o(d)19
b(Calling)i(Conventions)1803 b(89)125 432 y(It)17 b(is)g(also)g(common)
i(to)e(access)g(local)g(variables)f(stor)o(ed)g(in)h(the)h(stack)e
(using)i(negative)f(of)o(fsets)f(fr)o(om)0 532 y(the)21
b(frame)f(pointer)-6 b(.)p 0 658 3300 4 v 0 738 a Fs(Example)26
b(12.3)101 b Fr(T)-8 b(ranslate)25 b(the)g(following)g(C)g(function)f
(into)h(a)h(SP)-10 b(ARC)24 b(pr)o(ocedur)o(e.)44 b(Y)-8
b(ou)25 b(should)g(assume)h(that)g(the)0 829 y(pr)o(ocedur)o(es)19
b(\223r)o(ead)p 509 829 23 4 v 28 w(int\224)f(and)h(\223write)p
1006 829 V 27 w(int\224)f(ar)o(e)h(de\002ned)g(elsewher)o(e.)224
921 y Fo(void)44 b(read10\()g(\))224 1012 y Fl(f)403
1103 y Fo(int)h(i;)403 1195 y(int)g(a[10];)403 1377 y(for\()g(i)f(=)h
(0)g(;)f(i)h(<)g(10)f(;)h(i++)f(\))h Fl(f)583 1469 y
Fo(a[i])f(=)h(read_int\(\);)403 1560 y Fl(g)403 1743
y Fo(for\()g(i)f(=)h(9)g(;)f(i)h(>=)f(0)h(;)g(i--)f(\))h
Fl(f)583 1834 y Fo(write_int\()e(a[i])h(\);)403 1925
y Fl(g)224 2016 y(g)0 2133 y Fq(In)18 b(this)f(case,)g(we)g(will)g(use)
f(\045l0)h(for)f Fr(i)h Fq(\(scaled)f(by)h(4\))h(and)f(the)h(array)e
Fr(a)h Fq(will)g(be)g(stor)o(ed)e(in)j(the)f(local)g(space)g(starting)0
2224 y(at)i(\045fp)p Fl(\000)p Fq(40.)583 2315 y Fo(.text)224
2407 y(add7:)134 b(save)178 b(\045sp,)45 b(-\(92+4*10+4\),)d(\045sp)89
b(!)45 b(we)g(need)f(40)g(words)g(for)h(the)f(array)583
2589 y(sub)223 b(\045fp,)45 b(40,)f(\045l1)537 b(!)45
b(l1)g(points)e(to)i(the)f(start)g(of)h(the)0 2681 y(array)583
2863 y(clr)223 b(\045l0)941 b(!)45 b(i)g(=)f(0)224 3046
y(top1:)134 b(call)178 b(read_int)583 3137 y(nop)583
3229 y(st)268 b(\045o0,)45 b([\045l1+\045l0])446 b(!)45
b(a[i])f(=)h(read_int\(\);)583 3411 y(inc)223 b(\045l0,)45
b(4)806 b(!)45 b(increment)e(i)i(+=)g(4)583 3503 y(cmp)223
b(\045l0,)45 b(40)761 b(!)45 b(i)g(<)f(10*4)583 3594
y(bl)268 b(top1)583 3685 y(nop)583 3868 y(mov)179 b(36,)44
b(\045l0)806 b(!)45 b(i)g(=)f(9*4)224 3959 y(top2:)134
b(ld)224 b([\045l1+\045l0],)43 b(\045o0)492 b(!)45 b(write_int\()e
(a[i])h(\))583 4051 y(call)134 b(write_int)583 4142 y(nop)583
4324 y(deccc)89 b(\045l0,)44 b(4)851 b(!)45 b(i)g(-=)f(4)583
4416 y(bge)179 b(top2)940 b(!)45 b(i)g(>=)f(0)583 4507
y(nop)583 4690 y(ret)583 4781 y(restore)p 0 4810 3300
4 v eop
%%Page: 90 92
90 91 bop 600 100 a Fx(90)1801 b(Lab)20 b(12.)40 b(Standar)o(d)18
b(Calling)j(Conventions)600 333 y Fu(12.4)119 b(Summary)600
572 y(12.5)g(Review)29 b(Questions)600 811 y(12.6)119
b(Exercises)p eop
%%Page: 91 93
91 92 bop 0 474 3300 12 v 0 723 a Fv(Laboratory)53 b(13)0
976 y(Integer)g(Arithmetic)d(on)i(the)g(SP)-15 b(ARC)p
0 1092 1200 12 v 0 1449 a Fu(13.1)119 b(Goal)0 1638 y
Fx(T)-8 b(o)21 b(cover)0 1924 y Fu(13.2)119 b(Objectives)0
2113 y Fx(After)20 b(completing)h(this)h(lab,)e(you)h(will)h(be)e(able)
g(to)h(write)g(SP)-8 b(ARC)21 b(pr)o(ograms)f(that:)125
2296 y Ft(\017)41 b Fx(Implement)21 b(multiple)g(pr)o(ecision)g
(arithmetic.)0 2582 y Fu(13.3)119 b(Discussion)0 2821
y(13.4)g(Summary)0 3060 y(13.5)g(Review)29 b(Questions)0
3299 y(13.6)119 b(Exercises)1608 5560 y Fx(91)p eop
%%Page: 92 94
92 93 bop 600 100 a Fx(92)1695 b(Lab)20 b(13.)40 b(Integer)21
b(Arithmetic)g(on)g(the)g(SP)-8 b(ARC)p eop
%%Page: 93 95
93 94 bop 0 474 3300 12 v 0 723 a Fv(Laboratory)53 b(14)0
976 y(The)f(Floating)f(Point)g(Coprocessor)p 0 1092 1200
12 v 0 1449 a Fu(14.1)119 b(Goal)0 1638 y Fx(T)-8 b(o)21
b(cover)g(the)g(\003oating)g(point)h(copr)o(ocessor)f(on)g(the)g(SP)-8
b(ARC.)0 1924 y Fu(14.2)119 b(Objectives)0 2113 y Fx(After)20
b(completing)h(this)h(lab,)e(you)h(will)h(be)e(able)g(to)h(write)g(SP)
-8 b(ARC)21 b(pr)o(ograms)f(that:)125 2296 y Ft(\017)41
b Fx(Use)20 b(\003oating)i(point)f(operations.)0 2582
y Fu(14.3)119 b(Discussion)0 2821 y(14.4)g(Summary)0
3060 y(14.5)g(Review)29 b(Questions)0 3299 y(14.6)119
b(Exercises)1608 5560 y Fx(93)p eop
%%Page: 94 96
94 95 bop 600 100 a Fx(94)1757 b(Lab)20 b(14.)40 b(The)21
b(Floating)g(Point)h(Copr)o(ocessor)p eop
%%Page: 95 97
95 96 bop 0 474 3300 12 v 0 723 a Fv(Laboratory)53 b(15)0
976 y(Linking)f(and)g(Loading)p 0 1092 1200 12 v 0 1449
a Fu(15.1)119 b(Goal)0 1638 y Fx(T)-8 b(o)21 b(cover)g(the)g
(translation)g(pr)o(ocess)f(implemented)h(by)g(the)g(ISEM)e(tools.)0
1924 y Fu(15.2)119 b(Objectives)0 2113 y Fx(After)20
b(completing)h(this)h(lab,)e(you)h(will:)125 2296 y Ft(\017)41
b Fx(cof)o(f)0 2582 y Fu(15.3)119 b(Discussion)0 2821
y(15.4)g(Summary)0 3060 y(15.5)g(Review)29 b(Questions)0
3299 y(15.6)119 b(Exercises)1608 5560 y Fx(95)p eop
%%Page: 96 98
96 97 bop 600 100 a Fx(96)2135 b(Lab)20 b(15.)40 b(Linking)22
b(and)e(Loading)p eop
%%Page: 97 99
97 98 bop 0 474 3300 12 v 0 723 a Fv(Laboratory)53 b(16)0
969 y(T)-23 b(raps)p 0 1086 1200 12 v 0 1443 a Fu(16.1)119
b(Goal)0 1632 y Fx(T)-8 b(o)21 b(cover)g(the)g(basic)f(SP)-8
b(ARC)21 b(trap)f(mechanism)h(and)g(trap)f(instr)o(uctions.)0
1917 y Fu(16.2)119 b(Objectives)0 2107 y Fx(After)20
b(completing)h(this)h(lab,)e(you)h(will)h(be)e(able)g(to)h(write)g
(trap)f(handlers:)125 2289 y Ft(\017)41 b Fx(trap)20
b(always)125 2389 y Ft(\017)41 b Fx(conditional)21 b(traps)0
2675 y Fu(16.3)119 b(Discussion)0 2880 y Fp(16.3.1)99
b(The)25 b(Processor)g(Status)g(Register)h(\(PSR\))0
3038 y Fx(Figur)o(e)20 b(16.1)f(pr)o(esents)i(the)g(\002elds)f(in)i
(the)f(pr)o(ocessor)f(status)h(r)o(egister)-6 b(.)915
3427 y(Figur)o(e)21 b(16.1)e(The)h(pr)o(ocessor)h(status)g(r)o(egister)
0 3770 y Fp(16.3.2)99 b(Address)24 b(Spaces)0 3928 y
Fx(As)k(noted)h(in)g(Lab)e(1,)j(the)e(SP)-8 b(ARC)29
b(uses)f(separate)f(addr)o(ess)g(spaces)h(for)g(data)f(and)h(text)g
(\(code\).)48 b(In)0 4027 y(fact,)34 b(the)e(SP)-8 b(ARC)32
b(pr)o(ovides)g(\(at)f(least\))h(four)g(addr)o(ess)f(spaces:)48
b(the)32 b(user)g(instr)o(uction)i(space,)g(the)0 4127
y(supervisor)29 b(instr)o(uction)i(space,)f(the)g(user)e(data)g(space,)
j(and)d(the)i(supervisor)f(data)f(space.)50 b(When)0
4226 y(the)20 b(pr)o(ocessor)f(is)i(in)f(user)g(state,)f(instr)o
(uctions)j(ar)o(e)c(fetched)h(fr)o(om)g(the)h(user)g(instr)o(uction)h
(space)e(while)0 4326 y(data)e(values)g(ar)o(e)g(loaded)g(fr)o(om)g
(and)h(stor)o(ed)f(to)h(user)g(data)f(memory)-9 b(.)25
b(Similarly)-9 b(,)18 b(when)g(the)g(pr)o(ocessor)0 4426
y(is)k(in)g(supervisor)f(mode,)g(instr)o(uctions)j(ar)o(e)c(fetched)g
(fr)o(om)h(supervisor)h(instr)o(uction)h(space)d(and)h(data)0
4525 y(values)f(ar)o(e,)f(by)i(default,)f(loaded)g(fr)o(om)g(and)g
(stor)o(ed)g(to)i(supervisor)e(data)g(memory)-9 b(.)125
4625 y(When)26 b(the)g(pr)o(ocessor)g(is)h(in)f(supervisor)g(state,)h
(you)g(can)f(use)g(special)f(load)h(and)g(stor)o(e)g(instr)o(uc-)0
4725 y(tions)34 b(to)g(access)e(data)g(values)h(in)g(alternate)g
(memory)g(spaces.)62 b(For)34 b(examples,)h(you)f(can)f(load)f(a)0
4824 y(value)24 b(fr)o(om)g(the)h(user)f(data)g(space,)g(or)h(stor)o(e)
f(a)g(value)g(into)i(the)e(user)h(instr)o(uction)h(space.)36
b(These)25 b(in-)0 4924 y(str)o(uctions)d(r)o(equir)o(e)e(an)g
(explicit)h(addr)o(ess)e(space)h(indicator)g(\(ASI\).)f(T)-8
b(able)21 b(16.1)e(summarizes)h(the)h(ASI)0 5023 y(values)f(used)h(for)
f(these)h(instr)o(uctions.)1608 5560 y(97)p eop
%%Page: 98 100
98 99 bop 600 100 a Fx(98)2709 b(Lab)20 b(16.)40 b(T)-7
b(raps)1504 393 y(T)f(able)20 b(16.1)f(Addr)o(ess)g(Spaces)h(on)h(the)g
(SP)-8 b(ARC)1752 539 y Fq(Addr)o(ess)17 b(space)394
b(ASI)1752 630 y(User)18 b(Instr)o(uctions)349 b(7)1752
721 y(Supervisor)18 b(Instr)o(uctions)143 b(8)1752 813
y(User)18 b(Data)586 b(9)1752 904 y(Supervisor)18 b(Data)361
b(10)600 1263 y Fp(16.3.3)99 b(The)25 b(ROM)f(Code)600
1471 y Fu(16.4)119 b(Review)29 b(Questions)600 1710 y(16.5)119
b(Exercises)704 1899 y Fx(1.)41 b(W)-6 b(rite)21 b(a)f(trap)h(handler)g
(that)g(will)h(print)g(a)f(NULL)f(terminated)h(string)h(in)g(the)g
(user)f(data)f(space.)808 1999 y(\(Because)26 b(the)i(string)h(is)f(in)
h(the)f(user)f(data)g(space)g(and)h(not)g(in)h(supervisor)f(data)f
(space,)h(you)808 2099 y(cannot)23 b(use)f(\223puts\224)g(function)i
(in)f(r)o(om.s)f(to)h(implement)h(this)f(trap.\))30 b(The)23
b(starting)g(addr)o(ess)e(of)808 2198 y(the)f(string)i(will)f(be)g
(available)e(in)808 2298 y(The)j(functionality)g(pr)o(ovided)f(by)h
(this)h(trap)e(is)h(not)h(absolutely)f(necessary)-9 b(.)29
b(Application)22 b(pr)o(o-)808 2398 y(grams)15 b(could)h(attain)g
(equivalent)g(functionality)g(using)h(multiple)f(invocations)h(of)f
(trap)f(1)g(\(putc\).)808 2497 y(What)20 b(is)h(the)g(advantage)e(of)i
(pr)o(oviding)g(this)g(as)g(an)f(separate)g(trap?)p eop
%%Page: 99 101
99 100 bop 0 474 3300 12 v 0 723 a Fv(Laboratory)53 b(17)0
976 y(Exceptions)f(and)g(Exception)0 1186 y(Handling)p
0 1302 1200 12 v 0 1659 a Fu(17.1)119 b(Goal)0 1848 y
Fx(T)-8 b(o)21 b(cover)g(exception)g(handling)g(on)g(the)g(SP)-8
b(ARC.)0 2134 y Fu(17.2)119 b(Objectives)0 2323 y Fx(After)20
b(completing)h(this)h(lab,)e(you)h(will:)125 2506 y Ft(\017)41
b Fx(exception)20 b(handlers.)0 2792 y Fu(17.3)119 b(Discussion)0
3031 y(17.4)g(Summary)0 3270 y(17.5)g(Review)29 b(Questions)0
3509 y(17.6)119 b(Exercises)1608 5560 y Fx(99)p eop
%%Page: 100 102
100 101 bop 600 100 a Fx(100)1549 b(Lab)20 b(17.)41 b(Exceptions)21
b(and)f(Exception)h(Handling)p eop
%%Page: 101 103
101 102 bop 0 474 3300 12 v 0 723 a Fv(Laboratory)53
b(18)0 976 y(Interrupts)g(and)f(Interrupt)h(Handling)p
0 1092 1200 12 v 0 1449 a Fu(18.1)119 b(Goal)0 1638 y
Fx(T)-8 b(o)21 b(cover)g(interr)o(upts)g(and)f(interr)o(upt)h(handling)
h(on)f(the)g(SP)-8 b(ARC.)0 1924 y Fu(18.2)119 b(Objectives)0
2113 y Fx(After)20 b(completing)h(this)h(lab,)e(you)h(will:)125
2296 y Ft(\017)41 b Fx(interr)o(upt)21 b(handlers.)0
2582 y Fu(18.3)119 b(Discussion)0 2821 y(18.4)g(Summary)0
3060 y(18.5)g(Review)29 b(Questions)0 3299 y(18.6)119
b(Exercises)1588 5560 y Fx(101)p eop
%%Page: 102 104
102 103 bop 600 100 a Fx(102)1609 b(Lab)20 b(18.)40 b(Interr)o(upts)21
b(and)g(Interr)o(upt)g(Handling)p eop
%%Page: 103 105
103 104 bop 0 474 3300 12 v 0 723 a Fv(Laboratory)53
b(19)0 976 y(Context)f(Switching)p 0 1092 1200 12 v 0
1449 a Fu(19.1)119 b(Goal)0 1638 y Fx(T)-8 b(o)21 b(cover)g(context)g
(switching)h(on)f(the)g(SP)-8 b(ARC.)0 1924 y Fu(19.2)119
b(Objectives)0 2113 y Fx(After)20 b(completing)h(this)h(lab,)e(you)h
(will:)125 2296 y Ft(\017)41 b Fx(multitasking.)0 2582
y Fu(19.3)119 b(Discussion)0 2821 y(19.4)g(Summary)0
3060 y(19.5)g(Review)29 b(Questions)0 3299 y(19.6)119
b(Exercises)1588 5560 y Fx(103)p eop
%%Page: 104 106
104 105 bop 600 100 a Fx(104)2192 b(Lab)20 b(19.)40 b(Context)21
b(Switching)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF