C / C +  s t r u c t mB\c"}	 1 
 
 C + + -Ne x t e r n   " C " +TINmB\c"}	 7 
 
 C  ؚHezvQb	 1 2 
 
 C  L]eQ_|~zOp	 2 3 
 
 C  L]eQ_|~zOpKN N: ̀of{	 2 3 
 
 C  L]eQ_|~zOpKNN: oNgg{	 2 5 
 
 C  L]eQ_|~zOpKN	N: QX[d\O	 3 1 
 
 C  L]eQ_|~zOpKNV: O\U^d\O	 3 7 
 
 C  L]eQ_|~zOpKNN: .vd\O	 4 5 
 
 C  L]eQ_|~zOpKNmQ: '`OS	 4 9 
 
 C / C + +  v o i d Sv o i d cmB\c"}	 5 2 
 
 C / C + +  SSSpehmB\c"}	 5 6 
 
 C / C + + z^XT^X8^bՋmeQVRg( 2 ) 	 7 0 
 
 WNA R M vL]eQ_L i n u x y
iw[SO	 7 9 
 
 WNA R M vL]eQ_L i n u x y
iw[SO1 	  W,gi_	 7 9 
 
 WNA R M vL]eQ_L i n u x y
iw[SO2 	  B o o t L o a d e r 	 9 1 
 
  NSW
TYObՋvbNeR'	 1 0 6 
 
 WNA R M vL]eQ_L i n u x y
iw[SO3 	  d\O|~	 1 1 0 
 
 WNA R M vL]eQ_L i n u x y
iw[SO4 	  YqR	 1 1 9 
 
 WNA R M vL]eQ_L i n u x y
iw[SO5 	  ^(u[O	 1 3 6 
 
 C / C + + ~gSOv N*Nؚ~yr'`  c[bXTvMOpe	 1 4 5 
 
 C / C + + -NvяcN0܏cT]c	 1 4 7 
 
 N$NS~xQՋC / C + + -NTTSOu n i o n 	vO(u	 1 4 9 
 
 meQEmQL i n u x YqRz	 1 5 1 
 
 1 . L i n u x Q8h!jWW	 1 5 1 
 
 2 . W[&{YqRz^	 1 5 3 
 
 3 . YqR-Nvv^Sc6R	 1 5 8 
 
 4 . Yv;^XN^;^Xd\O	 1 6 5 
 
 
 
   C / C +  s t r u c t mB\c"}
 
     QYP C o n l i n e     \O[[NS    
 
 1 .           s t r u c t v]'Y\O(u  
 
       b[ N*NNv'YWC / C + + z^eSwvQ[s t r u c t vO(u`QbN1\SN[vQQvz~ۏLċ0O0V:N N*N'YWvC / C + + z^R_mS NN( u'Yϑ) ۏLpenc~Tv~gSOُN~gSOSN\S,gaIN^\N N*NteSOvpenc~T(W Nw0Ngyz^
NegO
NO(us t r u c t `7h(us t r u c t /f:S+R N*N _SNXT/f&TwQY0N[ _S~Svh_0  
 
       (WQ~OS0Oc6R0L]eQ_|~vC / C + + z-NbN~8^ Ov
N/f{USvW[Amc h a r Wpe~	/fYypenc~Twegv N*NteSOvQhsb__/f N*N~gSO0  
 
       ~
Nv _SNXT__\@b	g  OvQ[Oz^OX[(Wc h a r Wpe~-NǏcOPyvel OQ~beI{Oo`0ُ7hZPz
YBgfQN Nec6Re_SOOS	g@bSSz^1\ۏL^8^~vO9e0  
 
        N*N	g~v _SRup;mЏ(u~gSO>N N*NOP[GPQ~bc6ROS-N  O	NybevQ<h_R+R:Np a c k e t A 0p a c k e t B 0p a c k e t C   
 
 s t r u c t   s t r u c t A   
 
 {   
 
 	 i n t   a ;   
 
 	 c h a r   b ;   
 
 } ;   
 
   
 
 s t r u c t   s t r u c t B   
 
 {   
 
 	 c h a r   a ;   
 
 	 s h o r t   b ;   
 
 } ;   
 
   
 
 s t r u c t   s t r u c t C   
 
 {   
 
 	 i n t   a ;   
 
 	 c h a r   b ;   
 
 	 f l o a t   c ;   
 
 }   
 
 Oyvz^ُ7h Ovbe  
 
 s t r u c t   C o m m u P a c k e t   
 
 {   
 
 	 i n t   i P a c k e t T y p e ;  0 0/ / be{|Wh_  
 
 	 u n i o n  0 0 0 0 0 0/ / k!k Ov/f	Nybe-Nv NyO(uu n i o n   
 
 	 {   
 
 	 	 s t r u c t   s t r u c t A   p a c k e t A ;   s t r u c t   s t r u c t B   p a c k e t B ;   
 
 	 	 s t r u c t   s t r u c t C   p a c k e t C ;   
 
 	 }   
 
 } ;   
 
 (WۏLbe Oevc Os t r u c t   C o m m u P a c k e t  N*NteSO0  
 
 GPSQpevSb_YN  
 
   / /   p S e n d D a t a SW[Amv0W@Wi L e n Sv^  
 
 S e n d ( c h a r   *   p S e n d D a t a ,   u n s i g n e d   i n t     i L e n ) ;   
 
 SeSNvcۏLYN(uSs t r u c t   C o m m u P a c k e t v N*N[Os e n d C o m m u P a c k e t   
 
 S e n d (   ( c h a r   * ) & s e n d C o m m u P a c k e t   ,   s i z e o f ( C o m m u P a c k e t )   ) ;   
 
 GPc6eQpevSb_YN  
 
 / /   p R e c v D a t a SW[Amv0W@Wi L e n c6ev^  
 
 / / ԏV<P[Ec6e0RvW[pe  
 
 u n s i g n e d   i n t   R e c v ( c h a r   *   p R e c v D a t a ,   u n s i g n e d   i n t     i L e n )   
 
 c6eeSNvcۏLYN(u\c6e0RvpencOX[(Ws t r u c t   C o m m u P a c k e t v N*N[Or e c v C o m m u P a c k e t -N  
 
 R e c v (   ( c h a r   * ) & r e c v C o m m u P a c k e t   ,   s i z e o f ( C o m m u P a c k e t )   ) ;   
 
 c@w$Rebe{|WۏLv^Yt  
 
 s w i t c h ( r e c v C o m m u P a c k e t .   i P a c k e t T y p e )   
 
 {   
 
 c a s e   P A C K E T _ A :   
 
 &         / / A {|beYt  
 
 b r e a k ;   
 
 c a s e   P A C K E T _ B :   
 
 &  0    / / B {|beYt  
 
 b r e a k ;   
 
 c a s e   P A C K E T _ C :   
 
 &       / / C {|beYt  
 
 b r e a k ;   
 
 }   
 
 N
Nz^-N g<P_lav/f  
 
 S e n d (   ( c h a r   * ) & s e n d C o m m u P a c k e t   ,   s i z e o f ( C o m m u P a c k e t )   ) ;   
 
 R e c v (   ( c h a r   * ) & r e c v C o m m u P a c k e t   ,   s i z e o f ( C o m m u P a c k e t )   ) ;   
 
 -Nv:_6R{|Wlbc( c h a r   * ) & s e n d C o m m u P a c k e t 0( c h a r   * ) & r e c v C o m m u P a c k e t HQS0W@WQlS:Nc h a r Wcُ7h1\SNvc)R(uYtW[AmvQpe0  
 
 )R(uُy:_6R{|WlSbN؏SNeOz^vQOY[s e n d C o m m u P a c k e t @bYQX[RYS:N0 SNُ7h(uhQ^Qpem e m s e t ( )   
 
 m e m s e t ( ( c h a r   * ) & s e n d C o m m u P a c k e t , 0 ,   s i z e o f ( C o m m u P a c k e t ) ) ;   
 
 2 .           s t r u c t vbXT[P  
 
 I n t e l 0_oI{lQSf~QǏ NS{|<OvbՋ  
 
 # i n c l u d e   < i o s t r e a m . h >   
 
 # p r a g m a   p a c k ( 8 )   
 
 s t r u c t   e x a m p l e 1   
 
 { 
 
 s h o r t   a ;   
 
 l o n g   b ;   
 
 } ;   
 
 s t r u c t   e x a m p l e 2   
 
 {   
 
 	 c h a r   c ;   
 
 	 e x a m p l e 1   s t r u c t 1 ;   
 
 	 s h o r t   e ;         
 
 } ;   
 
 # p r a g m a   p a c k ( )   
 
 i n t   m a i n ( i n t   a r g c ,   c h a r *   a r g v [ ] )   
 
 {   
 
 e x a m p l e 2   s t r u c t 2 ;   
 
 c o u t   < <   s i z e o f ( e x a m p l e 1 )   < <   e n d l ;   
 
 c o u t   < <   s i z e o f ( e x a m p l e 2 )   < <   e n d l ;   
 
 c o u t   < <   ( u n s i g n e d   i n t ) ( & s t r u c t 2 . s t r u c t 1 )   -   ( u n s i g n e d   i n t ) ( & s t r u c t 2 )   < <   e n d l ;   
 
 r e t u r n   0 ;   
 
 }   
 
 z^veQ~g/fNHN  
 
 T{Hh/f  
 
 8   
 
 1 6   
 
 4   
 
 
Nf}v؏/f
Nf}vNb N NSeg  
 
 2 . 1   6q[Lu  
 
 s t r u c t /f Ny
YTpenc{|WvQgbCQ }eSN/fW,gpenc{|WYi n t 0l o n g 0f l o a t I{	vSϑ_NSN/f NN
YTpenc{|WYa r r a y 0s t r u c t 0u n i o n I{	vpencUSCQ0[N~gSOыhVOꁨRۏLbXTSϑv[PNcؚЏ{Hes0:w`QNыhV:N~gSOvk*NbXT	cvQ6q[Lun a t u r a l   a l i g n m e n t 	agNRMzz0T*NbXT	cgq[NXfvz^(WQX[-Nz^X[P,{ N*NbXTv0W@WTte*N~gv0W@WvT0  
 
 6q[Lu( n a t u r a l   a l i g n m e n t ) sS؞[Pe_/fc	c~gSOvbXT-Ns i z e  g'YvbXT[P0  
 
 OY  
 
 s t r u c t   n a t u r a l a l i g n   
 
 {   
 
 	 c h a r   a ;   
 
 	 s h o r t   b ;   
 
 	 c h a r   c ;   
 
 } ;   
 
 (W
N~gSO-Ns i z e  g'Yv/fs h o r t vQ^:N2 W[V~gSO-Nvc h a r bXTa 0c N2 :NUSMO[Ps i z e o f ( n a t u r a l a l i g n ) v~gI{N6   
 
 Yg9e:N  
 
 s t r u c t   n a t u r a l a l i g n   
 
 {   
 
 	 c h a r   a ;   
 
 	 i n t   b ;   
 
 	 c h a r   c ;   
 
 } ;   
 
 vQ~g>f6q:N1 2 0  
 
 2 . 2 c[[Lu  
 
  N,0WSNǏNbveleg9eS:wv[LuagN  
 
  0 0"   O(u*OcN# p r a g m a   p a c k   ( n ) ыhV\	cgqn *NW[[P  
 
 "   O(u*OcN# p r a g m a   p a c k   ( ) Smꁚ[INW[[Pe_0  
 
 laYg# p r a g m a   p a c k   ( n ) -Nc[vn 'YN~gSO-N g'YbXTvs i z e RvQ
Nw\O(u~gSON6q	cgqs i z e  g'YvbXTۏL[Lu0  
 
 OY  
 
 # p r a g m a   p a c k   ( n )   
 
 s t r u c t   n a t u r a l a l i g n   
 
 {   
 
 	 c h a r   a ;   
 
 	 i n t   b ;   
 
 	 c h a r   c ;   
 
 } ;   
 
 # p r a g m a   p a c k   ( )   
 
 S_n :N4 08 01 6 evQ[Pe_GW N7hs i z e o f ( n a t u r a l a l i g n ) v~gI{N1 2 0S_n :N2 evQS%cN\O(uO_s i z e o f ( n a t u r a l a l i g n ) v~g:N8 0  
 
 (WV C + +   6 . 0 ыhV-NbNSNc[vQ[Lue_V1 	vQd\Oe_:NO!k	bp r o j e t c t   >   s e t t i n g   >   C / C + + ܃US(Ws t r u c t   m e m b e r   a l i g n m e n t -Nc[`Ov[Lue_0  
 
     
 
 V1  0(WV C + +   6 . 0 -Nc[[Lue_  
 
 SYǏ_ _ a t t r i b u t e ( ( a l i g n e d   ( n ) ) ) _NSN@b\O(uv~gSObXT[P(Wn W[Lu
NFO/f[\O(uV
N\O~0  
 
 2 . 3         bՋvT{  
 
 dkbNSN[I n t e l 0_ovbՋۏLhQbvT{0  
 
 z^-N,{2 L# p r a g m a   p a c k   ( 8 ) }6qc[N[Lu:N8 FO/f1uNs t r u c t   e x a m p l e 1 -NvbXT g'Ys i z e :N4 l o n g Sϑs i z e :N4 	Ees t r u c t   e x a m p l e 1 N6q	c4 W[[Lus t r u c t   e x a m p l e 1 vs i z e :N8 sS,{1 8 LvQ~g  
 
 s t r u c t   e x a m p l e 2 -NS+TNs t r u c t   e x a m p l e 1 vQ,gS+Tv{USpencbXTv g'Ys i z e :N2 s h o r t Sϑe 	FO/fV:NvQS+TNs t r u c t   e x a m p l e 1 s t r u c t   e x a m p l e 1 -Nv g'YbXTs i z e :N4 s t r u c t   e x a m p l e 2 _N^N4 [Lu# p r a g m a   p a c k   ( 8 ) -Nc[v[Lu[s t r u c t   e x a m p l e 2 _N
Nw\O(uEe1 9 LvQ~g:N1 6   
 
 1uNs t r u c t   e x a m p l e 2 -NvbXTN4 :NUSMO[LuEevQc h a r Sϑc T^eEQ3 *NzzvQTMb/fbXTs t r u c t 1 vQX[zz2 0 LvQ~g:N4 0  
 
 3 .           C TC + + s t r u c t vmB\:S+R  
 
 (WC + +  -Ns t r u c t wQ	gN {|  0vRvQNsQ.W[c l a s s v:S+R(WNs t r u c t -NbXTSϑTQpev؞CgP:Np u b l i c c l a s s v:Np r i v a t e 0  
 
 OY[INs t r u c t {|Tc l a s s {|  
 
 s t r u c t   s t r u c t A   
 
 {   
 
 c h a r   a ;   
 
 &   
 
 }   
 
 c l a s s   c l a s s B   
 
 {   
 
             c h a r   a ;   
 
             &   
 
 }   
 
 R  
 
 s t r u c t   A   a ;   
 
 a . a   =   ' a ' ;         / / p u b l i c bXTTl  
 
 c l a s s B   b ;   
 
 b . a   =   ' a ' ;         / / p r i v a t e bXT
NTl  
 
 Ye.sQ0Ȓُ1\:N]~~QNC + + -Ns t r u c t Tc l a s s vhQ:S+R[R
N6qSY Np lav/f  
 
 C + + -Nvs t r u c t OcN[C -Ns t r u c t vhQb|Q[ُ&{TC + + vRw   a   b e t t e r   c  	VNbvd\O/fTlv  
 
 / / [INs t r u c t   
 
 s t r u c t   s t r u c t A   
 
 {   
 
 c h a r   a ;   
 
 c h a r   b ;   
 
 i n t   c ;   
 
 } ;   
 
 s t r u c t A   a   =   { ' a '   ,   ' a '   , 1 } ;         / /     [INevcKR<P  
 
 sSs t r u c t SN(W[INvePvcN{   } [vQbXTSϑKR<Pc l a s s R
N(W~xQfNv
0t h i n k i n g   C + +   2 n d   e d i t i o n 0-N\O[dkpۏLN:_0  
 
 4 .           s t r u c t zlaNy  
 
 wwNbvz^  
 
 1 .   # i n c l u d e   < i o s t r e a m . h >   
 
 2 .   s t r u c t   s t r u c t A   
 
 3 .   {   
 
 4 .   i n t   i M e m b e r ;   
 
 5 . 	 c h a r   * c M e m b e r ;   
 
 6 .   } ;   
 
 7 .   i n t   m a i n ( i n t   a r g c ,   c h a r *   a r g v [ ] )   
 
 8 .   {   
 
 9 . 	 s t r u c t A   i n s t a n t 1 , i n s t a n t 2 ;   
 
 1 0 . c h a r   c   =   ' a ' ;           
 
 1 1 .   i n s t a n t 1 . i M e m b e r   =   1 ;   
 
 1 2 .   i n s t a n t 1 . c M e m b e r   =   & c ;   	   
 
 1 3 . i n s t a n t 2   =   i n s t a n t 1 ;   	   
 
 1 4 . c o u t   < <   * ( i n s t a n t 1 . c M e m b e r )   < <   e n d l ;   	   
 
 1 5 . * ( i n s t a n t 2 . c M e m b e r )   =   ' b ' ;   	   
 
 1 6 .   c o u t   < <   * ( i n s t a n t 1 . c M e m b e r )   < <   e n d l ;   	   
 
 1 7 .   r e t u r n   0 ;   
 
 }   
 
 1 4 LvQ~g/fa   
 
 1 6 LvQ~g/fb   
 
 W h y ? bN(W1 5 L[i n s t a n t 2 vO9e9eSNi n s t a n t 1 -NbXTv<P  
 
 SV(WN1 3 Lvi n s t a n t 2   =   i n s t a n t 1 K<PSǑ(uv/fSϑ*NbُO_i n s t a n t 1 Ti n s t a n t 2 -Nvc M e m b e r cTNT NGrQX[V[i n s t a n t 2 vO9e_N/f[i n s t a n t 1 vO9e0  
 
 (WC  -NS_~gSO-NX[(WcWbXTe N[la(WǑ(uK<PSe/f&T\2 *N[O-NvcWbXTcTNT NGrQX[0  
 
 (WC + +  -NS_~gSO-NX[(WcWbXTebN ͑Qs t r u c t vbg Qpev^ۏL =  d\O&{͑}0
 
   
 
 
 
 
 
 
 
   
 
 
 
 
 
 
 
 
 
 C + + -Ne x t e r n   " C " +TINmB\c"}
 
 \O[[NS    e - m a i l : 2 1 c n b a o @ 2 1 c n . c o m  0QY*Ys^m5uQ
 
 1 . _   
 
         C + +  vR^Rw/f a   b e t t e r   C  FO/fُv^
NasT@wC + + -N{|<OC  vhQ@\SϑTQpe@bǑ(uvыTޏce_NC  [hQvT0\O:N Ny2kNC |Q[v C + + OYuN NRǏz_ vyrpNNy:N 
N{_^0WbT[a 	V[SN[IN
N^\NNUO{|vhQ@\SϑTQpe0FO/fC + + kz/f NybT[avz^ :NN/ecQpev͑}C + + [hQ@\QpevYte_NC 	gf>fv
NT0  
 
 2 . NhQ4YeNw  
 
 gONf~~QYNv NSbՋ  
 
 bՋ  
 
 :NNHNhQ4YeN	g{|<ONNv~g  
 
       # i f n d e f   _ _ I N C v x W o r k s h   
 
       # d e f i n e   _ _ I N C v x W o r k s h   
 
       # i f d e f   _ _ c p l u s p l u s   
 
       e x t e r n   " C "   {   
 
       # e n d i f   
 
       / * . . . * /   
 
       # i f d e f   _ _ c p l u s p l u s   
 
       }   
 
       # e n d i f   
 
       # e n d i f   / *   _ _ I N C v x W o r k s h   * /   
 
 Rg  
 
 >f6q4YeN-Nvы[ # i f n d e f   _ _ I N C v x W o r k s h 0# d e f i n e   _ _ I N C v x W o r k s h 0# e n d i f    v\O(u/f2bk4YeN͑
Y_(u0
 
 HN  
 
       # i f d e f   _ _ c p l u s p l u s   
 
       e x t e r n   " C "   {   
 
       # e n d i f   
 
     # i f d e f   _ _ c p l u s p l u s   
 
       }   
 
       # e n d i f   
 
 v\O(uS/fNHNbTbN\(WNe N NSeg0  
 
 3 . mB\c[e x t e r n   " C "   
 
 e x t e r n   " C "   S+TS͑+TINNW[b
NsSS_0RHQ[Opvvh/f e x t e r n  vvQ!k[Opvvh/f C  v0bNeg~ُ$N͑+TIN0  
 
 1 	              e x t e r n   " C " P[vQpebSϑ/fe x t e r n {|Wv  
 
 e x t e r n /fC / C + +  -NhfQpeThQ@\Sϑ\O(uVS'`	vsQ.W[sQ.W[JTɋыhVvQXfvQpeTSϑSN(W,g!jWWbvQ[!jWW-NO(u0OONRS  
 
 e x t e r n   i n t   a ;   
 
 NN/f N*NSϑvXfvQv^
N/f(W[INSϑa v^*g:Na RMQX[zz0Sϑa (W@b	g!jWW-N\O:N NyhQ@\SϑS[IN N!k&TROQsޏc0  
 
 8^(W!jWWv4YeN-N[,g!jWWcO~vQ[!jWW_(uvQpeThQ@\SϑNsQ.W[e x t e r n Xf0OYYg!jWWB 2k_(u!jWWA -N[INvhQ@\SϑTQpeeS S+T!jWWA v4YeNsSS0ُ7h!jWWB -N(u!jWWA -NvQpee(Wы6k!jWWB }6q~b
N0RQpeFO/fv^
NOb[O(Wޏc6k-NN!jWWA ыubvvhNx-N~b0RdkQpe0  
 
 Ne x t e r n [^vsQ.W[/fs t a t i c [OpvhQ@\SϑTQpeS(W,g!jWW-NO(u0Vdk N*NQpebSϑSS,g!jWWO(uevQ
NSe x t e r n    C  Op0  
 
 2 	              e x t e r n   " C " OpvSϑTQpe/f	cgqC  e_ыTޏcv  
 
 *gRe x t e r n    C  Xfevыe_  
 
 HQwwC + + -N[{|<OC vQpe/f`7hыv0
 
 \O:N NybT[av C + + /ecQpe͑}Ǐz_ C R
N/ec0QpeC + + ыT(W&{S^-Nv
TW[NC  v
NT0OYGPg*NQpevSW:N  
 
 v o i d   f o o (   i n t   x ,   i n t   y   ) ;   
 
 QpeC ыhVыT(W&{S^-Nv
TW[:N_ f o o C + + ыhVRONuP_ f o o _ i n t _ i n t KN{|v
TW[
NTvыhVSubv
TW[
NTFO/fǑ(uNvTv:g6Rubve
TW[y:N m a n g l e d   n a m e  	0_ f o o _ i n t _ i n t ُ7hv
TW[S+TNQpe
T0QpeSpepeϑS{|WOo`C + + 1\/f`ُy:g6Reg[sQpe͑}v0OY(WC + + -NQpev o i d   f o o (   i n t   x ,   i n t   y   ) Nv o i d   f o o (   i n t   x ,   f l o a t   y   ) ыubv&{S/f
NvTvT:N_ f o o _ i n t _ f l o a t 0
 
 T7h0WC + + -NvSϑd/ec@\SϑY؏/ec{|bXTSϑThQ@\Sϑ0(u7b@bQz^v{|bXTSϑSNhQ@\SϑT
TbNN" . " eg:SR0,g(
NыhV(WۏLыeNQpevYtv<O_N:N{|-NvSϑSN N*Nr NeNv
TW[ُ*N
TW[N(u7bz^-NT
TvhQ@\Sϑ
TW[
NT0
 
 *gRe x t e r n   " C " Xfevޏce_  
 
 GP(WC + + -N!jWWA v4YeNYN
 
 / /   !jWWA 4YeN 0m o d u l e A . h   
 
 # i f n d e f   M O D U L E _ A _ H   
 
   	 # d e f i n e   M O D U L E _ A _ H   
 
         i n t   f o o (   i n t   x ,   i n t   y   ) ;   
 
 # e n d i f   
 
 (W!jWWB -N_(uQpe
 
 / /   !jWWB [seN 0m o d u l e B . c p p   
 
 # i n c l u d e   " m o d u l e A . h "   
 
 f o o ( 2 , 3 ) ;   
 
 [E
N(Wޏc6kޏchVON!jWWA ubvvheNm o d u l e A . o b j -N[~b_ f o o _ i n t _ i n t ُ7hv&{S
 
 Re x t e r n   " C " XfTvыTޏce_  
 
 Re x t e r n   " C " XfT!jWWA v4YeNS:N  
 
 / /   !jWWA 4YeN 0m o d u l e A . h   
 
 # i f n d e f   M O D U L E _ A _ H   
 
   	 # d e f i n e   M O D U L E _ A _ H   
 
         e x t e r n   " C "   i n t   f o o (   i n t   x ,   i n t   y   ) ;   
 
 # e n d i f   
 
 (W!jWWB v[seN-NN6q(uf o o (   2 , 3   ) vQ~g/f
 
 1 	!jWWA ыubf o o vvhNxel	g[vQ
TW[ۏLyrkYtǑ(uNC  ve_
 
 2 	ޏchV(W:N!jWWB vvhNx[~bf o o ( 2 , 3 ) (ue[~bv/f*g~O9ev&{S
T_ f o o 0
 
 Yg(W!jWWA -NQpeXfNf o o :Ne x t e r n   " C " {|W!jWWB -NS+Tv/fe x t e r n   i n t   f o o (   i n t   x ,   i n t   y   )   R!jWWB ~b
N0R!jWWA -NvQpeSKNN6q0
 
 @bNSN(u NS݋ibe x t e r n    C  ُ*NXfvw[vvNUO -NvNUOlyr'`vދu
N/fa:NvegnNw[NLuv BlqR0bN(W`e
NS\PYu(Wُ*N /f`HNZPv؏ N[:NNHNُHNZPR:g/fNHNُ7hbNSNfmeQ0Wt㉸Y	  
 
 [sC + + NC SvQ[ vmTz0  
 
 f}vNC + + -Ne x t e r n   " C " vzR:gbNNbegwQSORge x t e r n   " C " 8^vO(ub]0  
 
 4 . e x t e r n   " C " v`(ul  
 
 1 	(WC + + -N_(uC  -NvQpeTSϑ(WS+TC  4YeNGP:Nc E x a m p l e . h 	e ۏLNRYt
 
 e x t e r n   " C "   
 
 {   
 
 # i n c l u d e   " c E x a m p l e . h "   
 
 }   
 
 (WC  v4YeN-N[vQYQpeSc[:Ne x t e r n {|WC  -N
N/ece x t e r n   " C " Xf(W. c eN-NS+TNe x t e r n   " C " eOQsыl0
 
 {QvC + + _(uC QpeOP[]z-NS+Tv	N*NeNvnNxYN
 
 / *   c  4YeNc E x a m p l e . h   * /   
 
 # i f n d e f   C _ E X A M P L E _ H   
 
 # d e f i n e   C _ E X A M P L E _ H   
 
 e x t e r n   i n t   a d d ( i n t   x , i n t   y ) ;   
 
 # e n d i f   
 
 / *   c  [seNc E x a m p l e . c   * /   
 
 # i n c l u d e   " c E x a m p l e . h "   
 
 i n t   a d d (   i n t   x ,   i n t   y   )   
 
 {   
 
 	 r e t u r n   x   +   y ;   
 
 }   
 
 / /   c + + [seN(ua d d c p p F i l e . c p p   
 
 e x t e r n   " C "   
 
 {   
 
 # i n c l u d e   " c E x a m p l e . h "   
 
 }   
 
 i n t   m a i n ( i n t   a r g c ,   c h a r *   a r g v [ ] )   
 
 {   
 
 	 a d d ( 2 , 3 ) ; 	   
 
 	 r e t u r n   0 ;   
 
 }   
 
 YgC + + (u N*NC  Qv. D L L eS_Sb. D L L v4YeNbXfcSQpee^Re x t e r n   " C "   {  0} 0
 
 2 	(WC -N_(uC + +  -NvQpeTSϑeC + + v4YeN mRe x t e r n   " C " FO/f(WC  -N
Nvc_(uXfNe x t e r n   " C " v4YeN^N\C eN-N\C + + -N[INve x t e r n   " C " QpeXf:Ne x t e r n {|W0
 
 {QvC _(uC + + QpeOP[]z-NS+Tv	N*NeNvnNxYN
 
 / / C + + 4YeN  c p p E x a m p l e . h   
 
 # i f n d e f   C P P _ E X A M P L E _ H   
 
 # d e f i n e   C P P _ E X A M P L E _ H   
 
 e x t e r n   " C "   i n t   a d d (   i n t   x ,   i n t   y   ) ;   
 
 # e n d i f   
 
 / / C + + [seN  c p p E x a m p l e . c p p   
 
 # i n c l u d e   " c p p E x a m p l e . h "   
 
 i n t   a d d (   i n t   x ,   i n t   y   )   
 
 {   
 
 	 r e t u r n   x   +   y ;   
 
 }   
 
 / *   C [seN  c F i l e . c   
 
 / *   ُ7hOыQ# i n c l u d e   " c E x a m p l e . h "   * /   
 
 e x t e r n   i n t   a d d (   i n t   x ,   i n t   y   ) ;   
 
 i n t   m a i n (   i n t   a r g c ,   c h a r *   a r g v [ ]   )   
 
 {   
 
 	 a d d (   2 ,   3   ) ; 	   
 
 	 r e t u r n   0 ;   
 
 }   
 
 YgmeQt㉆N,{3 -N@bve x t e r n   " C " (WыTޏc6kS%cv\O(u1\wckt,g@bvNC + + _(uC QpeTC _(uC + + Qpev`(ul0[,{4 ~Qv:yONx yr+RYuaT*N~0
 
 
 
 
 
 
 
   
 
 
 
 
 
 
 
 
 
 
 
 
 
 C  ؚHezvQb
 
 QؚHe{mvC  Nx/fYoN]z^Blvvh0,ge1\]\O-Nv NNSOOT~ZPvsQv
N[v0WeTMOcYe0
 
 ,{1 bNzzbce
 
 {:gz^-N g'Yvwv/fzzTevwvHNNُ*N҉^QST`~egQz^vHesbN1\	gN㉳Qv,{1 b- - Nzzbce0
 
 OYW[&{2NvK<P0
 
 elA 8^vRl
 
 # d e f i n e   L E N   3 2 
 
 c h a r   s t r i n g 1   [ L E N ] ; 
 
 m e m s e t   ( s t r i n g 1 , 0 , L E N ) ; 
 
 s t r c p y   ( s t r i n g 1 , " T h i s   i s   a n   e x a m p l e ! ! " 	 elB : 
 
 c o n s t   c h a r   s t r i n g 2 [ L E N ] = " T h i s   i s   a n   e x a m p l e ! " 
 
 c h a r * c p ; 
 
 c p = s t r i n g 2 ; 
 
 ( O(uvePSNvc(ucegd\O0) 
 
 N
NbvOP[SNwQA TB vHes/f
Nkv0(WT7hvX[PzzNB vcO(uc1\SNd\ONA  (u$N*NW[&{QpeMb[b0B v:p(WNup;m'`l	gA }Y0(W A~f9e N*NW[&{2NQ[vePA wQ	gf}Yvup;m'`YgǑ(uelB R X[YW[&{2N}6q`S(uN  'YϑvQX[FO/f_Nz^gbLvؚHes0
 
 Yg|~v[e'`Bl_ؚQX[؏	g NNbcP`OO(ubpe0
 
 bpevb- - O(u[Qpe
N/fQpe0>NOYN
 
 elC : 
 
 # d e f i n e   b w M C D R 2 _ A D D R E S S   4 
 
 # d e f i n e   b s M C D R 2 _ A D D R E S S   1 7 
 
 i n t   B I T _ M A S K   ( i n t _ b f ) 
 
 { 
 
 r e t u r n   ( ( I U < < ( b w # # _ b f ) ) - 1 ) < < ( b s # # _ b f ) ; 
 
 } 
 
 v o i d   S E T _ B I T S ( i n t _ d s t , i n t _ b f , i n t _ v a l ) 
 
 { 
 
 _ d s t = ( ( _ d s t )   &   ~   ( B I T _ M A S K ( _ b f ) ) ) I \   ( ( ( _ v a l ) < < < ( b s # # _ b f ) ) & ( B I T _ M A S K ( _ b f ) ) ) 
 
 } 
 
 S E T _ B I T S ( M C D R 2 , M C D R 2 _ A D D R E S S , R e g i s t e r N u m b e r ) ; 	 elD : 
 
 # d e f i n e   b w M C D R 2 _ A D D R E S S   4   
 
 # d e f i n e   b s M C D R 2 _ A D D R E S S   1 7 
 
 # d e f i n e   b m M C D R 2 _ A D D R E S S   B I T _ M A S K   ( M C D R 2 _ A D D R E S S ) 
 
 # d e f i n e   B I T _ M A S K ( _ b f ) ( ( ( 1 U < < ( b w # # _ b f ) ) - 1 ) < <   ( b s # # _ b f ) 
 
 # d e f i n e   S E T _ B I T S ( _ d s t , _ b f , _ v a l ) \   ( ( _ d s t ) = ( ( _ d s t ) & ~ ( B I T _ M A S K ( _ b f ) ) ) I   ( ( ( _ v a l ) < < ( b s # # _ b f ) ) & ( B I T _ M A S K ( _ b f ) ) ) ) 
 
 S E T _ B I T S ( M C D R 2 , M C D R 2 _ A D D R E S S , R e g i s t e r N u m b e r ) ; 
 
 QpeT[Qpev:S+R1\(WN[Qpe`S(uN'YϑvzzQpe`S(uNe0'Y[wSv/fQpe(u/fO(u|~vhegOX[pencvYgыhV̑	ghhg	y N,(WQpev4YOL]eQ NNGlS[S_MRhۏLhgTeC P U _N(WQpe(ueOX[Tb`
YS_MRvs:WۏLShT9_hd\O@bNQpe(u  NNC P U e0[Qpe
NX[(Wُ*N0[QpeNN\O:NHQQ}YvNxL]eQ0RS_MRz^
NONuQpe(u@bNNN/f`S(uNzz(WA~(uT N*N[QpeveP勰sa$\vQzQ0
 
 D el/fbw0Rv g}YvnMOd\OQpe/fA R M lQSnxv NR(Wwwv	NLQ[sN_YRQNNmvN@b	gvMOd\OR0C el/fvQSSOvQ-NnsT؏ 'Y[N~SOO0
 
 ,{2 bpef[el㉳Q
 
 s(WbNo~ؚHeC  Qv,{Nb- - Ǒ(upef[eleg㉳Q0
 
 pef[/f{:gKNkl	gpef[vOncTW@x1\l	g{:gvSU\@bN(WQz^vePǑ(u NNpef[elO[z^vgbLHes	gpeϑ~vcؚ0
 
 >NOYNBl1 ~ 1 0 0 vT0
 
 elE 
 
 i n t   I , j ; 
 
 f o r   ( I = 1 ;   I < = 1 0 0 ;   I + + ) { 
 
 j + = I ; 
 
 } 	 elF 
 
 i n t   I ; 
 
 I = ( 1 0 0 * ( 1 + 1 0 0 ) ) / 2 
 
 ُ*NOP[/fbpSa gmv N*Npef[(uO/fbv{:g/T^bv0S_ebS	g\f[	Nt^~S`bS_e
NwS(ulQ_N x ( N + 1 ) / 2 eg㉳Qُ*N0elE _sN1 0 0 !kMb㉳Q_N1\/f g\(uN1 0 0 *NK<P01 0 0 *N$Re02 0 0 *NRl( I Tj ) elF NN(uN1 *NRl01 *NXNl01 !kdl0Heg6q
N U0@bNs(Wb(Wz^vePfYv/fRK{~bĉ_ g'YP^0WS%cpef[vZRegcؚz^ЏLvHes0
 
 ,{3 bO(uMOd\O
 
 [sؚHevC  Qv,{	Nb- - O(uMOd\OQ\dlTS!jvЏ{0
 
 (W{:gz^-NpencvMO/fSNd\Ov g\pencUSMOt
NSN(u MOЏ{ eg[b@b	gvЏ{Td\O0 N,vMOd\O/f(uegc6RlxNvbZPpencSbcO(uFO/fup;mvMOd\OSN	gHe0Wcؚz^ЏLvHes0>NOSYN
 
 elG 
 
 i n t   I , J ; 
 
 I = 2 5 7 / 8 ; 
 
 J = 4 5 6 % 3 2 ; 	 elH 
 
 i n t   I , J ; 
 
 I = 2 5 7 > > 3 ; 
 
 J = 4 5 6 - ( 4 5 6 > > 4 < < 4 ) ; 
 
 (WW[b
N}YaH kG pN}YYFO/fN~gwNuvGlNx1\Of}vel  G (uNW,gvS!jQpeTdlQpee	gQpe(u؏	g_YGlNxT[X[hVSNЏ{elH RNN/fQSvsQvGlNxf{m0Hesfؚ0S_6q1uNыhVv
NTSHesv]ݍ
N'YFO/fNbvMRG0RvM S   C , A R M   C egwHesv]ݍ؏/f
N\0vsQGlNx1\
N(Wُ̑R>NN0
 
 Џ(uُb lav/fV:NC P U v
NTNuv0kY(WP C 
N(uُbQvz^v^(WP C 
NՋǏ(Wy
i0R N*N1 6 MO:gs^S
NvePSONuNx`0@bNS	g(W N[b/gۏ6vW@xNMbSNO(uُb0
 
 ,{4 bGlL]eQ
 
 ؚHeC  zv_@gb,{Vb- - L]eQGl0
 
  (Wq`Gl vN<w̑C  Qvz^/fW>W 0ُyl}6qOPoN NNFO/ftS	g[vSt0Gl /fHes gؚv{:g FO/f
NS`@w[egQ N*Nd\O|~'T@bN:NN_z^vؚHesbNS}YǑ(uSvel- - L]eQGl0mTz0
 
 >NOYN\pe~ NK<P~pe~NBlk N*NW[v&{0c h a r   s t r i n g 1 [ 1 0 2 4 ] ,   s t r i n g 2 [ 1 0 2 4 ] ; 
 
 elI 
 
 i n t   I ; 
 
 f o r   ( I = 0 ;   I < 1 0 2 4 ;   I + + ) 
 
 * ( s t r i n g 2 + I ) = * ( s t r i n g 1 + I ) 	 elJ 
 
 # i n t   I ; 
 
 f o r ( I = 0 ;   I < 1 0 2 4 ;   I + + ) 
 
 * ( s t r i n g 2 + I ) = * ( s t r i n g 1 + I ) ; 
 
 # e l s e 
 
 # i f d e f _ A R M _ 
 
 _ a s m 
 
 { 
 
 M O V   R 0 , s t r i n g 1 
 
 M O V   R 1 , s t r i n g 2 
 
 M O V   R 2 , # 0 
 
 l o o p : 
 
 L D M I A   R 0 ! , [ R 3 - R 1 1 ] 
 
 S T M I A   R 1 ! , [ R 3 - R 1 1 ] 
 
 A D D   R 2 , R 2 , # 8 
 
 C M P   R 2 ,   # 4 0 0 
 
 B N E   l o o p 
 
 } 
 
 # e n d i f 
 
 elI /f g8^velO(uN1 0 2 4 !k_selJ R9hncs^S
NTZPN:SR(WA R M s^SN(uL]eQGlN(u1 2 8 !k_s1\[bNT7hvd\O0ُ̑	ggSO:NNHN
N(uhQvQX[bQpebTُ/fV:N(Wnpenc̑S+T	gpenc:N0 vW[ُ7hv݋hQ^QpeOcMR~_g
NO[bbNBlvd\O0ُ*NOzxQW^(uNL C D pencvbǏz09hnc
NTvC P U q~O(uv^vL]eQGlSN'Y'Ycؚz^gbLvHes0
 
 }6q/f_@gbFO/fYg{fO(uONQ`͑vNN0ُ/fV:NO(uNL]eQGlOP6RNz^vSy
i'`Oz^(W
NTs^Sy
ivǏz-NgSNυ0iasuTebpe_NNsNoN]zv``vݏ̀S	g(W
N_]v`QNMbSNǑ(u0R0
 
 O(uC  ۏLؚHeszbvSOONdk]0(Wdk],gebx_s؏TMOؚKbqQTRx0^gTMO~Qf}Yvel'Y[ NwcؚbNvzb]0
 
     
 
                                                                                                                                                                                 Xd
0USGr:gNL]eQ_|~^(u02 0 0 3 . 9   
 
 
 
 C  KmՋ`C  KmՋ`b:NL]eQ_z^XT^wSv0 x 1 0 *NW,g      
 
     - | e n d e a v e r   ShN  2 0 0 6 - 3 - 8   1 6 : 1 6 : 0 0   
 
 
 
 C  KmՋ`C  KmՋ`b:NL]eQ_z^XT^wSv0 x 1 0 *NW,g  
 
 
 
 
 
 C  KmՋ/fbXL]eQ_|~z^XTǏz-N_{N	gHevel0ُNt^beSR_N~~NYُyKmՋ(WُǏz-NbaƋ0RُNKmՋ:N&^bՋTbՋcOY	g(uOo`dkYd _bՋvSR
NُyKmՋ_N/fvS_	gv0  
 
 NbՋv҉^eg`ON㉸YsQNQbvv`Q0ُ*NKmՋS/fQ:N>f:yvQ[A N S I hQ~vwƋ
N/fb/gb]Tُ*Na"vTY`OT{Qg*NW[&{vA S C I I <P0ُN@w͑[`Ov|~(uTQX[RMV{euebvRTُh_@wQ_Ne(W_:g
N
N
N(WL]eQ_|~
N0Yg
NNUOvT{Hh/f" /f" v݋HNbwSb_wQb/f&T^勻SZPُN]\O0  
 
 NbՋv҉^eg N*NKmՋ_NNYebc:y^Ջv }( gW,gv`ON㉔^ՋC  v4ls^0
N{`HN7hw NNُNYUOVT{N
NOv_N/fn	g0^Ջ/fN}YvvɉZPQfzfv	b؏/fS/fwbTS_^Ջ(Wg*N
NaSOOe/f~bPSbT؏/fhsQ[vwckv}YGY_bُwbf[`Nv:gObTbSsُNOo`NNNvKmՋb~ N7h	g(u0  
 
 	gNُN`lbQ[Q NNwck[L]eQ_|~v^gُNNN4Yuv~ck(W~b]\OvN Np.^OO0ُN/fbُNt^[Ex0Rv0vQ-N	gN_FO[N^~`O Np/T0  
 
 ُ*NKmՋN
NT4ls^v^Ջ'YYpeR~4ls^v^Ջvb~O_]~0N[vz^XT^	g_}Yvb~0:NN`O]Q[gNvOP}Yk*Nl	gRMRpeYg	bُN:N`O@b(uL	c`Ova`RMRpe0  
 
 YthVP r e p r o c e s s o r 	  
 
 
 
 1   .   (uYtcN# d e f i n e   Xf N*N8^pe(uNhf1 t^-N	gY\y_eut^	  
 
 
 
 
 
 # d e f i n e   S E C O N D S _ P E R _ Y E A R   ( 6 0   *   6 0   *   2 4   *   3 6 5 ) U L   
 
 b(Wُ`w0RQNN`  
 
 " ;   # d e f i n e   lvW,gwƋOY
NNRS~_gbSvO(uI{I{	  
 
 
 
 
 
 " ;   a_YthV\:N`O{8^peh_v<PVdkvcQQ`O/fYUO{ Nt^-N	gY\y
N/f{Q[Ev<P/ffnpfl	gNNv0  
 
 " ;   aƋ0Rُ*Nh_\O N*N1 6 MO:gvteWpenQ- Vdk(u0RteW&{SL , JTɋыhVُ*N8^pe/fvteWpe0  
 
 " ;   Yg`O(W`Ovh_-N(u0RU L h:ye&{SteW	HN`O	gN N*N}Yvwp0OO,{ NpSa_͑0  
 
 2   .   Q N*N" hQ" [M I N   ُ*N[eQ$N*NSpev^ԏV\v N*N0  
 
 
 
 
 
 # d e f i n e   M I N ( A , B )   A 	  < =   ( B )   ?   ( A )   :   ( B ) )   
 
 
 
 ُ*NKmՋ/f:NNbvvvv  
 
 " ;   hƋ# d e f i n e (W[-N^(uvW,gwƋ0ُ/f_͑vV:Nv0RL]eQ( i n l i n e ) d\O&{S:NhQC v NR[/feONuL]eQNxv/U Nel[NL]eQ_|~eg:NN0RBlv'`L]eQNx~8^/f_{vel0  
 
 " ;   	N͑agNd\O&{vwƋ0ُ*Nd\O&{X[(WC  -NvSV/f[O_ыhVNuki f - t h e n - e l s e fOSvNxNُ*N(ul/f_͑v0  
 
 " ;   a_(W[-N\_0WbSpe(ubSbweg  
 
 " ;   b_N(uُ*N _Y[voR\O(uOYS_`OQNbvNxeOSuNHNN  
 
 
 
 l e a s t   =   M I N ( * p + + ,   b ) ;   
 
 
 
 
 
 3 .   YthVhƋ# e r r o r vvv/fNHN  
 
 Yg`O
NwST{HhwSe.s1 0ُ[:SR N*Nck8^vOT N*NfNFTP[/f_	g(uv0S	gfNFTP[MbOC  ,gvDU_S~bQaُyvT{Hh0S_6qYg`O
N/f(W~b N*NfNFTP[HN^Ջ g}Y^g]
NwST{Hh0  
 
 {k_sI n f i n i t e   l o o p s 	  
 
 
 
 
 
 4 .   L]eQ_|~-N~8^(u0ReP_s`O`HN7h(uC Q{k_sbT  
 
 ُ*N(uQ*N㉳QeHh0b	veHh/f  
 
 
 
 w h i l e ( 1 )   
 
 {   
 
 ? }   
 
 
 
 
 
 
 
  NNz^XTfU"kYNeHh  
 
 
 
 f o r ( ; ; )   
 
 {   
 
 ? }   
 
 
 
 
 
 
 
 ُ*N[se_b:NV:Nُ*Nll	gnxRh0R^`HNVN0Yg N*N^Ջ~Qُ*N\O:NeHhb\(uُ*N\O:N N*N:gOScvzNNُ7hZPvW,gSt0YgNNvW,gT{Hh/f" bYe@wُ7hZPFONl	g`0RǏ:NNHN0" ُO~bYuN N*NOWpSa0  
 
 ,{	N*NeHh/f(u  g o t o   
 
 
 
 L o o p :   
 
 . . .   
 
 g o t o   L o o p ;   
 
 
 
 
 
 ^ՋY~Q
NbveHhُfbN/f N*NGl z^XTُ_N/f}YN	bN/f N*N`ۏeQeWvB A S I C / F O R T R A N z^XT0  
 
 
 
 pencXfD a t a   d e c l a r a t i o n s 	  
 
 
 
 5 .   (uSϑa ~QNbv[IN  
 
 a )    N*NteWpeA n   i n t e g e r 	  
 
 b )  N*NcTteWpevc  A   p o i n t e r   t o   a n   i n t e g e r 	  
 
 c )  N*NcTcvvc[cTvc/fcT N*NteWpe  A   p o i n t e r   t o   a   p o i n t e r   t o   a n   i n t e g e 	r   
 
 d )  N*N	g1 0 *NteWpevpe~  A n   a r r a y   o f   1 0   i n t e g e r s 	  
 
 e )    N*N	g1 0 *Ncvpe~c/fcT N*NteWpev0A n   a r r a y   o f   1 0   p o i n t e r s   t o   i n t e g e r s 	  
 
 f )    N*NcT	g1 0 *NteWpepe~vc  A   p o i n t e r   t o   a n   a r r a y   o f   1 0   i n t e g e r s 	  
 
 g )    N*NcTQpevcQpe	g N*NteWSpev^ԏV N*NteWpeA   p o i n t e r   t o   a   f u n c t i o n   t h a t   t a k e s   a n   i n t e g e r   a s   a n   a r g u m e n t   a n d   r e t u r n s   a n   i n t e g e r 	  
 
 h )  N*N	g1 0 *Ncvpe~ccT N*NQpeQpe	g N*NteWSpev^ԏV N*NteWpe  A n   a r r a y   o f   t e n   p o i n t e r s   t o   f u n c t i o n s   t h a t   t a k e   a n   i n t e g e r   a r g u m e n t   a n d   r e t u r n   a n   i n t e g e r   	  
 
 
 
 T{Hh/f  
 
 a )   i n t   a ;   / /   A n   i n t e g e r   
 
 b )   i n t   * a ;   / /   A   p o i n t e r   t o   a n   i n t e g e r   
 
 c )   i n t   * * a ;   / /   A   p o i n t e r   t o   a   p o i n t e r   t o   a n   i n t e g e r   
 
 d )   i n t   a [ 1 0 ] ;   / /   A n   a r r a y   o f   1 0   i n t e g e r s   
 
 e )   i n t   * a [ 1 0 ] ;   / /   A n   a r r a y   o f   1 0   p o i n t e r s   t o   i n t e g e r s   
 
 f )   i n t   ( * a ) [ 1 0 ] ;   / /   A   p o i n t e r   t o   a n   a r r a y   o f   1 0   i n t e g e r s   
 
 g )   i n t   ( * a ) ( i n t ) ;   / /   A   p o i n t e r   t o   a   f u n c t i o n   a   t h a t   t a k e s   a n   i n t e g e r   a r g u m e n t   a n d   r e t u r n s   a n   i n t e g e r   
 
 h )   i n t   ( * a [ 1 0 ] ) ( i n t ) ;   / /   A n   a r r a y   o f   1 0   p o i n t e r s   t o   f u n c t i o n s   t h a t   t a k e   a n   i n t e g e r   a r g u m e n t   a n d   r e t u r n   a n   i n t e g e r   
 
 NN~8^Xyُ̑	gQ*N/fy NNfNMbVT{vbTaُyl0S_bQُ{eze:NNnx[lvcknx'`bvnxgN NNfN0FO/fS_bbՋvePbgg0Rُ*Nbvяv	0V:N(WbՋvُkȇbnx[bwSُ*NvT{Hh0^ՋYg
NwS@b	gvT{Hhb\'YRT{Hh	HN_N1\l	g:Nُ!kbՋZPQYYgbՋl	g:Nُ!kbՋZPQYHNNS:NNHNQQYbT  
 
 S t a t i c   
 
 6 .   sQ.W[s t a t i c v\O(u/fNHN  
 
 ُ*N{USv_\	gNVT{[hQ0(WC  -NsQ.W[s t a t i c 	g	N*Nf>fv\O(u  
 
 " ;   (WQpeSO N*NXf:NY`vSϑ(Wُ NQpe(uǏz-N~cvQ<P
NS0  
 
 " ;   (W!jWWQFO(WQpeSOY	 N*NXf:NY`vSϑSN!jWWQ@b(uQpeFO
N!jWWYvQ[Qpe0[/f N*N,g0WvhQ@\Sϑ0  
 
 " ;   (W!jWWQ N*NXf:NY`vQpeSSُ N!jWWQvvQ[Qpe(u01\/fُ*NQpeP6R(WXf[v!jWWv,g0WVQO(u0  
 
 'YYpe^ՋcknxVT{,{ NR NRcknxVT{,{NRT/f_\vNa_,{	NR0ُ/f N*N^Ջv%N͑v:pV:NN>f6q
Na_,g0WSpencTNxVv}YYT͑'`0  
 
 
 
 
 
 C o n s t   
 
 
 
 7 sQ.W[c o n s t 	gNHN+Ta  
 
 bS N,T0RbՋ" c o n s t asT@w8^pe" b1\wSbck(WT N*NNYOSbNS0St^D a n   S a k s ]~(WNvez̑[hQibNc o n s t v@b	g(ulVdkE S P ( ыE m b e d d e d   S y s t e m s   P r o g r a m m i n g ) vk NMO^^8^q`c o n s t ZPNHNT
NZPNHN. Yg`ONl	g0R{ezSQc o n s t asT@w" S" 1\SNN0=\{ُ*NT{Hh
N/f[hQvT{HhFObcS[\O:N N*NcknxvT{Hh0Yg`O`wSf~vT{HhN~ NNS a k s vez'T0	  
 
 Yg^ՋcknxVT{ُ*Nb\N N*NDRv  
 
 NbvXf/fNHNa`  
 
 
 
 c o n s t   i n t   a ;   
 
 i n t   c o n s t   a ;   
 
 c o n s t   i n t   * a ;   
 
 i n t   *   c o n s t   a ;   
 
 i n t   c o n s t   *   a   c o n s t ;   
 
 
 
 / * * * * * * /   
 
 MR$N*Nv\O(u/f N7ha /f N*N8^teWpe0,{	N*NasT@wa /f N*NcT8^teWpevc_N1\/fteWpe/f
NSO9evFOcSN	0,{V*Na`a /f N*NcTteWpev8^c_N1\/fccTvteWpe/fSNO9evFOc/f
NSO9ev	0 gT N*NasT@wa /f N*NcT8^teWpev8^c_N1\/fccTvteWpe/f
NSO9evTec_N/f
NSO9ev	0Yg^ՋcknxVT{ُNHNN1\~bYuNN N*N}YpSa0z&^c NS_N`OSOsSO
N(usQ.W[c o n s t _N؏/f_[fQQRcknxvz^HNb:NNHN؏Ydkw͑sQ.W[c o n s t bTb_NYNvQNt1u  
 
 " ;   sQ.W[c o n s t v\O(u/f:N~`ONxvN O^8^	g(uvOo`[E
NXf N*NSpe:N8^ϑ/f:NNJTɋN(u7bُ*NSpev^(uvv0Yg`Of_YentvQ[NYuNvW>W`O1\O__f[Oa"ُpYYOvOo`0S_6qa_(uc o n s t vz^XT_\OYuNvW>W+RNegntv0	  
 
 " ;   Ǐ~OShV NNDRvOo`O(usQ.W[c o n s t _NNuf'}QvNx0  
 
 " ;   Tt0WO(usQ.W[c o n s t SNOыhV_6q0WObN
N^g9eSvSpe2bkvQeavNxO9e0{ KNُ7hSNQ\b u g vQs0  
 
 V o l a t i l e   
 
 
 
 8 .   sQ.W[v o l a t i l e 	gNHN+Ta? v^~Q	N*N
NTvOP[0  
 
  N*N[IN:Nv o l a t i l e vSϑ/fُSϑSOa`
N0R0W9eSُ7hыhV1\
NOSGPُ*NSϑv<PN0|nx0W1\/fOShV(W(u0Rُ*NSϑe_{k!k\_0W͑eSُ*NSϑv<P
N/fO(uOX[(W[X[hV̑vYN0Nb/fv o l a t i l e SϑvQ*NOP[  
 
 " ;   v^LYvlxN[X[hVYr`[X[hV	  
 
 " ;    N*N-Ne
gRP[z^-NO0Rv^ꁨRSϑ( N o n - a u t o m a t i c   v a r i a b l e s )   
 
 " ;   Y~z^(u-NQ*NNRqQNvSϑ  
 
 
 
 VT{
NQُ*NvN/f
NOǖcOv0b:Nُ/f:SRC z^XTTL]eQ_|~z^XTv gW,gv0dL]eQ_v[ON~8^TlxN0-Ne0R T O S I{I{SbNS@b	gُNBl(u0Rv o l a t i l e Sϑ0
Na_v o l a t i l e vQ[\O&^eg~p0  
 
 GPbՋcknx0WVT{Nُ/fU `u/f&TO/fُ7h	b\
z_mvz NNw NNُ[O/f
N/fvcka_v o l a t i l e [hQv͑'`0  
 
 " ;    N*NSpeeSN/fc o n s t ؏SN/fv o l a t i l e Tʑ:NNHN0  
 
 " ;    N*NcSN/fv o l a t i l e   Tʑ:NNHN0  
 
 " ;   NbvQpe	gNHN  
 
 i n t   s q u a r e ( v o l a t i l e   i n t   * p t r )   
 
 {   
 
 r e t u r n   * p t r   *   * p t r ;   
 
 }   
 
 
 
 Nb/fT{Hh  
 
 " ;   /fv0 N*NOP[/fSvr`[X[hV0[/fv o l a t i l e V:N[Sa`
N0R0W9eS0[/fc o n s t V:Nz^
N^ՋVSO9e[0  
 
 " ;   /fv0=\{ُv^
N_8^0 N*NOP[/fS_ N*N-N
gRP[z^O N*NcT N*Nb u f f e r vce0  
 
 " ;   ُkNx	gpS`0ُkNxvvv/f(uegԏc* p t r cT<Pvs^eFO/f1uN* p t r cT N*Nv o l a t i l e WSpeыhV\Nu{|<ONbvNx  
 
 
 
 
 
 i n t   s q u a r e ( v o l a t i l e   i n t   * p t r )   
 
 {   
 
 i n t   a , b ;   
 
 a   =   * p t r ;   
 
 b   =   * p t r ;   
 
 r e t u r n   a   *   b ;   
 
 }   
 
 
 
 
 
 1uN* p t r v<PSa`
N0R0WSVdka Tb S/f
NTv0~gُkNxSԏ
N/f`O@bggvs^e<PcknxvNxYN  
 
 
 
 l o n g   s q u a r e ( v o l a t i l e   i n t   * p t r )   
 
 {   
 
 i n t   a ;   
 
 a   =   * p t r ;   
 
 r e t u r n   a   *   a ;   
 
 }   
 
 
 
 MOd\OB i t   m a n i p u l a t i o n 	  
 
 
 
 9 .   L]eQ_|~;`/f(u7b[Sϑb[X[hVۏLMOd\O0~[ N*NteWSϑa Q$NkNx,{ N*Nna vb i t   3 ,{N*Nnda   vb i t   3 0(WN
N$N*Nd\O-NOcvQ[MO
NS0  
 
 [ُ*N	g	NyW,gvS^  
 
 " ;   
NwSYUONKb0勫bNlZPǏNUOL]eQ_|~v]\O0  
 
 " ;   (ub i t   f i e l d s 0B i t   f i e l d s /fTb0RC  {k҉vN[O`OvNx(W
NTыhVKN/f
NSy
ivTe_NONv`OvNx/f
NS͑(uv0b gя
Nx^w0RI n f i n e o n :NvQ
YBgvOGrQvqRz^[(u0RNb i t   f i e l d s Vdk[hQ[be(uV:NbvыhV(uvQ[ve_eg[sb i t   f i e l d s v0NS_8l܏
N N*N^L]eQ_v[O|[ElxNv0  
 
 " ;   (u  # d e f i n e s   T  b i t   m a s k s   d\O0ُ/f N*N	ggؚSy
i'`vel/f^勫(u0Rvel0 gsOv㉳QeHhYN  
 
 
 
 
 
 # d e f i n e   B I T 3   ( 0 x 1   < <   3 )   
 
 s t a t i c   i n t   a ;   
 
 
 
 v o i d   s e t _ b i t 3 ( v o i d )   {   
 
 a   | =   B I T 3 ;   
 
 }   
 
 v o i d   c l e a r _ b i t 3 ( v o i d )   {   
 
 a   & =   ~ B I T 3 ;   
 
 }   
 
 
 
  NNNU"k:NnTnd<P[IN N*NcxTe[IN NNf8^peُ_N/fSNcSv0b^gw0RQ*Npf8^pe0| = T& = ~ d\O0  
 
 V[vQX[MOnA c c e s s i n g   f i x e d   m e m o r y   l o c a t i o n s 	  
 
 
 
 1 0 .   L]eQ_|~~8^wQ	gBlz^XTSgyr[vQX[MOnvyrp0(Wg]z-NBln N~[0W@W:N0 x 6 7 a 9 vteWSϑv<P:N0 x a a 6 6 0ыhV/f N*N~|vA N S I ыhV0QNxS[bُ NNR0  
 
 ُ NKmՋ`O/f&TwS:NN N~[0W@Wb N*NteWpe:_6Rlbct y p e c a s t 	:N Nc/fTlv0ُ Nv[se_@w*NNΘ<h
NT
NT0xQWv{|<ONxYN  
 
 
 
 i n t   * p t r ;   
 
 p t r   =   ( i n t   * ) 0 x 6 7 a 9 ;   
 
 * p t r   =   0 x a a 5 5 ;   
 
 
 
 A   m o r e   o b s c u r e   a p p r o a c h   i s :   
 
  N*Nffmvel/f  
 
 
 
 * ( i n t   *   c o n s t ) ( 0 x 6 7 a 9 )   =   0 x a a 5 5 ;   
 
 
 
 sSO`OvTsTfcя,{NyeHhFOb^`O(WbՋeO(u,{ NyeHh0  
 
 
 
 -NeI n t e r r u p t s 	  
 
 
 
 1 1 .   -Ne/fL]eQ_|~-N͑v~bRُ[N_Yы _SFUcO NyibU\ hQC /ec-Ne0wQNhN[/fNuN N*NevsQ.W[_ _ i n t e r r u p t 0NbvNx1\O(uN_ _ i n t e r r u p t sQ.W[S[INN N*N-Ne
gRP[z^( I S R ) ċ NNُkNxv0  
 
 
 
 _ _ i n t e r r u p t   d o u b l e   c o m p u t e _ a r e a   ( d o u b l e   r a d i u s )   
 
 {   
 
 d o u b l e   a r e a   =   P I   *   r a d i u s   *   r a d i u s ;   
 
 p r i n t f ( " \ n A r e a   =   % f " ,   a r e a ) ;   
 
 r e t u r n   a r e a ;   
 
 }   
 
 
 
 ُ*NQpe	g*YYvNN󁩋N
NwNUOwN  
 
 " ;   I S R   
NԏV N*N<P0Yg`O
Naُ*NHN`O
NOǖ(uv0  
 
 " ;   I S R   
N OSpe0Yg`Ol	gw0Rُ Np`Oǖ(uv:gOI{T,{ Ny0  
 
 " ;   (WYvYthV/ ыhV-Nnmp N,/f
NS͑eQv0	gNYthV/ ыhV Yv[X[hVeQh	gNYthV/ ыhV1\/f
NAQ(WI S R -NZPnmpЏ{0dkYI S R ^/fw	gHesv(WI S R -NZPnmpЏ{/f
Nfzfv0  
 
 " ;   N,{	Np N	vbp r i n t f ( ) ~8^	g͑eQT'`
Nv0Yg`O"NcN,{	NT,{Vpb
NO*Y:N`Ov0
N(uYg`O_0RT$NpHN`Ovǖ(uMRofegIQfN0  
 
 
 
 * * * * *   
 
 NxOP[C o d e   e x a m p l e s 	  
 
 
 
 1 2   .   NbvNxQ/fNHN:NNHN  
 
 
 
 v o i d   f o o ( v o i d )   
 
 {   
 
 u n s i g n e d   i n t   a   =   6 ;   
 
 i n t   b   =   - 2 0 ;   
 
 ( a + b   >   6 )   ?   p u t s ( " >   6 " )   :   p u t s ( " < =   6 " ) ;   
 
 }   
 
 ُ*NKmՋ`O/f&Ta_C  -NvtepeꁨRlbcSRbSs	gN _Sa_g\ُNN0
N{YUOُe&{SteWvT{Hh/fQ/f  " > 6 " 0SV/fS_h_-NX[(W	g&{S{|WTe&{S{|We@b	gvd\OpeꁨRlbc:Ne&{S{|W0  Vdk- 2 0 SbN N*N^8^'Yvcktepe@bNh_{Qv~g'YN6 0ُ Np[N^S_A~(u0Re&{Spenc{|WvL]eQ_|~eg/f0N8^͑v0Yg`OT{Nُ*N`O_N1\0RN_
N0RُN]\Ov0  
 
 1 3 .   ċNNbvNxGre  
 
 
 
 u n s i g n e d   i n t   z e r o   =   0 ;   
 
 u n s i g n e d   i n t   c o m p z e r o   =   0 x F F F F ;   
 
 / * 1 ' s   c o m p l e m e n t   o f   z e r o   * /   
 
 
 
 [N N*Ni n t W
N/f1 6 MOvYthV:N
NbvNx/f
Ncknxv0^QYN  
 
 
 
 u n s i g n e d   i n t   c o m p z e r o   =   ~ 0 ;   
 
 
 
 ُ Nwckc2Q^Ջ/f&Ta_YthVW[v͑'`0(Wbv~̑}YvL]eQ_z^XT^8^Qnx0Wf}vlxNv~T[v@\P6qP C :gz^__blxN\O:N N*NelMQvp|`0  
 
 0RNُ*N6k^Ջb[hQW4Y'NlNbO_nn_(W__0Yg>f6q^Ջ
N/f_}YHNُ*NKmՋ1\(Wُ̑~_gN0FOYg>f6q^ՋZP_
NHNb1\TbQNbvRُN/fkvb`NN^8^Oyv^ՋZP_
N0cQُNb^gfYw0R^Ջ^Nvel
N/fT{Hh0
N{YUO`O1\S_/fُ*N1ZPN'T. . .   
 
 
 
 R`QX[RMD y n a m i c   m e m o r y   a l l o c a t i o n 	  
 
 1 4 .   =\{
NP^L]eQ_{:gHN8^L]eQ_|~؏/f	gNXh e a p 	-NR`RMQX[vǏzv0HNL]eQ_|~-NR`RMQX[SSuv/fNHN  
 
 ُ̑bgg^Ջc0RQX[xGrxGr6eƖvSϑvcLeI{I{0ُ*N;N]~(WE S P Bg_-N^l0WǏN;N/f  P . J .   P l a u g e r ,   Nvʑ܏܏Ǐbُ̑c0RvNUOʑ	@b	gVǏ4Yw NNُNBg_'T^ՋۏeQ NyZGPv[hQaɉTbbQُHN N*N\v  
 
 NbvNxGrkvQ/fNHN:NNHN  
 
 
 
 c h a r   * p t r ;   
 
 i f   ( ( p t r   =   ( c h a r   * ) m a l l o c ( 0 ) )   = =   
 
 N U L L )   
 
 e l s e   
 
 p u t s ( " G o t   a   n u l l   p o i n t e r " ) ;   
 
 p u t s ( " G o t   a   v a l i d   p o i n t e r " ) ;   
 
 
 
 ُ/f N*N	gv0 gя(Wbv N*NTN
N~ab0 <P O~NQpem a l l o c _0RN N*NTlvcKNTbMb`0Rُ*N0ُ1\/f
NbvNxNxvQ/f" G o t   a   v a l i d   p o i n t e r " 0b(uُ*Neg _Yُ7hv NwwbՋ/f&T`0R^Ozُ7hZP/fcknx0_0RcknxvT{HhV6q͑FO㉳QvelT`OZPQ[vW,gStf͑N0  
 
 T y p e d e f   
 
 :   
 
 1 5   T y p e d e f   (WC  -NA~(uNXf N*N]~X[(Wvpenc{|WvTINW[0_NSN(uYthVZP{|<OvN0OY` NNNbvOP[  
 
 
 
 # d e f i n e   d P S   s t r u c t   s   *   
 
 t y p e d e f   s t r u c t   s   *   t P S ;   
 
 
 
 N
N$Ny`QvaV/f[INd P S   T  t P S   \O:N N*NcT~gs c0Tyelf}YbTYg	gv݋	:NNHN  
 
 ُ/f N*N^8^_YvNUONT{[ُ*NckS_vSV	/f^S_m`Uv0T{Hh/ft y p e d e f f}Y0`NbvOP[  
 
 
 
 d P S   p 1 , p 2 ;   
 
 t P S   p 3 , p 4 ;   
 
 
 
 ,{ N*NibU\:N  
 
 
 
 s t r u c t   s   *   p 1 ,   p 2 ;   
 
 
 
 .   
 
 
NbvNx[INp 1 :N N*NcT~gvcp 2 :N N*N[Ev~gُ_N
N/f`O`v0,{N*NOP[cknx0W[INNp 3   Tp 4   $N*Nc0  
 
 
 
 ffmvl  
 
 
 
 1 6   .   C  Ta NNNN`v~g, Nbv~g/fTlvTYg/f[ZPNNHN  
 
 
 
 i n t   a   =   5 ,   b   =   7 ,   c ;   
 
 c   =   a + + + b ;   
 
 
 
 ُ*N\ZP:Nُ*NKmv N*N	a_v~>\0
N{`Ov
NvO
NbvOP[/f[hQTNNlv0/fыhVYUOYt[4ls^
Nؚvы\O[E
NONُ*N9hnc gYtSRыhV^S_Yt=\S@b	gTlv(ul0Vdk
NbvNxYtb  
 
 
 
 c   =   a + +   +   b ;   
 
 
 
 Vdk,   ُkNxcLTa   =   6 ,   b   =   7 ,   c   =   1 2 0  
 
 Yg`OwST{HhbsQcknxT{HhZP_}Y0Yg`O
NwST{Hhb_N
Nbُ*NS_\O0bSsُ*Nv g'Y}YY/fُ/f N*NsQNNxQΘ<hNxvS'`NxvSO9e'`v}Yv݋0  
 
 }YNON`Os(W]~ZP[@b	gvKmՋN0ُ1\/fbQvC  KmՋb `@w	a_v_`Q[[^g`ONT7hv_`[[0Yg/f:Nُ/f N*N}YvKmՋHN=\ϑ(u0R`Ov~b]\OvǏz-NS'T0)YwS_NǏ*N N$Nt^b1\
NZPs(Wv]\O_N ~b N*N0  
 
 N i g e l   J o n e s   /f N*N~s(WOO(WM a r y l a n d S_N
N(W4lNe`O(WY*NVvL]eQyv-N~b0RN0  N_ؚtQ6e0RvegONve m a i l 0W@W/f:   N A J o n e s @ c o m p u s e r v e . c o m   0  
 
 R e f e r e n c e s   
 
 " ;   J o n e s ,   N i g e l ,   " I n   P r a i s e   o f   t h e   # e r r o r   d i r e c t i v e , "   E m b e d d e d   S y s t e m s   P r o g r a m m i n g ,   S e p t e m b e r   1 9 9 9 ,   p .   1 1 4 .   
 
 " ;   J o n e s ,   N i g e l ,   "   E f f i c i e n t   C   C o d e   f o r   E i g h t - b i t   M C U s   , "   E m b e d d e d   S y s t e m s   P r o g r a m m i n g ,   N o v e m b e r   1 9 9 8 ,   p .   6 6 
 
 
 
 
 
 C  L]eQ_|~zOp
 
 
 
 C  L]eQ_|~zOpKN N: ̀of{
 
 \O: [[NS      feeg: 2 0 0 5 - 0 8 - 3 0 
 
 egn: y e s k y . c o m         
 
 
NTN N,b__voNzL]eQ_|~z^z(Wyr[vlxNs^S
NR_BlvQz wQY:_vlxNvcd\OR0euGl wQYُ7hvyr(0FO/fR_VNGl  _SǏzv
YBg'`[v^
N/fL]eQ_|~ _Sv N,	b0NKNvkC  - -  Ny" ؚ~vNO~"  Rb:NL]eQ_|~ _Sv gsO	b0{(WL]eQ_|~yvv _SǏz-N N!kS N!kaS0RC  v|YlNC  ~L]eQ_ _S&^egvO)R0
 
 
 
  0 0V1 ~QN,gev@bWNvlxNs^S[E
Nُ_N/f'YYpeL]eQ_|~vlxNs^S0[Sb$NR  
 
 
 
  0 01 	  N(uYthV:N-N_vOSYt!jWW(uNQ~c6ROSvYt
 
 
 
  0 02 	  NpeW[OSYthVD S P 	:N-N_vOSYt!jWW(uN6R0Tpe/ !jOSlbc0
 
 
 
  0 0,gev;NV~N(uYthV:N-N_vOSYt!jWWۏLV:N[fY0Wurm0RwQSOvC  zb]0D S P zR͑psQlwQSOvpeW[OSYt{l;NmSOWvwƋ
N/f,gev͑p0
 
 
 
  0 0@w<wNnfMvL]eQ_|~C zb]|~vOSYt!jWWl	g	byr+RvC P U /f	bNO@bhTwvC P U Gr- - 8 0 1 8 6 k NMOf[`NǏ
0_:gSt0v^[dkGr	g N*NW,gvƋN[vQcNƖkq`08 0 1 8 6 vW[/f1 6 MOSN[@W0RvQX[zz:N1 M B S	g[0W@W!j_0C  ыubvc:N3 2 MOSW[	ؚ1 6 MO:Nk0W@WNO1 6 MO:NkQы Nk gY6 4 K B 0
 
   
 
 V1   |~lxNgg
 
 
 
  0 0OSYt!jWW-NvF L A S H TR A M QNN/fk*NL]eQ_|~v_YYMR(uNX[Pz^TR/fz^ЏLecNSpencvX[>eMOn0|~@b	bvF L A S H TR A M vMO[:N1 6 MONC P U  N0
 
 
 
  0 0[eGrSN:N|~[e~QS_MRvt^0g0eSwQSOe\e0R0ySky	SN[vQ~Ǐ NkesSTC P U cQ-Neb[bfe0RegeTC P U cQ-Ne{|<OR	0
 
 
 
  0 0N V R A M ^f1YS'`R A M 	wQ	gc5u
N"N1Ypencvyr'`SN(uNOX[|~vnOo`lYQ~OSSpeI{0(W|~c5ub͑e/TRTN6qSNSHQMRvnOo`0vQMO[:N8 MOkC P U W[\0ezyra	b N*NNC P U W[
N NvX[PGr:NTe-N NvR agN0
 
 
 
  0 0U A R T R[bC P U v^Lpenc ONR S - 2 3 2 2NLpenc Ovlbc[SN(Wc6e0R[ 1 ~ M A X _ B U F F E R ] W[TTC P U cQ-NeM A X _ B U F F E R :NU A R T GrX[Pc6e0RW[v g'YQ:S0
 
 
 
  0 0.vc6RhVT>f:yc6RhVR[b|~N:gLubvc6R0
 
 
 
  0 0N
NcOv/f N*N[YvL]eQ_|~lxNgg[Ev|~SS+Tf\vY0KN@bN	b N*N[Yv|~/f:NNTefhQbvL]eQ_|~C  zb]veebb@b	gYOb:NTevRgvh0
 
 
 
  0 0L]eQ_|~ o}YvoN _SsXv/ec1uNL]eQ_|~vvh:gDnSP
NS(WvQ
N^z^'Y0
YBgv _SsXVvQ _SsXTvhЏLsXvNRy0VdkL]eQ_^(uoNv _Se_ N,/f(W[;N:g( H o s t ) 
N^z _SsXۏL^(uz^xTNSы6qT[;N:gTvh:g( T a r g e t ) ^zޏc\^(uz^N}0Rvh:g
NۏLNSՋ~ǏՋTOS gT\^(uz^VS0Rvh:g-N[EЏL0  
 
 
 
  0 0C A D - U L /f(uN  x 8 6 YthVvL]eQ_^(uoN _SsX[ЏL(WW i n d o w s d\O|~KN
NSubx 8 6 YthVvvhNxv^ǏP C :gvC O M SR S - 2 3 2 2NS	bN*YQSN}0Rvh:g
NЏLYV2 0vQ{YuNvh:gF L A S H X[PhV-Nvm o n i t o r z^SNvc[;N:gW i n d o w s Ջs^S
Nv(u7bՋcNSC P U [X[hVv<PSvh:gX[Pzz0I / O zzvQ[0
 
   
 
 V2   NS _SsX
 
 
 
  0 0T~z\NoNgg0QX[d\O0O\U^d\O0.vd\O0'`OSI{YebC  L]eQ_|~vzb]0oNgg/f N*N[i_NwQSOlxNvT|
N'YQX[d\O;NmS|~-NvF L A S H 0R A M TN V R A M GrO\U^d\ORmS>f:yc6RhVT[e.vd\O;NmS.vc6RhV'`OSR~Q NNwQSOvQ\z^e0zzmvb]0
 
 
 
  0 0(WbNvOpe-N\~Ǐ2 5 *NsQSُNsQS;NR:N$N{| N{|/fb]W	g_:_v(u'` N{|R/f8^ƋW(Wt
N	gNaIN0  
 
 C  L]eQ_|~zOpKNN: oNgg{
 
 \O: [[NS      feeg: 2 0 0 5 - 0 7 - 2 2 
 
  0 0!jWWRR
 
 
 
  0 0!jWWRRv" R" /fĉRva`ac`7hTtv\ N*N_'YvoNRR:N N|RRrzvRT\O[b|~v Bl0C  \O:N Ny~gSvz^ (W!jWWvRR
N;NOncRORۏLRR(WbT[a-Nb:N N*N[r[_G0RN> v[	C  !jWWSz^ t㉂YNi_
 
 
 
  0 01 	  !jWWsS/f N*N. c eNT N*N. h eNv~T4YeN( . h ) -N/f[N!jWWcSvXf
 
 
 
  0 02 	  g!jWWcO~vQ[!jWW(uvYQpeSpenc (W. h -NeN-NQNe x t e r n sQ.W[Xf
 
 
 
  0 03 	  !jWWQvQpeThQ@\Sϑ (W. c eN _4YQNs t a t i c sQ.W[Xf
 
 
 
  0 04 	  8l܏
N(W. h eN-N[INSϑ[INSϑTXfSϑv:S+R(WN[INONuQX[RMvd\O/fGl6kvi_XfRS/fJTɋS+TXfv!jWW(Wޏc6kNvQ[!jWW[~bYQpeTSϑ0Y
 
 / * m o d u l e 1 . h * / 
 
 i n t   a   =   5 ;   / *   (W!jWW1 v. h eN-N[INi n t   a   * / 
 
 
 
 / * m o d u l e 1   . c * / 
 
 # i n c l u d e   " m o d u l e 1 . h "   / *   (W!jWW1 -NS+T!jWW1 v. h eN  * / 
 
 
 
 / * m o d u l e 2   . c * / 
 
 # i n c l u d e   " m o d u l e 1 . h "   / *   (W!jWW2 -NS+T!jWW1 v. h eN  * / 
 
 
 
 / * m o d u l e 3   . c * / 
 
 # i n c l u d e   " m o d u l e 1 . h "   / *   (W!jWW3 -NS+T!jWW1 v. h eN  * / 
 
 
 
  0 0N
Nz^v~g/f(W!jWW1 02 03 -N[INNteWSϑa a (W
NTv!jWW-N[^
NTv0W@WUSCQُ*NNLu
NNeg
N ُ7hvz^0cknxvZPl/f
 
 / * m o d u l e 1 . h * / 
 
 e x t e r n   i n t   a ;   / *   (W!jWW1 v. h eN-NXfi n t   a   * / 
 
 
 
 / * m o d u l e 1   . c * / 
 
 # i n c l u d e   " m o d u l e 1 . h "   / *   (W!jWW1 -NS+T!jWW1 v. h eN  * / 
 
 i n t   a   =   5 ;   / *   (W!jWW1 v. c eN-N[INi n t   a   * / 
 
 
 
 / * m o d u l e 2   . c * / 
 
 # i n c l u d e   " m o d u l e 1 . h "   / *   (W!jWW2 -NS+T!jWW1 v. h eN  * / 
 
 
 
 / * m o d u l e 3   . c * / 
 
 # i n c l u d e   " m o d u l e 1 . h "   / *   (W!jWW3 -NS+T!jWW1 v. h eN  * / 
 
 
 
  0 0ُ7hYg!jWW1 02 03 d\Oa v݋[^v/fT NGrQX[USCQ0
 
 
 
  0 0 N*NL]eQ_|~8^Sb$N{|!jWW
 
 
 
  0 01 	lxNqR!jWW Nyyr[lxN[^ N*N!jWW
 
 
 
  0 02 	oNR!jWWvQ!jWWvRR^nNOvPT0ؚQZvBl0
 
 
 
  0 0YNR؏/fUSNR
 
 
 
  0 0@b" USNR|~" /fc|~
N/ecYNRv^Sd\O[2NL0WgbL N*NNR0YNR|~RSN[v^L_
NS2NL	0W" Te" gbLY*NNR0
 
 
 
  0 0YNRvv^SgbL8^OVN N*NYNRd\O|~O S 	YNRO S v8h_/f|~^hV[O(uNRc6RWWT C B 	eg{tNR^R0T C B SbNRvS_MRr`0OHQ~0I{_vNNbDn0NRz^xvwY0W@W0RYXhcI{Oo`0^hV(WNRo;me(u0RُNOo`0dkYT C B ؏(uegX[>eNRv" 
NNe" c o n t e x t ) 0NRv
NNe1\/fS_ N*NgbL-NvNR\Pbke@bOX[v@b	gOo`08^
NNe1\/f{:gS_MRvr`_NsST*N[X[hVvQ[0S_SuNRRbceS_MRЏLvNRv
NNeX[eQT C B v^\gbLvNRv
NNeN[vT C B -NSQ>eeQT*N[X[hV-N0
 
 
 
  0 0L]eQ_YNRO S vxQWOP[	gV x w o r k s 0u c L i n u x I{0L]eQ_O S v^^e
NSSv^y[WKNirbNSN(u
N0R1 0 0 0 LNx[s N*N[8 0 1 8 6 YthVvR g{USvO S Q8h\OckQYۏLdky]\O^g\__!.s~'Y[0
 
 
 
  0 0vzz	bYNR؏/fUSNRe_OVNoNvSO|/f&T^'Y0OY~'YYpeKb:gz^/fYNRvFO_N	g NN\upvOSh/fUSNRvl	gd\O|~[Nv;Nz^nAm(uT*NoN!jWWvYtz^!jbYNRsX0
 
 USNRz^xQWgg
 
 
 
  0 01 	NC P U 
YMOevc[0W@W _YgbL
 
 
 
  0 02 	lGlNxs t a r t u p YgbL
 
 
 
  0 03 	l(u7b;Nz^m a i n gbL(Wm a i n -N[b
 
 
 
  0 0a . RՋSTlxNY  
 
 
 
  0 0b . RYSToN!jWW
 
 
 
  0 0c . ۏeQ{k_seP_s	(uT!jWWvYtQpe
 
 
 
  0 0(u7b;Nz^TT!jWWvYtQpeNC  [b0(u7b;Nz^ gTۏeQN N*N{k_svQ	eHh/f
 
 w h i l e ( 1 ) 
 
 { 
 
 } 
 
 
 
  0 0	gvz^XTُ7hQ
 
 f o r ( ; ; ) 
 
 { 
 
 } 
 
 
 
  0 0ُ*Nll	gnxRhNxv+TINbNNf o r ( ; ; ) w
NQNHNS	g_f}vf o r ( ; ; ) (WC  -NasT@weagN_sMbf}vvQa0
 
 
 
  0 0Nb/fQ*N" W
T" v{k_s
 
 
 
  0 01 	d\O|~/f{k_s
 
 
 
  0 02 	W I N 3 2 z^/f{k_s
 
 
 
  0 03 	L]eQ_|~oN/f{k_s
 
 
 
  0 04 	Y~zz^v~zYtQpe/f{k_s0
 
 
 
  0 0`OSOs'YX" QN
N/f~[v2 03 04 SN
N/f{k_s" 0Y e s y o u   a r e   r i g h t FO/f`O_
N0RTcX0[E
Nُ/f N*Nl	g*Y'YaINv[r҉\V:Nُ*NNLuNeg
N  N*NYt[Q*Nmo`1\U@wO S @g{k[vW I N 3 2   z^
N  N*NR _YR U N 1\LNevL]eQ_|~
N 
TvQY/TR N*NZP NpN1\r^c]v~z0	gePǏN%N(6R v
N/fO)R/fp0T
NNB\vT C P / I P OSh%N(vI S O / O S I NB\OSh'YLvQSb:NN[
NvhQ
 
 
 
  0 0~8^	gQS
 
 p r i n t f ( " % d , % d " , + + i , i + + ) ;   / *   Q/fNHN* / 
 
 c   =   a + + + b ;   / *   c = ?   * / 
 
 
 
  0 0I{{|<O0b[ُNbNSSQ1uwvahaNLu
N؏	g_Y	gaINvN`I{@wbNSmSDdeQvߘir0
 
 
 
  0 0[E
NL]eQ_|~ЏL0RNLu+ge0
 
 
 
  0 0-Ne
gRz^
 
 
 
  0 0-Ne/fL]eQ_|~-N͑v~bRFO/f(WhQC -N
NS+T-Ne0Yы _SFU(WhQC 
NXRN[-Nev/eccOevsQ.W[(uNh:y-Ne
gRz^  ( I S R ) {|<ON_ _ i n t e r r u p t 0# p r o g r a m   i n t e r r u p t I{0S_ N*NQpe[IN:NI S R vePыhVOꁨR:NQpeXR-Ne
gRz^@b v-Nes:WeQhTQhNx0
 
 
 
  0 0-Ne
gRz^ nYNBl
 
 
 
  0 0( 1 ) 
NԏV<P
 
 
 
  0 0( 2 ) 
NTI S R  OSpe
 
 
 
  0 0( 3 )   I S R ^=\Svw\|`
 
 
 
  0 0( 4 )   p r i n t f ( c h a r   *   l p F o r m a t S t r i n g , & ) QpeO&^eg͑eQT'`
N(WI S R -NǑ(u0
 
 
 
  0 0(Wgyvv _S-NbNN N*NR(W-Ne
gRz^-NS/f\-Ne{|WmReQR-N(W;Nz^v{k_s-N
Nekbc-NeR/f&T	g-Ne	gRSQR-Nv,{ N*N-Ne{|WۏLv^Yt0
 
 / *   X[>e-NevR  * / 
 
 t y p e d e f   s t r u c t   t a g I n t Q u e u e 
 
 { 
 
  0i n t   i n t T y p e ;   / *   -Ne{|W  * / 
 
  0s t r u c t   t a g I n t Q u e u e   * n e x t ; 
 
 } I n t Q u e u e ; 
 
 
 
 I n t Q u e u e   l p I n t Q u e u e H e a d ; 
 
 
 
 _ _ i n t e r r u p t   I S R e x a m p l e   ( )   
 
 { 
 
  0i n t   i n t T y p e ; 
 
  0i n t T y p e   =   G e t S y s t e m T y p e ( ) ; 
 
  0Q u e u e A d d T a i l ( l p I n t Q u e u e H e a d ,   i n t T y p e ) / *   (WR>\ReQev-Ne  * / 
 
 } 
 
 
 
  0 0(W;Nz^_s-N$Re/f&T	g-Ne  
 
 W h i l e ( 1 ) 
 
 { 
 
  0I f (   ! I s I n t Q u e u e E m p t y ( )   ) 
 
  0{ 
 
  0 0i n t T y p e   =   G e t F i r s t I n t ( ) ; 
 
  0 0s w i t c h ( i n t T y p e )   / *   /f
N/f_aW I N 3 2 z^vmo`㉐gQpe?   * / 
 
  0 0{ 
 
  0 0 0/ *   [bNv-Ne{|W㉐g_{|<ONmo`qR  * / 
 
  0 0 0c a s e   x x x :   / *   bNyvQ:N" -NeqR" 'T  * / 
 
  0 0 0 0& 
 
  0 0 0 0b r e a k ; 
 
  0 0 0c a s e   x x x : 
 
  0 0 0 0& 
 
  0 0 0 0b r e a k ; 
 
  0 0 0& 
 
  0 0} 
 
  0} 
 
 } 
 
 
 
  0 0	c
Nelv-Ne
gRz^_\[Ev]\ON1u;Nz^gbLN0
 
 lxNqR!jWW
 
 
 
  0 0 N*NlxNqR!jWW8^^SbYNQpe
 
 
 
  0 01 	-Ne
gRz^I S R 
 
 
 
  0 02 	lxNRYS
 
 
 
  0 0a . O9e[X[hVnlxNSpeYU A R T ^nvQlyrsA D / D A Y^nvQǑ7hsI{	
 
 
 
  0 0b . \-Ne
gRz^eQS0W@WQeQ-NeTϑh
 
 / *   n-NeTϑh  * / 
 
 m _ m y P t r   =   m a k e _ f a r _ p o i n t e r ( 0 l ) ;   / *   ԏVv o i d   f a r Wcv o i d   f a r   *   * /   
 
 m _ m y P t r   + =   I T Y P E _ U A R T ;   / *   I T Y P E _ U A R T   u a r t -Ne
gRz^  * / 
 
 / *   v[N-NeTϑh0W@WvOPy  * / 
 
 * m _ m y P t r   =   & U A R T   _ I s r ;   / *   U A R T   _ I s r U A R T v-Ne
gRz^  * / 
 
 
 
  0 03 	nC P U [lxNvc6R~
 
 
 
  0 0a . Ygc6R~S\OP I O SzI / O 	Tc6ROS(uRnC P U Q[^[X[hVOvQ\O:Nc6ROS
 
 
 
  0 0b . nC P U Q萄v[勾Yv-NeO\=MOn-Nee_5us^S؏/fS	0
 
 
 
  0 04 	cO N|R[勾Yvd\OcSQpe0OY[NL C D vQqR!jWW^cO~6RP }0;u~0~6Rw50>f:yW[&{p5I{Qpe[N[evQqR!jWWR cOSe0neI{Qpe0
 
 
 
  0 0C vbT[aS
 
 
 
  0 0(WbT[av ̑bQsN{|vi_0{|/f[yr[pencvyr[d\OvƖTSO0{|S+TN$N*NtupencTd\O0C  -Nvs t r u c t NN/fpencvƖTbNSN)R(uQpec\s t r u c t !jb:N N*NS+TpencTd\Ov" {|" 0NbvC z^!jbN N*N g{USv" {|" 
 
 # i f n d e f   C _ C l a s s 
 
 # d e f i n e   C _ C l a s s   s t r u c t 
 
 # e n d i f 
 
 C _ C l a s s   A   
 
 { 
 
  0C _ C l a s s   A   * A _ t h i s ;   / *   t h i s c  * / 
 
  0v o i d   ( * F o o ) ( C _ C l a s s   A   * A _ t h i s ) ;   / *   L:NQpec  * / 
 
  0i n t   a ;   / *   penc  * / 
 
  0i n t   b ; 
 
 } ; 
 
 
 
  0 0bNSN)R(uC  !jbQbT[av	N*Nyr'`\ň0~bTY`FO/ffYvePbNS/f \pencNL:N\ňN㉳QoN~gmqNv0C !jbbT[a``vvv
N(WN!jbL:N,g(WN㉳QgN`QNO(uC  zez^teSOFhg~gRce0pencTQpe1v0bN(WT~zOw0Rُ7hvOP[0  
 
 
 
  0 0;`~
 
 
 
  0 0,g{N~NL]eQ_|~zoNggebvwƋ;NSb!jWWRR0YNR؏/fUSNR	S0USNRz^xQWgg0-Ne
gRz^0lxNqR!jWWI{N[
N~QN N*NL]eQ_|~oN@bS+Tv;NCQ }0
 
 
 
  0 0OOoN~g/foNvupB~gmqNvz^bvSaՋ0KmՋ0~b0GS~g^V0  
 
 \RRR  2 0 0 5 - 0 9 - 2 1   1 7 : 2 9   
 
 C  L]eQ_|~zOpKN	N: QX[d\O
 
 \O: [[NS      feeg: 2 0 0 5 - 0 7 - 2 2 
 
 pencc
 
 
 
  0 0(WL]eQ_|~vz-N8^8^Bl(Wyr[vQX[USCQQQ[Gl	g[^vM O V cNdC / C + + NYvvQ[z W,gl	gvc~[0W@WvR0(WL]eQ_|~v[EՋ-NYPRC  c@bwQ	gv[~[0W@WUSCQQ[vQR0Ncvcd\OQX[YSu(WYNQy`Q
 
 
 
  0 0( 1 )   gI / O Gr[MO(WC P U vX[Pzz^I / O zzN[X[hV[^Ngyr[0W@W
 
 
 
  0 0( 2 )   $N*NC P U KNNSzSR A M OC P U  (WSzSR A M vyr[USCQy:Nm a i l   b o x 	fNQQ[N(W[eC P U Nu-Ne
 
 
 
  0 0( 3 )   S(WR O M bF L A S H vyr[USCQ@bpU_vIlW[TeW[!j0
 
 
 
  0 0lY  
 
 u n s i g n e d   c h a r   * p   =   ( u n s i g n e d   c h a r   * ) 0 x F 0 0 0 F F 0 0 ; 
 
 * p = 1 1 ; 
 
 
 
  0 0N
Nz^vaIN:N(W~[0W@W0 x F 0 0 0 0 + 0 x F F 0 0 ( 8 0 1 8 6 O(u1 6 MOk0W@WT1 6 MOOPy0W@W) QeQ1 1 0
 
 
 
  0 0(WO(u~[0W@WcelacꁞXQd\Ov~gSQNccTvpenc{|+R0
NO-Np + + Tv~g/fp =   0 x F 0 0 0 F F 0 1 p cTi n t sS
 
 i n t   * p   =   ( i n t   * ) 0 x F 0 0 0 F F 0 0 ; 
 
 
 
  0 0p + + ( b+ + p ) v~gI{TNp   =   p + s i z e o f ( i n t ) p - ( b- p ) v~g/fp   =   p - s i z e o f ( i n t ) 0
 
 
 
  0 0TtgbL
 
 l o n g   i n t   * p   =   ( l o n g   i n t   * ) 0 x F 0 0 0 F F 0 0 ; 
 
 
 
  0 0Rp + + ( b+ + p ) v~gI{TNp   =   p + s i z e o f ( l o n g   i n t )   p - ( b- p ) v~g/fp   =   p - s i z e o f ( l o n g   i n t ) 0
 
 
 
  0 0OOC P U NW[:NUSMO@WC  cNcTvpenc{|W^\OꁞXTQ0tُ Np[NNcvcd\OQX[/fvS_͑v0
 
 
 
  0 0Qpec
 
 
 
  0 0HQtNN	N*N
 
 
 
  0 01 	C  -NQpe
Tvc[^NQpeubvcNNx(WQX[-Nv0W@WVdkQpe
TSNvcK~cTQpevc
 
 
 
  0 02 	(uQpe[E
NI{TN" lcNSpe OYtVR_MOneQh" ,g(
N g8h_vd\O/f\QpeubvvhNxv0W@WK~C P U vP C [X[hV
 
 
 
  0 03 	V:NQpe(uv,g(/fl0Rg N*N0W@WUSCQvc o d e SgbL@bNSN" (u"  N*N9h,g1\
NX[(WvQpe[SOUf_Nw  
 
 
 
  0 0bQ`OSN_vNUO N,g'Yf[
0_W{:gSt0YePgfN-N0R1 8 6   C P U /TRTl~[0W@W0 x F F F F 0 [^C  c/f0 x F 0 0 0 F F F 0 0 x F 0 0 0 :Nk0W@W0 x F F F 0 :NkQOPy	gbLwNbvNx
 
 t y p e d e f   v o i d   ( * l p F u n c t i o n )   (   ) ;   / *   [IN N*NeSpe0eԏV{|Wv  * / 
 
 / *   Qpec{|W  * / 
 
 l p F u n c t i o n   l p R e s e t   =   ( l p F u n c t i o n ) 0 x F 0 0 0 F F F 0 ;   / *   [IN N*NQpeccT* / 
 
 / *   C P U /TRT@bgbL,{ NagcNvMOn  * / 
 
 l p R e s e t ( ) ;   / *   (uQpe  * / 
 
 
 
  0 0(WN
Nvz^-NbN9h,gl	gw0RNUO N*NQpe[SOFO/fbNtSgbLNُ7hvQpe(ul p R e s e t ( ) [[E
Nw0RN" o͑/T" v\O(ul0RC P U /TRT,{ NaggbLvcNvMOn0
 
 
 
  0 0OOQpee[/UcNƖT3`OSN(u N*Nl	gQpeSOvQpe,g(
NS/fbc N*N0W@W _YgbLcN
 
 
 
  0 0pe~v s . R`3u
 
 
 
  0 0(WL]eQ_|~-NR`QX[3uX[(Wk N,|~zef%N<hvBlُ/fV:NL]eQ_|~vQX[zz__/fASR	gPv
N~avQX[l2O__[|~v)]n0
 
 
 
  0 0@bN N[O`Ovm a l l o c Tf r e e b[QsYg`OQQُ7hv Nkz^
 
 c h a r   *   f u n c t i o n ( v o i d ) 
 
 { 
 
  0c h a r   * p ; 
 
  0p   =   ( c h a r   * ) m a l l o c ( & ) ; 
 
  0i f ( p = = N U L L ) 
 
  0 0& ; 
 
  0 0&   / *    N|R[p vd\O  * / 
 
  0r e t u r n   p ;   
 
 } 
 
 
 
  0 0(WgY(uf u n c t i o n ( ) (u[f u n c t i o n -NR`3uvQX[T\vQf r e e YN
 
 c h a r   * q   =   f u n c t i o n ( ) ; 
 
 & 
 
 f r e e ( q ) ; 
 
 
 
  0 0
NNxf>f/f
NTtvV:NݏSNm a l l o c Tf r e e b[QsvSRsS" 3u1\1uʑ>e" SR0
Nnُ*NSRO[Nxv&T^X'YV:N(u7b(W(uf u n c t i o n Qpee wSvQQ~
 
 
 
  0 0cknxvZPl/f(W(uY3uQX[v^ OeQf u n c t i o n QpeYN
 
 c h a r   * p = m a l l o c ( & ) ; 
 
 i f ( p = = N U L L ) 
 
 & ; 
 
 f u n c t i o n ( p ) ; 
 
 & 
 
 f r e e ( p ) ; 
 
 p = N U L L ; 
 
 
 
  0 0Qpef u n c t i o n Rc6eSpep YN
 
 v o i d   f u n c t i o n ( c h a r   * p ) 
 
 { 
 
  0&   / *    N|R[p vd\O  * / 
 
 } 
 
 
 
  0 0W,g
NR`3uQX[e_SN(u'Yvpe~fbc0[NzeKb{cP`O=\ϑǑ(upe~L]eQ_|~SNNZS'Yv_c6eUtuel" wm~" 0kzN g({ve_~^yRvV܀Ǐ:gzfjftS?elpSi}TSvhg^0
 
 
 
  0 0~QSR
 
 
 
  0 01 	=\Sv	(upe~pe~
NLuwtǏ Nek1\/f,pe~ǏLuP1\IQc0WbhQN N*NmqNvL]eQ_|~	
 
 
 
  0 02 	YgO(uR`3uR3uT N[$Re/f&T3ubRNv^Nm a l l o c Tf r e e ^b[Qs
 
 sQ.W[c o n s t 
 
 
 
  0 0c o n s t asT@w" S" 0:S+RYNNxvR^8^͑_N/fuSYg`O؏
NwS[Nv:S+RN]~(Wz^Luxd,rnSbYt^Sُ/f N*N`T
 
 c o n s t   i n t   a ; 
 
 i n t   c o n s t   a ; 
 
 c o n s t   i n t   * a ; 
 
 i n t   *   c o n s t   a ; 
 
 i n t   c o n s t   *   a   c o n s t ; 
 
 
 
  0 01 	sQ.W[c o n s t v\O(u/f:N~`ONxvN O^8^	g(uvOo`0OY(WQpevb_SMRmRc o n s t sQ.W[asT@wُ*NSpe(WQpeSOQ
NOO9e^\N" eQSpe" 0(W	gY*Nb_SvePQpev(uSNQPSpeMR/f&T	gc o n s t sQ.W[npfv+RTN/feQSpeTN/fSvQSpe0
 
 
 
  0 02 	Tt0WO(usQ.W[c o n s t SNOыhV_6q0WObN
N^g9eSvSpe2bkvQeavNxO9eُ7hSNQ\b u g vQs0
 
 
 
  0 0c o n s t (WC + +  -NRS+TNf0N[v+TIN(WC  -NNasT@w" SvnfSϑ" SNyvQ:N" 
N9eSvSϑ" ُ*Nl<ONN_bSFOtS gQnxvhNC  -Nc o n s t v,g(	(Wы6k v8^peN6qSN# d e f i n e [[INEe(WC  -NYNz^/f^lv
 
 c o n s t   i n t   S I Z E   =   1 0 ; 
 
 c h a r   a [ S I Z E ] ;   / *   ^lы6k
N(u0RSϑ  * / 
 
 
 
  0 0sQ.W[v o l a t i l e 
 
 
 
  0 0C  ыhVO[(u7bfNQvNxۏLOSlYYNNx
 
 i n t   a , b , c ; 
 
 a   =   i n W o r d ( 0 x 1 0 0 ) ;   / * SI / O zz0 x 1 0 0 zSvQ[X[eQa Sϑ* / 
 
 b   =   a ; 
 
 a   =   i n W o r d   ( 0 x 1 0 0 ) ;   / * Q!kSI / O zz0 x 1 0 0 zSvQ[X[eQa Sϑ* / 
 
 c   =   a ; 
 
 
 
  0 0_SыhVOS:N
 
 i n t   a , b , c ; 
 
 a   =   i n W o r d ( 0 x 1 0 0 ) ;   / * SI / O zz0 x 1 0 0 zSvQ[X[eQa Sϑ* / 
 
 b   =   a ; 
 
 c   =   a ; 
 
 
 
  0 0FO/fُ7hvOS~gS[YgI / O zz0 x 1 0 0 zSvQ[(WgbL,{ N!kd\OTvQ[z^QeQe<PRvQ[,{2 !kd\OQvQ[N,{ N!k
NTb Tc v<P^
NT0(WSϑa v[INMRR
Nv o l a t i l e sQ.W[SN2bkыhVv{|<OOScknxvZPl/f
 
 v o l a t i l e   i n t   a 
 
 
 
  0 0v o l a t i l e SϑS(uNYNQy`Q
 
 
 
  0 0( 1 )   v^LYvlxN[X[hVYr`[X[hVO-NvNx^\Ndk{|	
 
 
 
  0 0( 2 )    N*N-Ne
gRP[z^-NO0Rv^ꁨRSϑ( _N1\/fhQ@\Sϑ) 
 
 
 
  0 0( 3 )   Y~z^(u-NQ*NNRqQNvSϑ0
 
 
 
  0 0C P U W[NX[PhVMO[
N NYt
 
 
 
  0 0(Ẁof{-Nc0R,geyra	bN N*NNC P U W[
N NvX[PGr1\/f:NNۏL,gv㉳QC P U W[NX[PhVMO[
N Nv`Q08 0 1 8 6 vW[:N1 6 N V R A M vMO[:N8 (Wُy`QNbN :NN V R A M cOQW[0W[vcSYN  
 
 t y p e d e f   u n s i g n e d   c h a r   B Y T E ; 
 
 t y p e d e f   u n s i g n e d   i n t   W O R D ;   
 
 / *   QpeRN V R A M -NW[  
 
 *   Spew O f f s e t SMOnv[N V R A M W0W@WvOPy
 
 *   ԏVS0RvW[<P
 
 * / 
 
 e x t e r n   B Y T E   R e a d B y t e N V R A M ( W O R D   w O f f s e t ) 
 
 { 
 
  0L P B Y T E   l p A d d r   =   ( B Y T E * ) ( N V R A M   +   w O f f s e t   *   2 ) ;   / *   :NNHNOPy 2 ?   * / 
 
 
 
  0r e t u r n   * l p A d d r ; 
 
 } 
 
 
 
 / *   QpeRN V R A M -NW[
 
 *   Spew O f f s e t SMOnv[N V R A M W0W@WvOPy
 
 *   ԏVS0RvW[
 
 * / 
 
 e x t e r n   W O R D   R e a d W o r d N V R A M ( W O R D   w O f f s e t ) 
 
 { 
 
  0W O R D   w T m p   =   0 ; 
 
  0L P B Y T E   l p A d d r ; 
 
  0/ *   SؚMOW[  * / 
 
  0l p A d d r   =   ( B Y T E * ) ( N V R A M   +   w O f f s e t   *   2 ) ;   / *   :NNHNOPy 2 ?   * /   
 
  0w T m p   + =   ( * l p A d d r ) * 2 5 6 ; 
 
  0/ *   SNOMOW[  * / 
 
  0l p A d d r   =   ( B Y T E * ) ( N V R A M   +   ( w O f f s e t   + 1 )   *   2 ) ;   / *   :NNHNOPy 2 ?   * / 
 
  0w T m p   + =   * l p A d d r ; 
 
  0r e t u r n   w T m p ; 
 
 } 
 
 
 
 / *   QpeRTN V R A M -NQ N*NW[  
 
 * Spew O f f s e t QeQMOnv[N V R A M W0W@WvOPy
 
 *   b y D a t a 2kQeQvW[
 
 * / 
 
 e x t e r n   v o i d   W r i t e B y t e N V R A M ( W O R D   w O f f s e t ,   B Y T E   b y D a t a ) 
 
 { 
 
  0& 
 
 } 
 
 
 
 / *   QpeRTN V R A M -NQ N*NW[  * / 
 
 * Spew O f f s e t QeQMOnv[N V R A M W0W@WvOPy
 
 *   w D a t a 2kQeQvW[
 
 * / 
 
 e x t e r n   v o i d   W r i t e W o r d N V R A M ( W O R D   w O f f s e t ,   W O R D   w D a t a ) 
 
 { 
 
  0& 
 
 } 
 
 
 
  0 0P[!fW h y OPyXNN2 ? 
 
 
 
  0 0P[fwV1 1 6 MO8 0 1 8 6 N8 MON V R A M KNNޏSN0W@W~A 1 [vQA 0 , C P U ,gvA 0 NN V R A M 
Nޏc0VdkN V R A M v0W@WS/fvPpe0W@WEek!kN0 x 1 0 :NUSMOMRۏ
 
   
 
 V1   C P U NN V R A M 0W@W~ޏc
 
 
 
  0 0P[!QS o   w h y   8 0 1 8 6 v0W@W~A 0 
NNN V R A M vA 0 ޏc
 
 
 
  0 0P[fw
0I T 0KN
0_:gSt{0̑bNsQN{:g~bv#WNKNS0
 
 
 
  0 0;`~
 
 
 
  0 0,g{;NNL]eQ_|~C z-NQX[d\OvvsQb]0ccv^meQtsQNpencc0Qpec0R`3uQX[0c o n s t Sv o l a t i l e sQ.W[I{vvsQwƋ/f N*NOyvC  z^^vW,gBl0S_bN]~brVccN
Nb]TbN1\]~f[ONC  v9 9 % V:NC   g|NSvQmv(WQX[d\O-NSOs0
 
 
 
  0 0bNKN@bN(WL]eQ_|~-NO(uC  ۏLz^9 9 % /fV:NvQ:_'YvQX[d\OR
 
 
 
  0 0Yg`O1rz`O1rC  
 
 
 
  0 0Yg`O1rC  `O1rc
 
 
 
  0 0Yg`O1rc`O1rcvc  
 
 C  L]eQ_|~zOpKNV: O\U^d\O
 
 \O: [[NS      feeg: 2 0 0 5 - 0 7 - 2 2 
 
 IlW[Yt
 
 
 
  0 0s(W㉳Qv/fL]eQ_|~-N~8^O(uvv^^/f[tevIlW[^__S/f cOpeϑ	gPvIlW[O_v>f:yR0OY N*N_lpvL C D 
Nl	g_cO>f:y" 5uP[N" vR N*NcOIlW[>f:yRvzzvL C D 
N
N >f:y Nag" wmo`" Ydk{|0FO/f NKb:g0\upR8^ Sb[tevIlW[^0
 
 
 
  0 0YgSbvIlW[^[teHN1uQx{QIlW[W[!j(W^-NvOPy/fASR{USvIlW[^/f	cgq:SMOvz^cRvMR N*NW[:NIlW[v:SST N*NW[:NW[vMOS0k N*N:SU_9 4 *NIlW[MOSR:NW[(W:S-NvMOn0VdkIlW[(WIlW[^-NvwQSOMOn{lQ_:N9 4 * ( :SS- 1 ) + MOS- 1 0Q1 /fV:Npe~/fN0 :N _Y:SSMOS/fN1 :N _Yv0S XN
N N*NIlW[W[!j`S(uvW[pesSSsS( 9 4 * ( :SS- 1 ) + MOS- 1 ) *  N*NIlW[W[!j`S(uW[peN1 6 * 1 6 p5W[^:NO{lQ_R:N( 9 4 * ( :SS- 1 ) + ( MOS- 1 ) ) * 3 2 0IlW[^-NNMOnwv3 2 W[Oo`U_NW[vW[!jOo`0
 
 
 
  0 0[NS+T[teIlW[^v|~ bNSNN
NĉR{W[!jvMOn0FO/fYgNN/fcO\ϑIlW[bTlYQASQ~v*N g}YvZPl/f
 
 
 
  0 0[IN[
 
 #   d e f i n e   E X _ F O N T _ C H A R ( v a l u e )   
 
 #   d e f i n e   E X _ F O N T _ U N I C O D E _ V A L ( v a l u e )   ( v a l u e ) , 
 
 #   d e f i n e   E X _ F O N T _ A N S I _ V A L ( v a l u e )   ( v a l u e ) , 
 
 
 
  0 0[IN~gSO
 
 t y p e d e f   s t r u c t   _ w i d e _ u n i c o d e _ f o n t 1 6 x 1 6   
 
 { 
 
  0W O R D   v a l u e ;   / *   Qx  * / 
 
  0B Y T E   d a t a [ 3 2 ] ;   / *   W[!jp5  * / 
 
 } U n i c o d e ; 
 
 # d e f i n e   C H I N E S E _ C H A R _ N U M   &   / *   IlW[peϑ  * / 
 
 
 
  0 0W[!jvX[P(upe~
 
 U n i c o d e   c h i n e s e [ C H I N E S E _ C H A R _ N U M ]   = 
 
 { 
 
 { 
 
 E X _ F O N T _ C H A R ( " N" ) 
 
 E X _ F O N T _ U N I C O D E _ V A L ( 0 x 4 e 1 a ) 
 
 { 0 x 0 4 ,   0 x 4 0 ,   0 x 0 4 ,   0 x 4 0 ,   0 x 0 4 ,   0 x 4 0 ,   0 x 0 4 ,   0 x 4 4 ,   0 x 4 4 ,   0 x 4 6 ,   0 x 2 4 ,   0 x 4 c ,   0 x 2 4 ,   0 x 4 8 ,   0 x 1 4 ,   0 x 5 0 ,   0 x 1 c ,   0 x 5 0 ,   0 x 1 4 ,   0 x 6 0 ,   0 x 0 4 ,   0 x 4 0 ,   0 x 0 4 ,   0 x 4 0 ,   0 x 0 4 ,   0 x 4 4 ,   0 x f f ,   0 x f e ,   0 x 0 0 ,   0 x 0 0 ,   0 x 0 0 ,   0 x 0 0 } 
 
 } , 
 
 { 
 
 E X _ F O N T _ C H A R ( " -N" ) 
 
 E X _ F O N T _ U N I C O D E _ V A L ( 0 x 4 e 2 d ) 
 
 { 0 x 0 1 ,   0 x 0 0 ,   0 x 0 1 ,   0 x 0 0 ,   0 x 2 1 ,   0 x 0 8 ,   0 x 3 f ,   0 x f c ,   0 x 2 1 ,   0 x 0 8 ,   0 x 2 1 ,   0 x 0 8 ,   0 x 2 1 ,   0 x 0 8 ,   0 x 2 1 ,   0 x 0 8 ,   0 x 2 1 ,   0 x 0 8 ,   
 
 0 x 3 f ,   0 x f 8 ,   0 x 2 1 ,   0 x 0 8 ,   0 x 0 1 ,   0 x 0 0 ,   0 x 0 1 ,   0 x 0 0 ,   0 x 0 1 ,   0 x 0 0 ,   0 x 0 1 ,   0 x 0 0 ,   0 x 0 1 ,   0 x 0 0 } 
 
 } , 
 
 { 
 
 E X _ F O N T _ C H A R ( " N" ) 
 
 E X _ F O N T _ U N I C O D E _ V A L ( 0 x 4 e 9 1 ) 
 
 { 0 x 0 0 ,   0 x 0 0 ,   0 x 0 0 ,   0 x 3 0 ,   0 x 3 f ,   0 x f 8 ,   0 x 0 0 ,   0 x 0 0 ,   0 x 0 0 ,   0 x 0 0 ,   0 x 0 0 ,   0 x 0 c ,   0 x f f ,   0 x f e ,   0 x 0 3 ,   0 x 0 0 ,   0 x 0 7 ,   0 x 0 0 ,   
 
 
 
 0 x 0 6 ,   0 x 4 0 ,   0 x 0 c ,   0 x 2 0 ,   0 x 1 8 ,   0 x 1 0 ,   0 x 3 1 ,   0 x f 8 ,   0 x 7 f ,   0 x 0 c ,   0 x 2 0 ,   0 x 0 8 ,   0 x 0 0 ,   0 x 0 0 } 
 
 } , 
 
 { 
 
 E X _ F O N T _ C H A R ( " N" ) 
 
 E X _ F O N T _ U N I C O D E _ V A L ( 0 x 4 e f 6 ) 
 
 { 0 x 1 0 ,   0 x 4 0 ,   0 x 1 a ,   0 x 4 0 ,   0 x 1 3 ,   0 x 4 0 ,   0 x 3 2 ,   0 x 4 0 ,   0 x 2 3 ,   0 x f c ,   0 x 6 4 ,   0 x 4 0 ,   0 x a 4 ,   0 x 4 0 ,   0 x 2 8 ,   0 x 4 0 ,   0 x 2 f ,   0 x f e ,   
 
 
 
 0 x 2 0 ,   0 x 4 0 ,   0 x 2 0 ,   0 x 4 0 ,   0 x 2 0 ,   0 x 4 0 ,   0 x 2 0 ,   0 x 4 0 ,   0 x 2 0 ,   0 x 4 0 ,   0 x 2 0 ,   0 x 4 0 ,   0 x 2 0 ,   0 x 4 0 } 
 
 } 
 
 } 
 
 
 
  0 0>f:yyr[IlW[vePS Npe~-Ng~bQxNBlIlW[QxvTvsSS_W[!j0YgMRbvIlW[(Wpe~-NNQx'Y\z^cRHNSNNNRg~blfؚHevg~b0RIlW[vW[!j0
 
 
 
  0 0ُ/f Ny_	gHev~~\IlW[^vel[SNOz^	g_}Yv~g0
 
 
 
  0 0|~e>f:y
 
 
 
  0 0NN V R A M -NSNS|~ve|~ N,PRN V R A M Nuvy-NekyS N!kS_MRev^(WL C D 
N>f:y0sQNev>f:y	g N*NHes0V:Ne	gvQyrk'`1\/f6 0 yMb	g N!kRvSS6 0 RMb	g N!k\eSSYgbNk!k\Sve(WO\U^
N[hQ͑e7Re N!kRjm9N'Yϑv|~e0
 
 
 
  0 0 N*N}YvRl/fbN(We>f:yQpe-NNY`SϑR+RX[P\e0R0yS	g(WvQQ[SuSSvePMbfevQ>f:y0
 
 e x t e r n   v o i d   D i s p l a y T i m e ( & ) 
 
 { 
 
  0s t a t i c   B Y T E   b y H o u r , b y M i n u t e , b y S e c o n d ; 
 
  0B Y T E   b y N e w H o u r ,   b y N e w M i n u t e ,   b y N e w S e c o n d ; 
 
  0b y N e w H o u r   =   G e t S y s H o u r ( ) ; 
 
  0b y N e w M i n u t e   =   G e t S y s M i n u t e ( ) ; 
 
  0b y N e w S e c o n d   =   G e t S y s S e c o n d ( ) ; 
 
  0
 
  0i f ( b y N e w H o u r ! =   b y H o u r ) 
 
  0{ 
 
  0 0&   / *   >f:y\e  * / 
 
  0 0b y H o u r   =   b y N e w H o u r ; 
 
  0} 
 
  0i f ( b y N e w M i n u t e ! =   b y M i n u t e ) 
 
  0{ 
 
  0 0&   / *   >f:yR  * / 
 
  0 0b y M i n u t e   =   b y N e w M i n u t e ; 
 
  0} 
 
  0i f ( b y N e w S e c o n d ! =   b y S e c o n d ) 
 
  0{ 
 
  0 0&   / *   >f:yy  * / 
 
  0 0b y S e c o n d   =   b y N e w S e c o n d ; 
 
  0} 
 
 } 
 
 
 
  0 0ُ*NOP[_NSNzO\O:NC  -Ns t a t i c sQ.W[:_'YZRvf0S_6q(WC + +  ̑s t a t i c wQ	gNfR:_'YvZR[O_gNpencTQpe1y" [a" b:N" {|" v NRck/f[vُ Nyrpb1\NoNvepeOy0
 
 R;u>f:y
 
 
 
  0 0R;u/fe@b	ge@bevYbkv;ubpvYN_N1\bNR;u0@wevSf(WO\U^
N>f:y
NTvYbk;ubsS/fR;uKN,g(0@bN(W N*NL]eQ_|~vL C D 
N2k>f:yR;u_{PR[ehV0l	glxNboN[ehVvNLu/fel`Pv
 
 
 
  0 01 	  l	g[ehV N*Nd\O|~\elۏLeGrvnlN/felۏLYNRv^N/fO
NQbvQ:N N*NYNRd\O|~
 
 
 
  0 02 	  l	g[ehV N*NYZSOd>eoN\elЏ\OV:N[
NwSUOe^Rbc0RN N'^;ub  
 
 
 
  0 03 	  l	g[ehV N*NQ~OS\elЏlV:NvQelwUOeS Oev^͑ OKNel(Wyr[ve[byr[vNR0
 
 
 
  0 0Vdkl	g[ehV\asT@wl	gd\O|~0l	gQ~0l	gYZSOُ\/f`7hvўf@bNTtv^up;m0WO(uTy[ehV/f[ N*NoNNv gW,g Bl
 
 
 
  0 0(W8 0 1 8 6 :N;NGrvL]eQ_|~-NbN PRlxN[ehVv-Neeg\O:NoN[ehV(W-NeSuTSf;ubv>f:yQ[0(We>f:y" x x : x x " -NQSNf	gek!ky-NeSuT (uS h o w D o t 
 
 v o i d   S h o w D o t ( ) 
 
 { 
 
  0s t a t i c   B O O L   b S h o w D o t   =   T R U E ;   / *   Q N!keus t a t i c sQ.W[vZR  * / 
 
  0i f ( b S h o w D o t ) 
 
  0{ 
 
  0 0s h o w C h a r (  :  , x P o s , y P o s ) ; 
 
  0} 
 
  0e l s e 
 
  0{ 
 
  0 0s h o w C h a r (     , x P o s , y P o s ) ; 
 
  0} 
 
  0b S h o w D o t   =   !   b S h o w D o t ; 
 
 } 
 
 
 
  0 0܃USd\O
 
 
 
  0 0epeN:NKN~=\Alv~NQsN(Wُ N̑bN\w0R(WC  -NT`(u0R NNpvbT[a``oN~g\O	gUOI{v9e
 
 
 
  0 0{f~/f*N({ˆ܃USdUfN~Qُ7hv N*N|~
 
   
 
 V1   ܃USO
 
 
 
  0 0BlN.v
Nv" !  !" .Rbc܃US&qpS_(u7b(W&qpYNg܃USereQ.v
NvO K 0C A N C E L .R(u&qp܃US[^KNYtQpe0bf~PP0Wُ7hZP@w
 
 / *   	cNO K .  * / 
 
 v o i d   o n O k K e y ( ) 
 
 { 
 
  0/ *   $Re(WNHN&qp܃US
N	cNO k .(uv^YtQpe  * / 
 
  0S w i t c h ( c u r r e n t F o c u s ) 
 
  0{ 
 
  0 0c a s e   M E N U 1 : 
 
  0 0 0m e n u 1 O n O k ( ) ; 
 
  0 0 0b r e a k ; 
 
  0 0c a s e   M E N U 2 : 
 
  0 0 0m e n u 2 O n O k ( ) ; 
 
  0 0 0b r e a k ; 
 
  0 0& 
 
  0} 
 
 } 
 
 / *   	cNC a n c e l .  * / 
 
 v o i d   o n C a n c e l K e y ( ) 
 
 { 
 
  0/ *   $Re(WNHN&qp܃US
N	cNC a n c e l .(uv^YtQpe  * / 
 
  0S w i t c h ( c u r r e n t F o c u s ) 
 
  0{ 
 
  0 0c a s e   M E N U 1 : 
 
  0 0 0m e n u 1 O n C a n c e l ( ) ; 
 
  0 0 0b r e a k ; 
 
  0 0c a s e   M E N U 2 : 
 
  0 0 0m e n u 2 O n C a n c e l ( ) ; 
 
  0 0 0b r e a k ; 
 
  0 0& 
 
  0} 
 
 } 
 
 
 
  0 0~N	g N)Ybُ7hZPN
 
 / *   \܃USv^\'`Td\O" \ň" (W Nw  * / 
 
 t y p e d e f   s t r u c t   t a g S y s M e n u 
 
 { 
 
  0c h a r   * t e x t ;   / *   ܃USve,g  * / 
 
  0B Y T E   x P o s ;   / *   ܃US(WL C D 
Nvx PWh  * / 
 
  0B Y T E   y P o s ;   / *   ܃US(WL C D 
Nvy PWh  * / 
 
  0v o i d   ( * o n O k F u n ) ( ) ;   / *   (W܃US
N	cNo k .vYtQpec  * / 
 
  0v o i d   ( * o n C a n c e l F u n ) ( ) ;   / *   (W܃US
N	cNc a n c e l .vYtQpec  * / 
 
 } S y s M e n u ,   * L P S y s M e n u ; 
 
 
 
  0 0S_b[IN܃USeS ُ7h
 
 s t a t i c   S y s M e n u   m e n u [ M E N U _ N U M ]   = 
 
 { 
 
  0{ 
 
  0 0" m e n u 1 " ,   0 ,   4 8 ,   m e n u 1 O n O k ,   m e n u 1 O n C a n c e l 
 
  0} 
 
  0, 
 
  0{ 
 
  0 0"   m e n u 2 " ,   7 ,   4 8 ,   m e n u 2 O n O k ,   m e n u 2 O n C a n c e l 
 
  0} 
 
  0, 
 
  0{ 
 
  0 0"   m e n u 3 " ,   7 ,   4 8 ,   m e n u 3 O n O k ,   m e n u 3 O n C a n c e l 
 
  0} 
 
  0, 
 
  0{ 
 
  0 0"   m e n u 4 " ,   7 ,   4 8 ,   m e n u 4 O n O k ,   m e n u 4 O n C a n c e l 
 
  0} 
 
  0& 
 
 } ; 
 
 
 
  0 0O K .TC A N C E L .vYtSb
 
 / *   	cNO K .  * / 
 
 v o i d   o n O k K e y ( ) 
 
 {   
 
  0m e n u [ c u r r e n t F o c u s M e n u ] . o n O k F u n ( ) ;   
 
 } 
 
 / *   	cNC a n c e l .  * / 
 
 v o i d   o n C a n c e l K e y ( ) 
 
 { 
 
  0m e n u [ c u r r e n t F o c u s M e n u ] . o n C a n c e l F u n ( ) ;   
 
 } 
 
 
 
  0 0z^'Y'Y{SN_N _YwQ	g_}YvSibU\'`bNNN)R(uNbT[a-Nv\ň``1\z^~gnpfvQ~g/fQNNSN(We O9ez^v`QN(W|~-NmRfYv܃US|~v	c.YtQpeOc
NS0
 
 
 
  0 0bT[aw^yN
 
 !jbM e s s a g e B o x Qpe
 
 
 
  0 0M e s s a g e B o x Qpeُ*NW i n d o w s z-Nv~se
NwS/fY\eQ,{ N!k(u0RvQpe0؏_bN,{ N!k(WW i n d o w s -N)R(uM e s s a g e B o x Q  " H e l l o , W o r l d ! " [݋FheeGYvaɉTel~ُ*NNLu
Nvzz	gY\z^XTf[`NW i n d o w s z/fNM e s s a g e B o x   ( " H e l l o , W o r l d ! " , & )  _Yv0(Wb,gyvf[!h^lAm O@w N*N͋GlSZP"  H e l l o , W o r l d  ~z^XT" aceQ蕧~z^XTFO<ONN"  H e l l o , W o r l d  ~" ُ*Nlfd{b_a0
 
      0  
 
 V2   ~xQvH e l l o , W o r l d ! 
 
 
 
  0 0V2 ~QN$Ny8lR`~xQvH e l l o , W o r l d [݋Fh NySwQ	g" nx["  NyRS+T" nx[" 0" Sm" 0/fvM e s s a g e B o x vnx	gN_N^	g$N{|ُ[hQ/f1uyr[v^(u BlQ[v0
 
 
 
  0 0L]eQ_|~-Nl	g~bNcOM e s s a g e B o x FO/ftNvQR:_'YbN !jbKN N*N!jbvM e s s a g e B o x Qpe:N
 
 / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
 
 / *   Qpe
Ty:   M e s s a g e B o x 
 
 / *   Rf:   9_Q_[݋Fh, >f:yc(u7bvOo`
 
 / *   Spef:   l p S t r   - - -   c(u7bvW[&{2NQOo`
 
 / *   T Y P E   - - -   Q<h_( I D _ O K   =   0 ,   I D _ O K C A N C E L   =   1 ) 
 
 / *   ԏV<P:   ԏV[݋Fhc6ev.<P, S	g$Ny  K E Y _ O K ,   K E Y _ C A N C E L 
 
 / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
 
 t y p e d e f   e n u m   T Y P E   {   I D _ O K , I D _ O K C A N C E L   } M S G _ T Y P E ; 
 
 e x t e r n   B Y T E   M e s s a g e B o x ( L P B Y T E   l p S t r ,   B Y T E   T Y P E ) 
 
 { 
 
  0B Y T E   k e y V a l u e   =   - 1 ; 
 
 
 
  0C l e a r S c r e e n ( ) ;   / *   ndO\U^  * / 
 
  0D i s p l a y S t r i n g ( x P o s , y P o s , l p S t r , T R U E ) ;   / *   >f:yW[&{2N  * / 
 
  0/ *   9hnc[݋Fh{|WQ[/f&T>f:ynx[0Sm  * / 
 
  0s w i t c h   ( T Y P E ) 
 
  0{ 
 
  0 0c a s e   I D _ O K : 
 
  0 0 0D i s p l a y S t r i n g ( 1 3 , y P o s + H i g h + 1 ,   "   nx[  " ,   0 ) ; 
 
  0 0 0b r e a k ; 
 
  0 0c a s e   I D _ O K C A N C E L : 
 
  0 0 0D i s p l a y S t r i n g ( 8 ,   y P o s + H i g h + 1 ,   "   nx[  " ,   0 ) ; 
 
  0 0 0D i s p l a y S t r i n g ( 1 7 , y P o s + H i g h + 1 ,   "   Sm  " ,   0 ) ; 
 
  0 0 0b r e a k ; 
 
  0 0d e f a u l t : 
 
  0 0 0b r e a k ; 
 
  0} 
 
  0D r a w R e c t ( 0 ,   0 ,   2 3 9 ,   y P o s + H i g h + 1 6 + 4 ) ;   / *   ~6RYFh  * / 
 
  0/ *   M e s s a g e B o x /f!j_[݋Fh;^XЏLI{_	c.  * / 
 
  0w h i l e (   ( k e y V a l u e   ! =   K E Y _ O K )   | |   ( k e y V a l u e   ! =   K E Y _ C A N C E L )   ) 
 
  0{ 
 
  0 0k e y V a l u e   =   g e t S y s K e y ( ) ; 
 
  0} 
 
  0/ *   ԏV	c.{|W  * / 
 
  0i f ( k e y V a l u e = =   K E Y _ O K ) 
 
  0{ 
 
  0 0r e t u r n   I D _ O K ; 
 
  0} 
 
  0e l s e 
 
  0{ 
 
  0 0r e t u r n   I D _ C A N C E L ; 
 
  0} 
 
 } 
 
 
 
  0 0
NQpeNbNs^ }(WV C + + I{-NO(uvM e s s a g e B o x /fUOI{v^y<OJU[sُ*NQpe`OOw0R[(WL]eQ_|~-NvY(u/fewzv0
 
 
 
  0 0;`~
 
 
 
  0 0,g{/f,g|Rez-Nb]'` gmv N{[cONL]eQ_|~O\U^>f:yeb NN_]YvYtelup;mO(u[NbN\
NQL C D 
NQqN
N*Xv>f:yQ[@bVpb0
 
 
 
  0 0O\U^CNL]eQ_|~uX[KN͑RbvSaKN>f:y\S(u7bKN-Y-Y0O\U^zYt
N}Y\/foN-N g
N|~0 gmqNvR{fmSvQ[0  
 
 C  L]eQ_|~zOpKNN: .vd\O
 
 \O: [[NS      feeg: 2 0 0 5 - 0 7 - 2 2 
 
 YtR.
 
 
 
  0 0R.v(WN(u7bLubv^^V[v(u7bR.v	b\OO\U^;ubYN
NTv>f:yr`N0OY;N;ubYV1 
 
   
 
 V1   ;N;ub
 
 
 
  0 0S_(u7b(WnX X 
N	cNE n t e r .KNT;ub1\Rbc0RNnX X vLubYV2 
 
   
 
 V2   Rbc0RnX X ;ub
 
 
 
  0 0z^YUO$Re(u7bYNT N;ubv^(W;ubvz^r`N(u[^vR.YtQpeNOo}Yv~g/f N*N<P_`v0
 
 
 
  0 0bNegwwW I N 3 2 z-N(u0Rv" zS" i_S_mo`m e s s a g e 	S~
NTzSveP勗zSvmo`YtQpe/f N*Nc a l l b a c k Qpe	 g~(u(W勗zSvmo`YtQpe-NS9hncmo`v{|W(uN勗zS-Nv[^YtQpe0Ǐُye_W I N 3 2 	gHev~~N
NTvzSv^Yt
NTzS`QNvmo`0
 
 
 
  0 0bNN-Nf[`N0Rv1\/f
 
 
 
  0 01 	\
NTv;ub{|k:NW I N 3 2 -N
NTvzS\zS-NvTyCQ }܃US0	cI{	S+T(WzSKN-N
 
 
 
  0 02 	~T*N;ubcO N*NR." mo`" YtQpeQpec6e	c.Oo`:NSpe
 
 
 
  0 03 	(WT;ubvR." mo`" YtQpe-N$Re	c.{|WTS_MR&qpCQ }v^(u[^CQ }v	c.YtQpe0
 
 / *   \zSCQ }0mo`YtQpe\ň(WzS-N  * / 
 
 s t r u c t   w i n d o w s 
 
 { 
 
  0B Y T E   c u r r e n t F o c u s ; 
 
  0E L E M E N T   e l e m e n t [ E L E M E N T _ N U M ] ; 
 
  0v o i d   ( * m e s s a g e F u n )   ( B Y T E   k e y V a l u e ) ; 
 
  0& 
 
 } ; 
 
 / *   mo`YtQpe  * / 
 
 v o i d   m e s s a g e F u n c t i o n ( B Y T E   k e y V a l u e ) 
 
 { 
 
  0B Y T E   i   =   0 ; 
 
  0/ *   _&qpCQ }  * / 
 
  0w h i l e   (   ( e l e m e n t   [ i ] . I D ! =   c u r r e n t F o c u s ) & &   ( i   <   E L E M E N T _ N U M )   ) 
 
  0{ 
 
  0 0i + + ; 
 
  0} 
 
  0/ *   " mo` f\"   * / 
 
  0i f ( i   <   E L E M E N T _ N U M ) 
 
  0{ 
 
  0 0s w i t c h ( k e y V a l u e ) 
 
  0 0{ 
 
  0 0 0c a s e   O K : 
 
  0 0 0 0e l e m e n t [ i ] . O n O k ( ) ; 
 
  0 0 0 0b r e a k ; 
 
  0 0 0& 
 
  0 0} 
 
  0} 
 
 } 
 
 
 
  0 0(WzSvmo`YtQpe-N(uv^CQ }	c.QpevǏz{|<ON" mo` f\" ُ/fbNNW I N 3 2 z-Nf[`N0Rv0z0RN N*NXLu_YN/fvvN0vQ[0Wev``SNbǏeg:Nb@b(u/f:Nz-Nv" beg;NIN" 0
 
 
 
  0 0(Wُ*NOP[-NYgbN؏`s_f'Y NpbNSNPtM F C -NYtM E S S A G E _ M A P velbN_NSNf[`NM F C [INQ*N|Yv[eg[s" mo` f\" 0
 
 YtpeW[.
 
 
 
  0 0(u7beQpeW[e/f NMO NMOeQvk NMOveQ[^@wO\U^
Nv N*N>f:yMOnx PWhy PWh	0dkYz^؏ U_MOneQv<P@bN	gHe~~(u7bpeW[eQv gsOe_/f[IN N*N~gSO\PWhTpe<PFc~(W Nw
 
 / *   (u7bpeW[eQ~gSO  * / 
 
 t y p e d e f   s t r u c t   t a g I n p u t N u m 
 
 { 
 
  0B Y T E   b y N u m ;   / *   c6e(u7beQK<P  * / 
 
  0B Y T E   x P o s ;   / *   peW[eQ(WO\U^
Nv>f:yMOnx PWh  * / 
 
  0B Y T E   y P o s ;   / *   peW[eQ(WO\U^
Nv>f:yMOny PWh  * / 
 
 } I n p u t N u m ,   * L P I n p u t N u m ; 
 
 
 
  0 0HNc6e(u7beQ1\SN[IN N*N~gSOpe~(upe~-NvTMO~b N*N[tevpeW[
 
 I n p u t N u m   i n p u t E l e m e n t [ N U M _ L E N G T H ] ;   / *   c6e(u7bpeW[eQvpe~  * / 
 
 / *   peW[	c.YtQpe  * / 
 
 e x t e r n   v o i d   o n N u m K e y ( B Y T E   n u m ) 
 
 { 
 
 i f ( n u m = = 0 | |   n u m = = 1 )   / *   Sc6eNۏ6ReQ  * / 
 
 { 
 
  0/ *   (WO\U^
N>f:y(u7beQ  * / 
 
  0D r a w T e x t ( i n p u t E l e m e n t [ c u r r e n t E l e m e n t I n p u t P l a c e ] . x P o s ,   i n p u t E l e m e n t [ c u r r e n t E l e m e n t I n p u t P l a c e ] . y P o s ,   " % 1 d " ,   n u m ) ; 
 
  0/ *   \eQK<P~pe~CQ }  * / 
 
  0i n p u t E l e m e n t [ c u r r e n t E l e m e n t I n p u t P l a c e ] . b y N u m   =   n u m ;   
 
  0/ *   &qpSIQhSy  * / 
 
  0m o v e T o R i g h t ( ) ; 
 
 } 
 
 }   
 
 
 
  0 0\peW[k NMOeQvPWhTeQ<PFc~T(WpeW[.YtQpe-N1\SN	g~gv~~z^Oz^>f__'}Q0
 
 
 
  0 0tet(u7beQ
 
 
 
  0 0~~,{2 vOP[(W,{2 vo n N u m K e y Qpe-NS/fSNpeW[vk NMOVbN \vQlS:N	gHepenclYlS:N	gHevX X X pencvQel/f
 
 / *   N2 ۏ6RpencMOlS:N	gHepencX X X   * / 
 
 v o i d   c o n v e r t T o X X X ( ) 
 
 { 
 
  0B Y T E   i ; 
 
  0X X X   =   0 ;   
 
  0f o r   ( i   =   0 ;   i   <   N U M _ L E N G T H ;   i + + ) 
 
  0{   
 
  0 0X X X   + =   i n p u t E l e m e n t [ i ] . b y N u m * p o w e r ( 2 ,   N U M _ L E N G T H   -   i   -   1 ) ; 
 
  0}   
 
 } 
 
 
 
  0 0SKNbN_NS (WO\U^
N>f:yN	gHevpencMOV:NbN_N YSTlS
 
 / *   N	gHepenclS:N2 ۏ6RpencMOX X X   * / 
 
 v o i d   c o n v e r t F r o m X X X ( ) 
 
 { 
 
  0B Y T E   i ; 
 
  0X X X   =   0 ;   
 
  0f o r   ( i   =   0 ;   i   <   N U M _ L E N G T H ;   i + + ) 
 
  0{   
 
  0 0i n p u t E l e m e n t [ i ] . b y N u m   =   X X X   /   p o w e r ( 2 ,   N U M _ L E N G T H   -   i   -   1 )   %   2 ; 
 
  0}   
 
 } 
 
 
 
  0 0S_6q(W
NbvOP[-NV:Npenc/f2 ۏ6Rv(up o w e r Qpe
N/f_}Yv	bvc(u" < <   > > " yMOd\OHesfؚbNN/f:NNfveO0Ջ`Yg(u7beQ/fASۏ6Rvp o w e r Qpeb/f/U Nv	bN0
 
 
 
  0 0;`~
 
 
 
  0 0,g{~QN.vd\O@bmSvT*NebR.Yt0peW[.YtS(u7beQtetW,g
NcON N*NhQWYv	c.YteHh0[NR.Ytel\L C D O\U^NW i n d o w s zSۏL{|kcQNe0W㉳QO\U^0.vA~BgNNveHh0
 
 
 
  0 0{:gf[vYwƋwQ	gv'`V
Neve暀b/g_euW,gRvZPl/f_Reav0bN gY " |" 	Ny | N*N(WYNvBlL{S̑lnb~pv͋	 gsObch/fGl0C 0C + + bJ A V A 	_>f6qYg`O" |" Nُ	Ny vQ[ `O^/fSN__" q`" v&TR`O1\l	g" |" [N.   
 
 C  L]eQ_|~zOpKNmQ: '`OS
 
 \O: [[NS      feeg: 2 0 0 5 - 0 7 - 2 2 
 
 O(u[[IN
 
 
 
  0 0(WC  -N[/fNuQL]Nxv/U Nel0[NL]eQ_|~ :NN0R'`Bl[/f Ny_}YvNfQpevel0
 
 
 
  0 0Q N*N" hQ" [M I N   ُ*N[eQ$N*NSpev^ԏV\v N*N
 
 
 
  0 0ZPl
 
 # d e f i n e   M I N ( A , B )    0(   A   < =   B   ?   A   :   B   ) 
 
 
 
  0 0cknxZPl
 
 # d e f i n e   M I N ( A , B )   A 	< =   ( B )   ?   ( A )   :   ( B )   ) 
 
 
 
  0 0[N[bN wS	Np
 
 
 
  0 0( 1 ) [[IN" P" Qpe
 
 
 
  0 0( 2 ) [[IN
N/fQpeV b
N@b	g" Spe" 
 
 
 
  0 0( 3 ) [[INSNuoR\O(u0
 
 
 
  0 0NbvNx
 
 l e a s t   =   M I N ( * p + + ,   b ) ; 
 
 
 
  0 0\fbc:N
 
 (   ( * p + + )   < =   ( b )   ? ( * p + + ) : ( b )   ) 
 
 
 
  0 0SuvN`ele0  
 
 
 
  0 0V
N~[[IN OeQ	goR\O(uv" Spe" 0
 
 
 
  0 0O(u[X[hVSϑ
 
 
 
  0 0S_[ N*NSϑA~Qe S
YQX[N9'YϑvX[Se0:NdkC  cON NySϑsS[X[hVSϑ0ُySϑX[>e(WC P U v[X[hV-NO(ue
N QX[vcN[X[hV-NQNcؚHes0[X[hVSϑvf&{/fr e g i s t e r 0[N_s!kpeYv_sc6RSϑS_sSOQS
YO(uvSϑGWS[IN:N[X[hVSϑ_spe/f^(u[X[hVSϑv g}YP	0
 
 
 
  0 0( 1 )   S	g@\ꁨRSϑTb_SMbSN[IN:N[X[hVSϑ0V:N[X[hVSϑ^\NR`X[Pe_Q Ǒ(uY`X[Pe_vϑ
N[IN:N[X[hVSϑSb!jWWhQ@\Sϑ0!jWWQhQ@\Sϑ0@\s t a t i c Sϑ
 
 
 
  0 0( 2 )   r e g i s t e r /f N*N" ^" WsQ.W[acz^^Sϑ>e(W[X[hV-NFO g~SϑSV:NagN
Nnv^*gb:N[X[hVSϑ/f>e(WNX[PhV-NFOыhV-Nv^
Nb(WC + +  -N	gS N*N" ^" WsQ.W[i n l i n e 	0
 
 
 
  0 0Nb/f N*NǑ(u[X[hVSϑvOP[
 
 / *   Bl1 + 2 + 3 + & . + n v<P  * / 
 
 W O R D   A d d i t i o n ( B Y T E   n ) 
 
 { 
 
  0r e g i s t e r   i , s = 0 ; 
 
  0f o r ( i = 1 ; i < = n ; i + + ) 
 
  0{ 
 
  0 0s = s + i ; 
 
  0} 
 
  0r e t u r n   s ; 
 
 } 
 
 
 
  0 0,gz^_sn !ki Ts A~O(uVdkS[IN:N[X[hVSϑ0
 
 
 
  0 0QL]Gl
 
 
 
  0 0z^-N[eBlۂ;RvRSN(uQL]Gleg͑QN&^eg^
Nv>fWcؚ0FO/f _STKmՋGlNx/f NN悄v]\O[\9fveVNa͑	b(uGlvR0
 
 
 
  0 0(Wz^-NX[(W N*N8 0 - 2 0 SRsS2 0 % vz^mN8 0 % vЏLeVbN9eۏHes g;N/fQ9eۏ2 0 % vNx0
 
 
 
  0 0L]eQ_C z^-N;NO(u(W~GlsS(WC z^-NvcceQ_ a s m {   } QL]GlS
 
 / *   b$N*NeQSpev<PvR~gX[>e0RSY N*NhQ@\Sϑ-N  * / 
 
 i n t   r e s u l t ;   
 
 v o i d   A d d ( l o n g   a ,   l o n g   * b )   
 
 {   
 
  0_ a s m   
 
  0{   
 
  0 0M O V   A X ,   a   
 
  0 0M O V   B X ,   b   
 
  0 0A D D   A X ,   [ B X ] 
 
  0 0M O V   r e s u l t ,   A X 
 
  0}   
 
 }   
 
 
 
  0 0)R(ulxNyr'`
 
 
 
  0 0HQf}vC P U [TyX[PhVv^W,g
N/f
 
 
 
 C P U QR A M  0>  0YTekR A M  0>  0Y_ekR A M  0>  0F L A S H / R O M 
 
 
 
  0 0[Nz^Nx]~pU_(WF L A S H bR O M -NbNSNC P U vcNvQ-NSNxgbLFO8^ُ
N/f N*N}YRlbN g}Y(W|~/TRT\F L A S H bR O M -NvvhNxbeQR A M -NTQgbLNcؚScN^
 
 
 
  0 0[NU A R T I{YvQQ	g N[[ϑvc6eB U F F E R bN^=\ϑ(WB U F F E R `SnTQTC P U cQ-Ne0OY{:g~z(WTvh:gǏR S - 2 3 2  Opence
N[nU A R T Sc6e0R N*NB Y T E 1\TC P U c-NeNejm9-NeYte
 
 
 
  0 0Yg[gYǑSD M A e_S1\Ǒ(uD M A SD M A Se_(WSvh-NS+TvX[POo`'YeHesؚvQpenc OvW,gUSMO/fWW@b Ovpenc/fNYvceQQX[vbvS	0D M A e_KN-NeqRe_Q\NC P U   [Yvr^ۏ NekcؚNC P U NYvv^Ld\Oz^0
 
 
 
  0 0;m(uMOd\O
 
 
 
  0 0O(uC  vMOd\OSNQ\dlTS!jvЏ{0(W{:gz^-NpencvMO/fSNd\Ov g\pencUSMOt
NSN(u" MOЏ{" eg[b@b	gvЏ{Td\OVup;mvMOd\OSN	gHe0Wcؚz^ЏLvHes0>NOYN  
 
 / *   el1   * / 
 
 i n t   i , j ; 
 
 i   =   8 7 9   /   1 6 ; 
 
 j   =   5 6 2   %   3 2 ;   
 
 / *   el2   * / 
 
 i n t   i , j ; 
 
 i   =   8 7 9   > >   4 ; 
 
 j   =   5 6 2   -   ( 5 6 2   > >   5   < <   5 ) ; 
 
 
 
  0 0[NN2 vcpe!ke:N" * " 0" / " b" % " VP[vpef[Џ{lS:NyMOЏ{" < <   > > " 8^SNcؚ{lHes0V:NXNdЏ{cNhTg8^kyMOЏ{'Y0
 
 
 
  0 0C  MOЏ{dNSNcؚЏ{HesY(WL]eQ_|~vz-N[vS N*N gxQWv^(uNASR^l0Wck(WO(u@wv/fMOvN& 	0b| 	0^~ 	d\OُߍL]eQ_|~vzyrp	g_'YsQ|0bN8^[lxN[X[hVۏLMOnlYbNǏ\A M 1 8 6 E R W8 0 1 8 6 YthVv-NeO\=c6R[X[hVv,{NO6 MOn:N0  _-Ne2 	 g(uvZPl/f
 
 # d e f i n e   I N T _ I 2 _ M A S K   0 x 0 0 4 0   
 
 w T e m p   =   i n w o r d ( I N T _ M A S K ) ; 
 
 o u t w o r d ( I N T _ M A S K ,   w T e m p   & ~ I N T _ I 2 _ M A S K ) ; 
 
 
 
  0 0\MOn:N1 vZPl/f
 
 # d e f i n e   I N T _ I 2 _ M A S K   0 x 0 0 4 0   
 
 w T e m p   =   i n w o r d ( I N T _ M A S K ) ; 
 
 o u t w o r d ( I N T _ M A S K ,   w T e m p   |   I N T _ I 2 _ M A S K ) ; 
 
 
 
  0 0$ReMO/f&T:N1 vZPl/f
 
 # d e f i n e   I N T _ I 2 _ M A S K   0 x 0 0 4 0   
 
 w T e m p   =   i n w o r d ( I N T _ M A S K ) ; 
 
 i f ( w T e m p   &   I N T _ I 2 _ M A S K ) 
 
 { 
 
 &   / *   MO:N1   * / 
 
 } 
 
 
 
  0 0
Nel(WL]eQ_|~vz-N/f^8^8^vbN brVcc0  
 
 
 
  0 0;`~
 
 
 
  0 0(W'`OSeb8l܏la8 0 - 2 0 QY
NOSz^-N _ 
N'Yv8 0 % ُ/fReRv0
 
 
 
  0 0[[IN/fC  -N[s{|<OQpeRS
NwQQpe(uTԏV _ v}YelFO[(W,g(
N
N/fQpeV2bk[U\ _TQs
NSev~g[[v[INTO(uNaYKN0_WahQC Nl	gSbC + + -Ni n l i n e QpevRi n l i n e Qpe|QwQe(u _ T[hQvOp0
 
 
 
  0 0O(u[X[hVSϑ0QL]GlT;m(uMOd\O_N/fcؚz^Hesv	gHeel0
 
 
 
  0 0dNz
Nvb]Y:Ncؚ|~vЏLHesbN8^_N  g'YS0W)R(uTylxNYꁫvyrpegQ\vQЏl _ OYQ\-Ne!kpe0)R(uD M A  Oe_I{0  
 
 C / C + +  v o i d Sv o i d cmB\c"}
 
 1 . i
 
  0 0YRf[[C / C + +  -Nvv o i d Sv o i d c{|W
NutVdk(WO(u
NQsN NN0,ge\[v o i d sQ.W[vm;R+TINۏLv^v o i d Sv o i d c{|WvO(uelNb]0
 
 
 
  0 02 . v o i d v+TIN
 
  0 0v o i d vW[ba`/f e{|W v o i d   * R:N e{|Wc v o i d   * SNcTNUO{|Wvpenc0
 
 
 
  0 0v o i d QNNS	g lʑ TP6Rz^v\O(uV:NNegl	gNO[IN N*Nv o i d SϑbNՋ@weg[IN
 
 
 
 
 
 v o i d   a ; 
 
 
 
  0 0ُLSыeOQc:y i l l e g a l   u s e   o f   t y p e    v o i d   0
NǏsSOv o i d   a vы
NOQ[_Nl	gNUO[EaIN0
 
 
 
  0 0v o i d wckS%cv\O(u(WN
 
  0 01 	  [QpeԏVvP[
 
  0 02 	  [QpeSpevP[0
 
 
 
  0 0bN\(W,{	N[N
NNpۏLwQSOf0
 
 
 
  0 0O@bhTwYgcp 1 Tp 2 v{|WvTHNbNSNvc(Wp 1 Tp 2 NvK<PYgp 1 Tp 2 cT
NTvpenc{|WR_{O(u:_6R{|WlbcЏ{&{bK<PЏ{&{Svc{|Wlbc:N]cv{|W0  
 
 
 
  0 0OY
 
 f l o a t   * p 1 ; 
 
 i n t   * p 2 ; 
 
 p 1   =   p 2 ; 
 
 
 
  0 0vQ-Np 1   =   p 2 SOыQc:y  =    :   c a n n o t   c o n v e r t   f r o m    i n t   *    t o    f l o a t   *   _{9e:N
 
 p 1   =   ( f l o a t   * ) p 2 ; 
 
  0 0v o i d   * R
NTNUO{|WvcSNvcK<P~[e ۏL:_6R{|Wlbc
 
 v o i d   * p 1 ; 
 
 i n t   * p 2 ; 
 
 p 1   =   p 2 ; 
 
 
 
  0 0FOُv^
NasT@wv o i d   * _NSNe :_6R{|Wlbc0WK~vQ[{|Wvc0V:N e{|W SNS[ 	g{|W  	g{|W R
NS[ e{|W 0St_{USbNSN 7uNTsYN/fN FO
N N/f7uN b N/fsYN 0NbvSыQ
 
 v o i d   * p 1 ; 
 
 i n t   * p 2 ; 
 
 p 2   =   p 1 ; 
 
 
 
  0 0c:y  =    :   c a n n o t   c o n v e r t   f r o m    v o i d   *    t o    i n t   *   0
 
 
 
 3 . v o i d vO(u
 
 
 
  0 0Nb~Qv o i d sQ.W[vO(uĉR
 
  0 0ĉR N  YgQpel	gԏV<PHN^Xf:Nv o i d {|W
 
 
 
  0 0(WC  -NQ
NRԏV<P{|WP[vQpe1\OыhV\O:NԏVteW<PYt0FO/fYz^XTtSN:NvQ:Nv o i d {|W0OY
 
 a d d   (   i n t   a ,   i n t   b   ) 
 
 { 
 
 r e t u r n   a   +   b ; 
 
 } 
 
 i n t   m a i n ( i n t   a r g c ,   c h a r *   a r g v [ ] ) 
 
 { 
 
 p r i n t f   (   " 2   +   3   =   % d " ,   a d d   (   2 ,   3 )   ) ; 
 
 } 
 
 
 
  0 0z^ЏLv~g:NQ
 
  0 02   +   3   =   5 
 
  0 0ُf
NRԏV<PfvQpevnx:Ni n t Qpe0
 
 
 
  0 0gZSX
0ؚ(ϑC / C + + z0-Nc0R C + +  	g_%N<hv{|W[hQhg
NAQ
N`QcQpe
NR{|WXf	Su 0S/fыhVv^
N N[ُHN[lY(WV i s u a l   C + + 6 . 0 -N
Na d d Qpevыe_NefJTNЏLcknx@bN
N[^gNыhVOZP%N<hv{|Whg0
 
 
 
  0 0Vdk:NNMQmqNbN(WQC / C + + z^e[NNUOQpe_{ N*N
No0Wc[vQ{|W0YgQpel	gԏV<P N[Xf:Nv o i d {|W0ُe/fz^o}YS'`v _N/fzĉ'`vBl0SYR
Nv o i d {|WXfT_NSNS%cNxv lʑ \O(u0Nxv lʑ sSNx]lʑ]0
 
  0 0ĉRN  YgQpeeSpeHN^XfvQSpe:Nv o i d 
 
 
 
  0 0(WC + +  -NXf N*Nُ7hvQpe
 
 i n t   f u n c t i o n ( v o i d ) 
 
 { 
 
 r e t u r n   1 ; 
 
 } 
 
 
 
  0 0RۏLNbv(u/f
NTlv
 
 f u n c t i o n ( 2 ) ; 
 
 
 
  0 0V:N(WC + + -NQpeSpe:Nv o i d va`/fُ*NQpe
NcSNUOSpe0
 
 
 
  0 0bN(WT u r b o   C   2 . 0 -Nы
 
 # i n c l u d e   " s t d i o . h " 
 
 f u n ( ) 
 
 { 
 
 r e t u r n   1 ; 
 
 } 
 
 m a i n ( ) 
 
 { 
 
 p r i n t f ( " % d " , f u n ( 2 ) ) ; 
 
 g e t c h a r ( ) ; 
 
 } 
 
 
 
  0 0ыcknxNQ1 ُf(WC  -NSN~eSpevQpe ONa{|WvSpeFO/f(WC + + ыhV-NыT7hvNxROQ0(WC + + -N
NTeSpevQpe ONUOSpeQc:y  f u n    :   f u n c t i o n   d o e s   n o t   t a k e   1   p a r a m e t e r s  0
 
 
 
  0 0@bNe(WC ؏/fC + + -NQpe
NcSNUOSpe N[cfSpe:Nv o i d 0
 
 
 
  0 0ĉR	N  \_O(uv o i d c{|W
 
 
 
  0 0	cgqA N S I ( A m e r i c a n   N a t i o n a l   S t a n d a r d s   I n s t i t u t e ) hQ
N[v o i d cۏL{ld\OsSNRd\O/f
NTlv
 
 v o i d   *   p v o i d ; 
 
 p v o i d + + ;   / / A N S I 
 
 p v o i d   + =   1 ;   / / A N S I 
 
 / / A N S I hQKN@bNُ7h[/fV:N[ZWcۏL{ld\Ovc_{/fnx[wSvQcTpenc{|W'Y\v0
 
 / / OY
 
 i n t   * p i n t ; 
 
 p i n t + + ;   / / A N S I cknx
 
 
 
  0 0p i n t + + v~g/fOvQX'Ys i z e o f ( i n t ) 0
 
 
 
  0 0FO/f'Y
TvG N U ( G N U  s   N o t   U n i x v)Q) R
NُHN[[c[v o i d   * v{ld\ONc h a r   *  N0
 
  0 0VdkNRS(WG N U ыhV-Nvcknx
 
 p v o i d + + ;   / / G N U cknx
 
 p v o i d   + =   1 ;   / / G N U cknx
 
 
 
  0 0p v o i d + + vgbL~g/fvQX'YN1 0
 
 
 
  0 0(W[Evz^-N:NΏTA N S I hQv^cؚz^vSy
i'`bNSNُ7hQ[sT7hRvNx
 
 v o i d   *   p v o i d ; 
 
 ( c h a r   * ) p v o i d + + ;   / / A N S I cknxG N U cknx
 
 ( c h a r   * ) p v o i d   + =   1 ;   / / A N S I G N U cknx
 
 
 
  0 0G N U TA N S I ؏	g NN:S+R;`SO G N U A N S I f  _>e cON[fYlv/ec0FO/fbN(Ww[e؏/f^=\S0WΏTA N S I hQ0
 
 
 
  0 0ĉRV  YgQpevSpeSN/fNa{|WcHN^XfvQSpe:Nv o i d   * 
 
 
 
  0 0xQWvYQX[d\OQpem e m c p y Tm e m s e t vQpeSWR+R:N
 
 v o i d   *   m e m c p y ( v o i d   * d e s t ,   c o n s t   v o i d   * s r c ,   s i z e _ t   l e n ) ; 
 
 v o i d   *   m e m s e t   (   v o i d   *   b u f f e r ,   i n t   c ,   s i z e _ t   n u m   ) ; 
 
 
 
  0 0ُ7hNUO{|WvcSN OeQm e m c p y Tm e m s e t -Nُ_Nw[0WSOsNQX[d\OQpevaINV:N[d\Ov[aNN/f NGrQX[
NُGrQX[/fNHN{|W0Ygm e m c p y Tm e m s e t vSpe{|W
N/fv o i d   * /fc h a r   * MbSwvGY*`Nُ7hvm e m c p y Tm e m s e t f>f
N/f N*N ~|v1yNO~sTv Qpe
 
  0 0NbvNxgbLcknx
 
 / / :yOm e m s e t cSNa{|Wc
 
 i n t   i n t a r r a y [ 1 0 0 ] ; 
 
 m e m s e t   (   i n t a r r a y ,   0 ,   1 0 0 * s i z e o f ( i n t )   ) ;   / / \i n t a r r a y n0 
 
 
 
 / / :yOm e m c p y cSNa{|Wc
 
 i n t   i n t a r r a y 1 [ 1 0 0 ] ,   i n t a r r a y 2 [ 1 0 0 ] ; 
 
 m e m c p y   (   i n t a r r a y 1 ,   i n t a r r a y 2 ,   1 0 0 * s i z e o f ( i n t )   ) ;   / / \i n t a r r a y 2 b~i n t a r r a y 1 
 
 
 
  0 0	gv/fm e m c p y Tm e m s e t QpeԏVv_N/fv o i d   * {|WhQ^QpevQ/fYHN0W[	gf[JU
 
 
 
  0 0ĉRN  v o i d 
NNh N*Nw[vSϑ
 
 
 
  0 0NbNxOVv o i d Nh N*Nw[vSϑVdk/fvNx
 
 v o i d   a ;   / / 
 
 f u n c t i o n ( v o i d   a ) ;   / / 
 
 
 
  0 0v o i d SOsN Nybaُ*NNLu
NvSϑ/f 	g{|W vlY N*NN
N/f7uN1\/fsYN؏	gNY	0
 
 
 
  0 0v o i d vQsS/f:NN Nybav Yg`Ocknx0Wt㉆NbT[a-N baW{| vi__N_[ftv o i d penc{|W0ckY
N~baW{|[IN N*N[ObN_N
N[IN N*Nv o i d bN{|kvyv o i d :N bapenc{|W 	Sϑ0
 
 
 
 4 . ;`~
 
  0 0\\vv o i d tυ@w_0N[vTf[\O:N N
Tz^NXT[ۏLm N*NB\!kv`_6qObNSv*SEm0  
 
 
 
 C / C + +  SSSpehmB\c"}  
 
 \O[[NS    e - m a i l : 2 1 c n b a o @ 2 1 c n . c o m   
 
 1 . _   
 
 C / C + +  	g N*N
NTNvQ[ vyr'`sSvQ/ecSSSpexQWvQpeYp r i n t f 0s c a n f I{SNcSpeϑ
N[vSpe0Y  
 
 p r i n t f   (   " I   l o v e   y o u "   ) ;   
 
 p r i n t f   (   " % d " ,   a   ) ;   
 
 p r i n t f   (   " % d , % d " ,   a ,   b   ) ;   
 
 ,{ N0N0	N*Np r i n t f R+RcS1 02 03 *NSpebNwwp r i n t f QpevSW  
 
 i n t   p r i n t f   (   c o n s t   c h a r   * f o r m a t ,   . . .   ) ;   
 
 NQpeSWSNwQvQdNc6e N*NV[vSpef o r m a t NYTbvSpe(u &  h:y0(WC / C + +  -N &  h:ySNcS
N[peϑvSpet
NegSN/f0 b0 N
Nvn *NSpe0  
 
 ,ge\[C / C + + SSSpehvO(uelSC / C + + /ecSSSpehvmB\:gtۏLc"}0  
 
 2 . SSSpehv(ul  
 
 2 . 1 vsQ[  
 
 hQC / C + + S+T4YeNs t d a r g . h 4YeN-N[INNYN	N*N[  
 
 v o i d   v a _ s t a r t   (   v a _ l i s t   a r g _ p t r ,   p r e v _ p a r a m   ) ;   / *   A N S I   v e r s i o n   * /   
 
 t y p e   v a _ a r g   (   v a _ l i s t   a r g _ p t r ,   t y p e   ) ;   
 
 v o i d   v a _ e n d   (   v a _ l i s t   a r g _ p t r   ) ;     
 
 (WُN[-Nv a 1\/fv a r i a b l e   a r g u m e n t ( SSSpe) va`a r g _ p t r /fcTSSSpehvcp r e v _ p a r a m RcSSSpehvMR N*NV[Spet y p e :NSSSpev{|W0v a _ l i s t _N/f N*N[vQ[IN:Nt y p e d e f   c h a r   *   v a _ l i s t [(
N/f Nc h a r Wc0c h a r Wcvyrp/f+ + 0- - d\O[vQ\O(uv~g/fX1 TQ1 V:Ns i z e o f ( c h a r ) :N1 	NKN
NTv/fi n t I{vQ[{|Wcv+ + 0- - d\O[vQ\O(uv~g/fXs i z e o f ( t y p e ) bQs i z e o f ( t y p e ) Ns i z e o f ( t y p e ) 'YN1 0  
 
 Ǐv a _ s t a r t [bNSNS_SSSpehvcُ*N[v[IN:N  
 
 # d e f i n e   v a _ s t a r t   (   a p ,   v   )     (   a p   =   ( v a _ l i s t ) & v   +   _ I N T S I Z E O F ( v )   )   
 
 >ffvQ+TIN:N\ gT*NV[Spev0W@WR
NSSSpe[vQvOPyTK<P~a p ُ7ha p 1\/fSSSpehv0W@W0vQ-Nv_ I N T S I Z E O F [[IN:N  
 
 # d e f i n e   _ I N T S I Z E O F ( n )   ( ( s i z e o f   (   n   )   +   s i z e o f   (   i n t   )      1   )   &   ~ (   s i z e o f (   i n t   )      1   )   )   
 
 v a _ a r g [va`RcSQS_MRa r g _ p t r @bcvSSSpev^\a p ccTN NSSSpevQSW:N  
 
 # d e f i n e   v a _ a r g ( l i s t ,   m o d e )   ( ( m o d e   * ) ( l i s t   = \   
 
   ( c h a r   * )   ( ( ( ( i n t ) l i s t   +   ( _ _ b u i l t i n _ a l i g n o f ( m o d e ) < = 4 ? 3 : 7 ) )   & \   
 
   ( _ _ b u i l t i n _ a l i g n o f ( m o d e ) < = 4 ? - 4 : - 8 ) ) + s i z e o f ( m o d e ) ) ) ) [ - 1 ]   
 
 [ُ*N[vwQSO+TINbN\(W,{3 meQ0  
 
 v a _ e n d [(ueg~_gSSSpevSvQ[IN:N  
 
 # d e f i n e   v a _ e n d   (   l i s t   )   
 
 SNwQv a _ e n d   (   l i s t   ) [E
N[IN:Nzzl	gNUOw[[^vNx(uNNx[yNv a _ s t a r t [^SY[؏SS%cNxv lʑ \O(u0@bNxv lʑ cv/fNx]lʑ]0  
 
 NbbNNwQSOvOP[egfN
N	N*N[vO(uel0  
 
 2 . 2  N*N{USvOP[  
 
 # i n c l u d e   < s t d a r g . h >   
 
 / *  0Qpe
Tm a x   
 
   *  0RԏVn *Ntepe-Nv g'Y<P  
 
   *     Spen u m tepev*Npe  . . . n u m *NeQvtepe  
 
   *     ԏV<PBl_v g'Ytepe  
 
   * /   
 
 i n t   m a x   (   i n t   n u m ,   . . .   )   
 
 {   
 
 	 i n t   m   =   - 0 x 7 F F F F F F F ;     / *   3 2 |~-N g\vtepe  * /   
 
 	 v a _ l i s t   a p ;   
 
 	 v a _ s t a r t   (   a p ,   n u m   ) ;   
 
 	 f o r   (   i n t   i =   0 ;   i <   n u m ;   i + +   )   
 
 	 {   
 
 	 	 i n t   t   =   v a _ a r g   ( a p ,   i n t ) ;   
 
 	 	 i f   (   t   >   m   )   
 
 	 	 {   
 
 	 	 	 m   =   t ;   
 
   	 }   
 
 	 }   
 
 	 v a _ e n d   ( a p ) ;   
 
 	 r e t u r n   m ;   
 
 }   
 
   
 
 / *   ;NQpe(um a x   * /   
 
 i n t   m a i n   (   i n t   a r g c ,   c h a r *   a r g v [ ]   )   
 
 { 	   
 
 	 i n t   n   =   m a x   (   5 ,   5 ,   6   , 3   , 8   , 5 ) ;     / *   Bl5 *Ntepe-Nv g'Y<P  * /   
 
 	 c o u t   < <   n ;   
 
 	 r e t u r n   0 ;   
 
 }   
 
 Qpem a x -NHQ[INNSSSpehca p TǏv a _ s t a r t   (   a p ,   n u m   ) S_NSpeh0W@WK~Na p 	vQTvf o r _sR(uegMSSSSpeh0ُyMSe_NbN(Wpenc~gYePg-N~8^w0RvMSe_/f{|<Ov0  
 
 Qpem a x wweg{mfNFO/f[E
Np r i n t f v[stS܏kُ
YBg0m a x QpeKN@bNwweg{US/fV:N  
 
 ( 1 )       m a x QpeSSSpehv^/f]wvǏn u m Spe OeQ  
 
 ( 2 )       m a x QpeSSSpeh-NSpev{|W/f]wv:Ni n t W0  
 
 p r i n t f QpeRl	gُHNx^Џ0HQp r i n t f QpeSSSpev*Npe
N{fv_0RSSSpev{|W_N
N/fV[v 1u<h_W[&{2NۏLƋ+R1u% f 0% d 0% s I{nx[	VdkRmS0RSSSpehvf
YBg^(u0  
 
 NbbNN[OegRgSSSpehvؚ~^(u0  
 
 2 . 3 ؚ~^(u  
 
 Nbُ*Nz^/fbN:NgL]eQ_|~|~-NC P U vW[:N1 6 MO	Qv(WO\U^
N>f:y<h_W[&{2NvQpeD r a w T e x t [v(ul{|<ONi n t   p r i n t f   (   c o n s t   c h a r   * f o r m a t ,   . . .   ) QpeFOvQQvvh:NL]eQ_|~vmvf>f:yO\U^L E D 	0  
 
 / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /   
 
 / / 	 Qpe
Ty: 	 D r a w T e x t   
 
 / / 	 Rf: 	 (W>f:yO\
N~6ReW[  
 
 / / 	 Spef: 	 x P o s   - - - *jPWhvMOn    [ 0   . .   3 0 ]   
 
 / / 	                     y P o s   - - - ~PWhvMOn    [ 0   . .   6 4 ]   
 
 / / 	                     . . .     SNTpeW[ Nw>f:y nh_( % d 0% l 0% x 0% s )   
 
 / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /   
 
 e x t e r n 	 v o i d   D r a w T e x t   (   B Y T E   x P o s ,   B Y T E   y P o s ,   L P B Y T E   l p S t r ,   . . .   )   
 
 {   
 
 	 B Y T E 	 l p D a t a [ 1 0 0 ] ;     / / Q:S  
 
 	 B Y T E 	 b y I n d e x ;   
 
 	 B Y T E 	 b y L e n ;   
 
 	 D W O R D 	 d w T e m p ;   
 
 	 W O R D 	 w T e m p ;   
 
 	 i n t 	 	 i ; 	   
 
 	 v a _ l i s t   l p P a r a m ;   
 
 	   
 
 	 m e m s e t (   l p D a t a ,   0 ,   1 0 0 ) ;   
 
 	 b y L e n 	 =   s t r l e n (   l p S t r   ) ;   
 
 	 b y I n d e x   =   0 ;   
 
 	 v a _ s t a r t   (   l p P a r a m ,   l p S t r   ) ;   
 
   
 
 	 f o r   (   i   =   0 ;   i   <   b y L e n ;   i + +   )   
 
 	 {   
 
 	 	 i f (   l p S t r [ i ]   ! =   ' % '   )         / / 
N/f<h_&{ _Y  
 
 	 	 {   
 
 	 	 	 l p D a t a [ b y I n d e x + + ]   =   l p S t r [ i ] ;   
 
 	 	 }   
 
 	 	 e l s e   
 
 	 	 {   
 
 	 	 	 s w i t c h   ( l p S t r [ i + 1 ] )   
 
 	 	 	 {   
 
 	 	 	 / / teW  
 
 	 	 	 c a s e 	 ' d ' :   
 
 	 	 	 c a s e 	 ' D ' :   
 
 	 	 	 	 w T e m p 	 =   v a _ a r g   (   l p P a r a m ,   i n t   ) ;   
 
 	 	 	 	 b y I n d e x   + =   I n t T o S t r (   l p D a t a + b y I n d e x ,   ( D W O R D ) w T e m p   ) ; 	   
 
 	 	 	 	 i + + ;   
 
 	 	 	 	 b r e a k ;   
 
 	 	 	 / / teW  
 
 	 	 	 c a s e 	 ' l ' :   
 
 	 	 	 c a s e 	 ' L ' :   
 
 	 	 	 	 d w T e m p 	 =   v a _ a r g   (   l p P a r a m ,   l o n g   ) ;   
 
 	 	 	 	 b y I n d e x   + =   I n t T o S t r   (   l p D a t a + b y I n d e x ,   ( D W O R D ) d w T e m p   ) ;   
 
 	 	 	 	 i + + ;   
 
 	 	 	 	 b r e a k ;   
 
 	 	 	 / / 1 6 ۏ6RteW	  
 
 	 	 	 c a s e 	 ' x ' :   
 
 	 	 	 c a s e 	 ' X ' :   
 
 	 	 	 	 d w T e m p 	 =   v a _ a r g   (   l p P a r a m ,   l o n g   ) ;   
 
 	 	 	 	 b y I n d e x   + =   H e x T o S t r   (   l p D a t a + b y I n d e x ,   ( D W O R D ) d w T e m p   ) ;   
 
 	 	 	 	 i + + ;   
 
 	 	 	 	 b r e a k ;   
 
 	 	 	 d e f a u l t :   
 
                           l p D a t a [ b y I n d e x + + ]   =   l p S t r [ i ] ;   
 
 	 	 	 	 b r e a k ;   
 
 	 	 	 }   
 
 	 	 }   
 
 	 }   
 
 	 v a _ e n d   (   l p P a r a m   ) ;   
 
 	 l p D a t a [ b y I n d e x ] 	 =   ' \ 0 ' ;   
 
 	 D i s p l a y S t r i n g   (   x P o s ,   y P o s ,   l p D a t a ,   T R U E ) ;  0/ / (WO\U^
N>f:yW[&{2Nl p D a t a   
 
 }   
 
 (Wُ*NQpe-N Ǐ[ OeQv<h_W[&{2N0W@W:Nl p S t r 	ۏLƋ+RegwSSSpe*NpeST*NSSSpev{|WwQSO[sSOs(Wf o r _s-N0lY(WƋ+R:N% d TZPv/fv a _ a r g   (   l p P a r a m ,   i n t   ) w:N% l T% x TRۏLv/fv a _ a r g   (   l p P a r a m ,   l o n g   ) 0<h_W[&{2NƋ+R[bTSSSpe_N1\Yt[N0  
 
 (Wyvv gRbN Nv悎N
N~b0R N*N}YvRlegmTQW[&{2NTpeW[bNǑ(uNR+R>f:ypeW[TW[&{2Nvelv^R+Rc[PWhz^agt4xOW0N(WmT>f:yveP~T{|pencR+RN]{PWhbNaɉ4Yu
N]0NMRvQpe:N  
 
 / / >f:yW[&{2N  
 
 s h o w S t r i n g   (   B Y T E   x P o s ,   B Y T E   y P o s ,   L P B Y T E   l p S t r   )   
 
 / / >f:ypeW[  
 
 s h o w N u m   (   B Y T E   x P o s ,   B Y T E   y P o s ,   i n t   n u m   )   
 
 / / N1 6 ۏ6Re_>f:ypeW[  
 
 s h o w H e x N u m   (   B Y T E   x P o s ,   B Y T E   y P o s ,   i n t   n u m   )   
 
  g~bN(uD r a w T e x t   (   B Y T E   x P o s ,   B Y T E   y P o s ,   L P B Y T E   l p S t r ,   . . .   ) QpeNfNSHQ@b	gvQQpez^_0RN{S01\ُ7hDQ_N(u_=rN0  
 
   3 . ЏL:g6Rc"}  
 
 Ǐ,{2 bNf[ONSSSpehvO(uelvOU"kb9h^v؏
Nu__6q`wSYN  
 
 1 	:NNHN	cgq,{2 vZPl1\SN_SSSpev^[vQۏLd\O  
 
 2 	C / C + + (W^B\vzz/fO`NHNeg[ُ NlۏL/ecv:NNHNvQ[ 1\
NcOSSSpehbT  
 
 bN&^@wُNueg NekekۏLxd"}0  
 
 3 . 1   (u:g6RSGl  
 
 SGl/fxvzlmB\yr'`v~goV{HQegww2 . 2 OP[-N;NQpeۏLm a x   (   5 ,   5 ,   6   , 3   , 8   , 5 ) (uevSGl  
 
 1 .   0 0 4 0 1 0 C 8       p u s h                 5                               
 
 2 .   0 0 4 0 1 0 C A       p u s h                 8   
 
 3 .   0 0 4 0 1 0 C C       p u s h                 3   
 
 4 .   0 0 4 0 1 0 C E       p u s h                 6   
 
 5 .   0 0 4 0 1 0 D 0       p u s h                 5   
 
 6 .   0 0 4 0 1 0 D 2       p u s h                 5   
 
 7 .   0 0 4 0 1 0 D 4       c a l l                 @ I L T + 5 ( m a x )   ( 0 0 4 0 1 0 0 a )   
 
 N
NSGlNx-NbNSNwQC / C + + Qpe(uvǏz-N  
 
 ,{ Nek\SpeNST]eQh,{1 ^6 L	  
 
 ,{Nek(uc a l l cNۏLl,{7 L	0  
 
 ُ$NekS+TNm;Rv+TIN[fC / C + + ؞v(ue_:N1u(u{tSpeeQhvd\ONeQhvz^:NNS]ُy(ue_y:N_ c d e c l (u0x 8 6 |~veQheT:NNؚ0W@W0RNO0W@WEe,{1 n *NSpe>e(WN0W@WXvXhQ0(W(uQpeQSُNXhvQ[1\S_T*NSpev<PbNSGl0Rm a x QpevQ  
 
 i n t   m a x   (   i n t   n u m ,   . . . )   
 
 {   
 
 1 .   0 0 4 0 1 0 2 0       p u s h                 e b p   
 
 2 .   0 0 4 0 1 0 2 1       m o v                 e b p , e s p   
 
 3 .   0 0 4 0 1 0 2 3       s u b                   e s p , 5 0 h   
 
 4 .   0 0 4 0 1 0 2 6       p u s h                 e b x   
 
 5 .   0 0 4 0 1 0 2 7       p u s h                 e s i   
 
 6 .   0 0 4 0 1 0 2 8       p u s h                 e d i   
 
 7 .   0 0 4 0 1 0 2 9       l e a                   e d i , [ e b p - 5 0 h ]   
 
 8 .   0 0 4 0 1 0 2 C       m o v                 e c x , 1 4 h   
 
 9 .   0 0 4 0 1 0 3 1       m o v                 e a x , 0 C C C C C C C C h   
 
 1 0 .   0 0 4 0 1 0 3 6       r e p   s t o s         d w o r d   p t r   [ e d i ]   
 
               v a _ l i s t   a p ;   
 
               i n t   m   =   - 0 x 7 F F F F F F F ;   / *   3 2 |~-N g\vtepe  * /   
 
 1 1 .   0 0 4 0 1 0 3 8       m o v                   d w o r d   p t r   [ e b p - 8 ] , 8 0 0 0 0 0 0 1 h   
 
               v a _ s t a r t   (   a p ,   n u m   ) ;   
 
 1 2 .   0 0 4 0 1 0 3 F       l e a                   e a x , [ e b p + 0 C h ]   
 
 1 3 .   0 0 4 0 1 0 4 2       m o v                   d w o r d   p t r   [ e b p - 4 ] , e a x   
 
               f o r   (   i n t   i =   0 ;   i <   n u m ;   i + +   )   
 
 1 4 .   0 0 4 0 1 0 4 5       m o v                   d w o r d   p t r   [ e b p - 0 C h ] , 0   
 
 1 5 .   0 0 4 0 1 0 4 C       j m p                   m a x + 3 7 h   ( 0 0 4 0 1 0 5 7 )   
 
 1 6 .   0 0 4 0 1 0 4 E       m o v                   e c x , d w o r d   p t r   [ e b p - 0 C h ]   
 
 1 7 .   0 0 4 0 1 0 5 1       a d d                   e c x , 1   
 
 1 8 .   0 0 4 0 1 0 5 4       m o v                   d w o r d   p t r   [ e b p - 0 C h ] , e c x   
 
 1 9 .   0 0 4 0 1 0 5 7       m o v                   e d x , d w o r d   p t r   [ e b p - 0 C h ]   
 
 2 0 .   0 0 4 0 1 0 5 A       c m p                   e d x , d w o r d   p t r   [ e b p + 8 ]   
 
 2 1 .   0 0 4 0 1 0 5 D       j g e                   m a x + 6 1 h   ( 0 0 4 0 1 0 8 1 )   
 
               {   
 
                       i n t   t =   v a _ a r g   ( a p ,   i n t ) ;   
 
 2 2 .   0 0 4 0 1 0 5 F       m o v                   e a x , d w o r d   p t r   [ e b p - 4 ]   
 
 2 3 .   0 0 4 0 1 0 6 2       a d d                   e a x , 4   
 
 2 4 .   0 0 4 0 1 0 6 5       m o v                   d w o r d   p t r   [ e b p - 4 ] , e a x   
 
 2 5 .   0 0 4 0 1 0 6 8       m o v                   e c x , d w o r d   p t r   [ e b p - 4 ]   
 
 2 6 .   0 0 4 0 1 0 6 B       m o v                   e d x , d w o r d   p t r   [ e c x - 4 ]   
 
 2 7 .   0 0 4 0 1 0 6 E       m o v                   d w o r d   p t r   [ t ] , e d x   
 
                       i f   (   t   >   m   )   
 
 2 8 .   0 0 4 0 1 0 7 1       m o v                   e a x , d w o r d   p t r   [ t ]   
 
 2 9 .   0 0 4 0 1 0 7 4       c m p                   e a x , d w o r d   p t r   [ e b p - 8 ]   
 
 3 0 .   0 0 4 0 1 0 7 7       j l e                   m a x + 5 F h   ( 0 0 4 0 1 0 7 f )   
 
                               m   =   t ;   
 
 3 1 .   0 0 4 0 1 0 7 9       m o v                   e c x , d w o r d   p t r   [ t ]   
 
 3 2 .   0 0 4 0 1 0 7 C       m o v                   d w o r d   p t r   [ e b p - 8 ] , e c x   
 
               }   
 
 3 3 .   0 0 4 0 1 0 7 F       j m p                   m a x + 2 E h   ( 0 0 4 0 1 0 4 e )   
 
               v a _ e n d   ( a p ) ;   
 
 3 4 .   0 0 4 0 1 0 8 1       m o v                   d w o r d   p t r   [ e b p - 4 ] , 0   
 
               r e t u r n   m ;   
 
 3 5 .   0 0 4 0 1 0 8 8       m o v                   e a x , d w o r d   p t r   [ e b p - 8 ]   
 
       }   
 
 3 6 .   0 0 4 0 1 0 8 B       p o p                   e d i   
 
 3 7 .   0 0 4 0 1 0 8 C       p o p                   e s i   
 
 3 8 .   0 0 4 0 1 0 8 D       p o p                   e b x   
 
 3 9 .   0 0 4 0 1 0 8 E       m o v                   e s p , e b p   
 
 4 0 .   0 0 4 0 1 0 9 0       p o p                   e b p   
 
 4 1 .   0 0 4 0 1 0 9 1       r e t   
 
 Rg
NSGlNx[N N*Nwckvz^XT \/f Ny_'YvNS[NRf[_N\OvQSvoY0@bN N[V@w4YvwxvzCSN
NTP  
 
 L1 ^1 0 ۏLgbLQpeQNxvQY]\OOX[s:W0,{2 L[XhۏLyR,{3 LRasT@wm a x Qpe:NvQQ@\SϑQYvXhzz:N5 0 h W[,{1 1 Lh:ybSϑn vQX[zz[c(WNQpeQ@\h^Q8 vMOn`S(u4 *NW[	0  
 
 ,{1 2 ^1 3 L^8^sQ.[^@wv a _ s t a r t   (   a p ,   n u m   ) ُ$NL\,{ N*NSSSpev0W@WK<P~Nca p 0SYN,{1 2 LSNwQn u m v0W@W:Ne b p + 0 C h N,{1 3 LSNwQa p RM(WQpeQ@\h^Q4 vMOn
N`S(u4 *NW[	0  
 
     ,{2 2 ^2 7 L g:NsQ.[^@wv a _ a r g   ( a p ,   i n t ) 0vQ-N2 2 ~ 2 4 Lv\O(u:N\a p cTN NSSSpeSSSpev0W@W:N4 *NW[Na d d   e a x , 4 SNwQ	2 5 ~ 2 7 LRSS_MRSSSpev<PK~Sϑt 0ُkSGl_GY*`[HQyRSSSpecQ(WK<PcN̑bVǏ4YegSHQMRvSpe<PK~t Nm o v   e d x , d w o r d   p t r   [ e c x - 4 ] SSNwQ	0V i s u a l   C + + Tf[s_	ga`
NwSxT7hv`QV i s u a l   B a s i c I{vQ[Tf[`HNs  
 
 ,{3 6 ^4 1 Lb`
Ys:WTXh0W@WgbLQpeԏVd\O0  
 
 u悄vSGlKNe]
NY~_gNwNُkSGlbN;`{_f}vNSSSpevX[>eMOnNS[NSve_ɉhQw{~g  
 
 3 . 2 yrkv(u~[  
 
 ddkKNYbN NC / C + + Qpe(u[Spe`S(uzzv NNyrk~[V:N(W_ c d e c l (uOS-N	gNSϑ{|W/f	cgqvQ[Sϑv:\[eQhv0  
 
 OYW[&{WSϑ\ꁨRibU\:N N*NW[vzzV:NeQhd\O[v/f N*NW[0  
 
 Spen [E`S(uvzz:N(   (   s i z e o f ( n )   +   s i z e o f ( i n t )      1   )   &   ~ (   s i z e o f ( i n t )      1   )   ) ُ1\/f,{2 . 1 _ I N T S I Z E O F ( v ) [vegS  
 
 e6qYdk2 . 1 ~Qvv a _ a r g   (   l i s t ,   m o d e   ) [:NNHNsُHN'Yvޘ:g1\_nZiN0ُ*N1\Yu*N`egRg0  
 
 
 
 C / C + + pe~
TNc:S+RmB\c"}  
 
 \O[[NS    e - m a i l : 2 1 c n b a o @ 2 1 c n . c o m   
 
 1 .         _   
 
 c/fC / C + +  vyrrpe~
TNc	g*YYvv<Ou_YePpe~
TSN\O:NcO(u0N/fNN_Yz^1\d|mN0Yv'Yf[^NN(WC  vYef[Ǐz-N_N_~f[u pe~
T1\/fc 0_x^Џbv'Yf[^1\/fvQ-NKN N0eNebe
Y Ne0WۏL@wC / C + + yvv _S؏ NvEQnُ7hvz^XTNNOYu@w pe~
T1\/fc v0  
 
 `_ُy㉄v9hn(WNVQgW
TvC z^Yez0Ygُ{ezY~ckY-NVz^XT[pe~
TTcv{1\
Nu#kpaN0Pdke{z(Wepe[wƋYe<O4nv-NVz^XTKN-Nmm[^gNVQv{:gVfNQNN meQc"} v`~e_T|vBl|vw`^eg[_VfNQ]\OFO?a^b
NY NNeQ\O`~vfv_@KN\O  
 
 2 .         T{^pe~
T  
 
 wz^,gez^(WW I N 3 2 s^SNы	  
 
 1 .   # i n c l u d e   < i o s t r e a m . h >   
 
 2 .   i n t   m a i n ( i n t   a r g c ,   c h a r *   a r g v [ ] )   
 
 3 .   {   
 
 4 . 	 c h a r   s t r [ 1 0 ] ;   
 
 5 . 	 c h a r   * p S t r   =   s t r ;   
 
 6 . 	 c o u t   < <   s i z e o f ( s t r )   < <   e n d l ;   
 
 7 . 	 c o u t   < <   s i z e o f ( p S t r )   < <   e n d l ;   
 
 8 . 	 r e t u r n   0 ;   
 
 9 .   }   
 
 2 . 1 pe~
T
N/fc  
 
 bNHQegc pe~
T1\/fc vl(uSl0  
 
 f 0pe~
T
N/fc  
 
 GPpe~
T/fc  
 
 Rp S t r Ts t r /fc  
 
 V:N(WW I N 3 2 s^SNc^:N4   
 
 @bN,{6 LT,{7 LvQ^:N4   
 
 [E`Q/f,{6 LQ1 0 ,{7 LQ4   
 
 @bNGP
Nbzpe~
T
N/fc  
 
 2 . 2   pe~
T^y<Oc  
 
 
NbbN]~fNpe~
Tvnx
N/fcFO/fbNQwwz^v,{5 L0Lz^\pe~
TvcK<P~cُ>f_pe~
TSvnx/f*Nc  
 
 bN؏SNSspe~
T>f_PcvOP[  
 
 1 .   # i n c l u d e   < s t r i n g . h >   
 
 2 .   # i n c l u d e   < i o s t r e a m . h >   
 
 3 .   i n t   m a i n ( i n t   a r g c ,   c h a r *   a r g v [ ] )   
 
 4 .   {   
 
 5 . 	 c h a r   s t r 1 [ 1 0 ]   =   " I   L o v e   U " ;   
 
 6 . 	 c h a r   s t r 2 [ 1 0 ] ; 	   
 
 7 . 	 s t r c p y ( s t r 2 , s t r 1 ) ;   
 
 8 . 	 c o u t   < <   " s t r i n g   a r r a y   1 :   "   < <   s t r 1   < <   e n d l ;   
 
 9 . 	 c o u t   < <   " s t r i n g   a r r a y   2 :   "   < <   s t r 2   < <   e n d l ;   
 
 1 0 . 	 r e t u r n   0 ;   
 
 1 1 .   }   
 
 hQC ^Qpes t r c p y vQpeSb_-Nc~v$N*NSpe:Nc h a r WcbN(W(u-N O~[vtS/f$N*Npe~
TQpeQ  
 
 s t r i n g   a r r a y   1 :   I   L o v e   U   
 
 s t r i n g   a r r a y   2 :   I   L o v e   U   
 
 pe~
TQ N!k>f_Pc  
 
 e6qpe~
T
N/fc:NNHN0RYbpe~
TS_c(uN/fNNYz^XT_Qُ7hv~pe~
T;N	/f	
N/fcvc[	0  
 
 te*N NT<0  
 
 3 .         pe~
T'Yc[  
 
 HN/fc2pe~
T,g(vePNHQ~Q	N*N~  
 
 ( 1 ) pe~
TvQm(WNvQcN[SO/f Nypenc~gُypenc~g1\/fpe~  
 
 ( 2 ) pe~
TvY^(WNvQSNlbc:NcTvQcN[SOvcN/f N*Nc8^ϑ  
 
 ( 3 ) cTpe~vcR/fSY NySϑ{|W(WW I N 3 2 s^SN^:N4 	NNasT@wpe~vX[>e0W@W  
 
 3 . 1 pe~
TcN Nypenc~gpe~  
 
 s(WSNʑ:NNHN,{1 *Nz^,{6 LvQ:N1 0 v9hnc~1 pe~
Ts t r vQm:N Nypenc~gsS N*N^:N1 0 vc h a r Wpe~@bNs i z e o f ( s t r ) v~g:Nُ*Npenc~g`SncvQX['Y\1 0 W[0  
 
 Qw  
 
 1 .   i n t   i n t A r r a y [ 1 0 ] ;   
 
 2 .   c o u t   < <   s i z e o f ( i n t A r r a y )   ;   
 
 ,{2 LvQ~g:N4 0 teWpe~`SncvQX[zz'Y\	0  
 
 YgC / C + + z^SNُ7hQ  
 
 1 .   i n t [ 1 0 ]   i n t A r r a y ;   
 
 2 .   c o u t   < <   s i z e o f ( i n t A r r a y )   ;   
 
 bN1\f}vNi n t A r r a y [IN:Ni n t [ 1 0 ] ُypenc~gv N*N[OS`JUC / C + + vMRv^
N/ecُy[INe_0  
 
 3 . 2 pe~
TS\O:Nc8^ϑ  
 
 9hnc~2 pe~
TSNlbc:NcTvQcN[SOvc@bNz^1 -Nv,{5 Lpe~
TvcK<P~cz^2 ,{7 Lvc\pe~
T\O:Ncb_SSbz0  
 
 Nbvz^bzT  
 
 1 .   i n t   i n t A r r a y [ 1 0 ] ;   
 
 2 .   i n t A r r a y + + ;   
 
 SNыKNSsыQ0SV(WN}6qpe~
TSNlbc:NcTvQcN[SOvcFO/f[Sw\O N*Nc8^ϑ
NO9e0  
 
 c
N{/fcT~gSO0pe~؏/fW,gpenc{|Wvc
NS+TSYpenc~gvQm(WW I N 3 2 s^SNs i z e o f d\Ov~g/f4 0  
 
 zO~ck NNYz^XTvS N*N0Yz^XTN:Ns i z e o f /f N*NQpe[E
N[/f N*Nd\O&{
NǏvQO(ue_wwegvnx*YP N*NQpeN0Ss i z e o f ( i n t ) 1\SNfs i z e o f vnx
N/f N*NQpeV:NQpec~b_S N*NSϑ	NLu
Nl	g N*NC / C + + Qpec~ N*Npenc{|WYi n t 	:N b_S 0  
 
 3 . 3 penc
TS1YSvQpenc~gQm  
 
 0Ȓُ<ONNpe~
TT{^]~[JTWn㉳QFO/fs^YvVnb
NtSQ!kcwljm0wNb Nkz^  
 
 1 .   # i n c l u d e   < i o s t r e a m . h >   
 
 2 .   v o i d   a r r a y T e s t ( c h a r   s t r [ ] )   
 
 3 .   {   
 
 	 4 .   c o u t   < <   s i z e o f ( s t r )   < <   e n d l ;   
 
 5 .   }   
 
 6 .   i n t   m a i n ( i n t   a r g c ,   c h a r *   a r g v [ ] )   
 
 7 .   {   
 
 	 8 .   c h a r   s t r 1 [ 1 0 ]   =   " I   L o v e   U " ;   
 
 	 9 .   a r r a y T e s t ( s t r 1 ) ;   
 
 	 1 0 .   r e t u r n   0 ;   
 
 1 1 .   }   
 
 z^vQ~g:N4 0
NS'T  
 
 4  N*NS`vpeW[MRb]~c0RvQ:Ncv^!   
 
 ~1 cQpenc
TQm:Npe~ُypenc~g(Wa r r a y T e s t QpeSOQs t r /fpe~
T:NNHNs i z e o f v~gtS/fcv^ُ/fV:N  
 
 ( 1 ) pe~
T\O:NQpeb_Se(WQpeSOQvQ1YSN,gvQmNNS/f N*Nc  
 
 ( 2 ) _Wa(W1YSvQQmvTe[؏1YSNvQ8^ϑyr'`SN\OꁞX0QI{d\OSNO9e0  
 
 @bNpenc
T\O:NQpeb_SevQhQbl=:N N*Nnfc[v5eNeR:YbN N*N0W0WSSvSb	g4 *NW[vs^l0  
 
 N
N1\/f~4 0  
 
 4 .         ~  
 
 ,geNSb4xl0R^vc"}|^y(upekz^[ONpenc
TTcv:S+R0  
 
  gT{Q!khmmv^g?abTbvTS-NNYwckN(Navxvz`^egw` _S-Nvُ7hMb(WbN-NNu'Y^~vz^XTv~v _SfNM|0k!kb@wV<P[v _SfNM|bN
NMQSQُ7hvahabN=T*Y܏N0  
 
 
 
 C / C + + z^XT^X8^bՋmeQVRg( 1 )   
 
 \O[[NS    e - m a i l : 2 1 c n b a o @ 2 1 c n . c o m         QYoNb  
 
 1 . _   
 
 ,gevQ\Ovvv^
N(WNcOC / C + + z^XTBlLbՋc[e(WNb/g
NRgbՋvQm0e-Nv'YYpebՋegT'Y[WRՋT{_NSNQSva0  
 
 YbՋw<O{UStS mSvW,gRMb~Q[vT{0ONBlbՋQ N*N g{USvs t r c p y QpeSwQbՋ(Wb/g
Nvzz0RN`7hvz^bNwckQ}Y N*Ns t r c p y QpeTbNɉ_]S/fbNQQvs t r c p y _SSb0R1 0 R-Nv2 R0SN,gew0Rs t r c p y QpeN2 R0R1 0 RT{vOP[ww]^\NNHN7hvB\!k0dkY؏	g NNbՋgbՋOewcv`~R0  
 
 RgُNbՋ,gS+T_:_vsT'`\O:N N
TxSNXTǏ[ُNbՋvmeQVRgRSۏ NekX:_ꁫvQR0  
 
 2 . ~b  
 
 Ջ  
 
 v o i d   t e s t 1 ( )   
 
 {   
 
       c h a r   s t r i n g [ 1 0 ] ;   
 
       c h a r *   s t r 1   =   " 0 1 2 3 4 5 6 7 8 9 " ;   
 
 	 s t r c p y (   s t r i n g ,   s t r 1   ) ;   
 
 }   
 
 Ջ2   
 
 v o i d   t e s t 2 ( )   
 
 {   
 
       c h a r   s t r i n g [ 1 0 ] ,   s t r 1 [ 1 0 ] ;   
 
 	 i n t   i ;   
 
 	 f o r ( i = 0 ;   i < 1 0 ;   i + + )   
 
 	 {   
 
                 s t r 1 [ i ]   =   ' a ' ;   
 
 	 }   
 
 	 s t r c p y (   s t r i n g ,   s t r 1   ) ;   
 
 }   
 
 Ջ3   
 
 v o i d   t e s t 3 ( c h a r *   s t r 1 )   
 
 {   
 
       c h a r   s t r i n g [ 1 0 ] ;   
 
       i f (   s t r l e n (   s t r 1   )   < =   1 0   )   
 
 	 {   
 
 	 	 s t r c p y (   s t r i n g ,   s t r 1   ) ;   
 
 	 }   
 
 }   
 
 T{  
 
 Ջ1 W[&{2Ns t r 1  1 1 *NW[MbX[>eNSb+g>\v \ 0  	s t r i n g S	g1 0 *NW[vzzs t r c p y O[pe~Lu
 
 [Ջ2 YgbՋcQW[&{pe~s t r 1 
N(Wpe~Q~_gSN~3 RYgbՋcQs t r c p y ( s t r i n g ,   s t r 1 ) (uO_Ns t r 1 QX[w
Y6R0Rs t r i n g QX[w@b
Y6RvW[pewQ	g
Nnx['`SN~7 R(WdkW@x
NcQ^Qpes t r c p y ]\Oe_v~1 0 R
 
 [Ջ3 i f ( s t r l e n ( s t r 1 )   < =   1 0 ) ^9e:Ni f ( s t r l e n ( s t r 1 )   <   1 0 ) V:Ns t r l e n v~g*g~ \ 0  @b`S(uv1 *NW[0
 
 VRg  
 
 g[W,gRvcc
 
 1 	W[&{2NN \ 0  ~>\
 
 	[pe~LubcvOea^
 
 	^Qpes t r c p y v]\Oe_YgQ N*NhQs t r c p y Qpev;`R<P:N1 0 Nb~QQ*N
NT_RvT{Hh
 
 2 R  
 
 v o i d   s t r c p y (   c h a r   * s t r D e s t ,   c h a r   * s t r S r c   )   
 
 {   
 
  0  w h i l e (   ( * s t r D e s t + +   =   *   s t r S r c + + )   ! =    \ 0    ) ;   
 
 }   
 
 4 R  
 
 v o i d   s t r c p y (   c h a r   * s t r D e s t ,   c o n s t   c h a r   * s t r S r c   )       
 
 / / \nW[&{2NRc o n s t hfvQ:NeQSpeR2 R  
 
 {   
 
  0  w h i l e (   ( * s t r D e s t + +   =   *   s t r S r c + + )   ! =    \ 0    ) ;   
 
 }   
 
 7 R  
 
 v o i d   s t r c p y ( c h a r   * s t r D e s t ,   c o n s t   c h a r   * s t r S r c )     
 
 {   
 
 / / [n0W@WTvv0W@WR^0 e R3 R  
 
  0a s s e r t (   ( s t r D e s t   ! =   N U L L )   & &   ( s t r S r c   ! =   N U L L )   ) ;   
 
  0w h i l e (   ( * s t r D e s t + +   =   *   s t r S r c + + )     ! =      \ 0    ) ;   
 
 }   
 
 1 0 R  
 
 / / :NN[s_d\O\vv0W@WԏVR3 R  
 
 c h a r   *   s t r c p y (   c h a r   * s t r D e s t ,   c o n s t   c h a r   * s t r S r c   )     
 
 {   
 
  0a s s e r t (   ( s t r D e s t   ! =   N U L L )   & &   ( s t r S r c   ! =   N U L L )   ) ;   
 
     c h a r   * a d d r e s s   =   s t r D e s t ;       
 
  0w h i l e (   ( * s t r D e s t + +   =   *   s t r S r c + + )   ! =    \ 0    ) ;   
 
     r e t u r n   a d d r e s s ;   
 
 }   
 
 N2 R0R1 0 RvQ*NT{HhbNSNnZivw0R\\vs t r c p y z6qfυ@wُHNYs:gw
N/fvv YHNNb[vW,gRMbQ N*N[vs t r c p y JU  
 
 	[s t r l e n vcc[l	gSbW[&{2N+g>\v' \ 0 ' 0
 
 wN
NTR<Pvs t r c p y Hr,g^_NSNQQ N*N1 0 Rvs t r l e n QpeN[vHr,g:N
 
 i n t   s t r l e n (   c o n s t   c h a r   * s t r   )         / / eQSpec o n s t   
 
 {   
 
 	 a s s e r t (   s t r t   ! =   N U L L   ) ;         / / e W[&{2N0W@W^0   
 
 	 i n t   l e n ;   
 
 	 w h i l e (   ( * s t r + + )   ! =   ' \ 0 '   )   
 
 	 {     
 
 	 	 l e n + + ;   
 
 	 }   
 
 	 r e t u r n   l e n ;   
 
 } 
 
 Ջ4 
 
 v o i d   G e t M e m o r y (   c h a r   * p   )   
 
 {   
 
 p   =   ( c h a r   * )   m a l l o c (   1 0 0   ) ;   
 
 }   
 
 v o i d   T e s t (   v o i d   )   
 
 {   
 
 c h a r   * s t r   =   N U L L ;   
 
 G e t M e m o r y (   s t r   ) ;   
 
 s t r c p y (   s t r ,   " h e l l o   w o r l d "   ) ;   
 
 p r i n t f (   s t r   ) ;   
 
 }   
 
 Ջ5 
 
 c h a r   * G e t M e m o r y (   v o i d   )   
 
 {   	   
 
 	 c h a r   p [ ]   =   " h e l l o   w o r l d " ; 	   
 
 	 r e t u r n   p ; 	   
 
 }   
 
 v o i d   T e s t (   v o i d   )   
 
 { 	   
 
 	 c h a r   * s t r   =   N U L L ; 	   
 
 	 s t r   =   G e t M e m o r y ( ) ;   	   
 
 	 p r i n t f (   s t r   ) ; 	   
 
 }   
 
 Ջ6   
 
 v o i d   G e t M e m o r y (   c h a r   * * p ,   i n t   n u m   )   
 
 {   
 
 	 * p   =   ( c h a r   * )   m a l l o c (   n u m   ) ;   
 
 }   
 
 v o i d   T e s t (   v o i d   )   
 
 {   
 
 	 c h a r   * s t r   =   N U L L ;   
 
 	 G e t M e m o r y (   & s t r ,   1 0 0   ) ;   
 
 	 s t r c p y (   s t r ,   " h e l l o "   ) ;   
 
 	 p r i n t f (   s t r   ) ;   
 
 }   
 
 Ջ7   
 
 v o i d   T e s t (   v o i d   )   
 
 {   
 
 	 c h a r   * s t r   =   ( c h a r   * )   m a l l o c (   1 0 0   ) ;   
 
 	 s t r c p y (   s t r ,   " h e l l o "   ) ;   
 
 	 f r e e (   s t r   ) ;   
 
 	 . . .     / / weuvvQ[S  
 
 }   
 
 T{  
 
 Ջ4  OeQ-NG e t M e m o r y (   c h a r   * p   ) Qpevb_S:NW[&{2Nc(WQpeQO9eb_Sv^
Nwckv9eS OeQb_Sv<PgbL[
 
 c h a r   * s t r   =   N U L L ;   
 
 G e t M e m o r y (   s t r   ) ;   
 
 Tvs t r N6q:NN U L L 
 
 Ջ5 -N
 
 	 c h a r   p [ ]   =   " h e l l o   w o r l d " ; 	   
 
 	 r e t u r n   p ; 	   
 
 vp [ ] pe~:NQpeQv@\ꁨRSϑ(WQpeԏVTQX[]~ʑ>e0ُ/fYz^XT8^rvvQ9hn(WN
NtSϑvuX[g0  
 
 Ջ6 vG e t M e m o r y MQNՋ4 v OeQG e t M e m o r y vSpe:NW[&{2NcvcFO/f(WG e t M e m o r y -NgbL3uQX[SK<PS
 
 * p   =   ( c h a r   * )   m a l l o c (   n u m   ) ;   
 
 T*g$ReQX[/f&T3ubR^R
N
 
 i f   (   * p   = =   N U L L   )   
 
   {   
 
       . . . / / ۏL3uQX[1Y%Yt  
 
  0}   
 
 Ջ7 X[(WNՋ6 T7hv(WgbL
 
 c h a r   * s t r   =   ( c h a r   * )   m a l l o c ( 1 0 0 ) ;   
 
 T*gۏLQX[/f&T3ubRv$ReSY(Wf r e e ( s t r ) T*gns t r :Nzz[SSb N*N Α c^R
N
 
 s t r   =   N U L L ;   
 
 Ջ6 vT e s t Qpe-N_N*g[m a l l o c vQX[ۏLʑ>e0
 
 VRg  
 
 Ջ4 ^7 gbՋ[QX[d\Ovtz^W,gRNb[vbՋ N,cknxvVT{vQ-N5 0 ~ 6 0 v0FO/f[hQT{cknxtS_N~^fN0
 
 [QX[d\Ovg;NƖ-N(W
 
 1 	cvt
 
 2 	SϑvuX[gS\O(uV
 
 3 	o}YvR`QX[3uTʑ>e`N`0
 
 (WwwNbv Nkz^	gNHN
 
 s w a p (   i n t *   p 1 , i n t *   p 2   )   
 
 {   
 
 	 i n t   * p ;   
 
 	 * p   =   * p 1 ;   
 
 	 * p 1   =   * p 2 ;   
 
 	 * p 2   =   * p ;   
 
 }   
 
 (Ws w a p Qpe-Np /f N*N Α c	gScT|~:S[z^ЏLv)]n0(WV C + + -ND E B U G ЏLec:y A c c e s s   V i o l a t i o n  0z^^9e:N
 
 s w a p (   i n t *   p 1 , i n t *   p 2   )   
 
 {   
 
 	 i n t   p ;   
 
 	 p   =   * p 1 ;   
 
 	 * p 1   =   * p 2 ;   
 
 	 * p 2   =   p ;   
 
 } 
 
 
 
 
 
 C / C + + z^XT^X8^bՋmeQVRg( 2 )   
 
 \O[[NS    e - m a i l : 2 1 c n b a o @ 2 1 c n . c o m         QYoNb
 
 3 . QR  
 
 Ջ1 R+R~QB O O L i n t f l o a t cSϑ  N <P kv  i f   SGPSϑ
T:Nv a r 	
 
 T{  
 
 B O O L WSϑi f ( ! v a r ) 
 
 i n t WSϑ      i f ( v a r = = 0 ) 
 
 f l o a t WSϑ
 
 c o n s t   f l o a t   E P S I N O N   =   0 . 0 0 0 0 1 ; 
 
 i f   ( ( x   > =   -   E P S I N O N )   & &   ( x   < =   E P S I N O N ) 
 
 cSϑ 0 0i f ( v a r = = N U L L ) 
 
 VRg  
 
 g[0 <P$Rev QR B O O L WSϑv0 $Re[hQSNQbi f ( v a r = = 0 ) i n t WSϑ_NSNQbi f ( ! v a r ) cSϑv$Re_NSNQbi f ( ! v a r ) 
NQl}6qz^cknxЏLFO/f*gnpf0Whz^va`0
 
  N,vYg`i f $Re N*NSϑv w 0 GP ^vcO(ui f ( v a r ) 0i f ( ! v a r ) hfvQ:N ; $ReYg(ui f $Re N*Npe<PWSϑ( s h o r t 0i n t 0l o n g I{) ^(ui f ( v a r = = 0 ) hf/fN0 ۏL pe<P 
Nvk$RecR[(ui f ( v a r = = N U L L ) ُ/f Ny_}Yvz`N`0
 
 nmpWSϑv^
N|nx@bN
NS\f l o a t Sϑ(u = =  b =  NpeW[k^勾llSb > =  b < =  b__0YgQbi f   ( x   = =   0 . 0 ) R$R:N_0 R0
 
 Ջ2 NN:NW i n d o w s   N T Nv3 2 MOC + + z^{s i z e o f v<P
 
 v o i d   F u n c   (   c h a r   s t r [ 1 0 0 ]   )   
 
 {   
 
 	 s i z e o f (   s t r   )   =   ?   
 
 }   
 
 v o i d   * p   =   m a l l o c (   1 0 0   ) ; 
 
 s i z e o f   (   p   )   =   ? 
 
 T{  
 
 s i z e o f (   s t r   )   =   4 
 
 s i z e o f   (   p   )   =   4 
 
 VRg  
 
 F u n c   (   c h a r   s t r [ 1 0 0 ]   ) Qpe-Npe~
T\O:NQpeb_Se(WQpeSOQpe~
T1YSN,gvQmNNS/f N*Nc(W1YSvQQmvTe[؏1YSNvQ8^ϑyr'`SN\OꁞX0QI{d\OSNO9e0  
 
 pe~
Tv,g(YN  
 
 1 	pe~
TcN Nypenc~gُypenc~g1\/fpe~  
 
 OY  
 
 c h a r   s t r [ 1 0 ] ;   
 
 c o u t   < <   s i z e o f ( s t r )   < <   e n d l ;   
 
       Q~g:N1 0 s t r cNpenc~gc h a r [ 1 0 ] 0  
 
 2 	pe~
TSNlbc:NcTvQcN[SOvcN/f N*Nc8^ϑ
N\OꁞX0QI{d\O
NO9e  
 
 c h a r   s t r [ 1 0 ] ;   
 
 s t r + + ;       / / ыQc:ys t r 
N/f]<P 0  
 
 3 	pe~
T\O:NQpeb_Sel:Nnfc0  
 
 W i n d o w s   N T   3 2 MOs^SNcv^`S(uQX[v'Y\	:N4 W[Ees i z e o f (   s t r   )   0
 
 s i z e o f   (   p   )   :N4 0
 
 Ջ3 Q N*N hQ [M I N ُ*N[eQ$N*NSpev^ԏV\v N*N0SYS_`OQNbvNxeOSuNHNN  
 
                     l e a s t   =   M I N ( * p + + ,   b ) ;   
 
 T{  
 
 # d e f i n e   M I N ( A , B )         ( ( A )   < =     ( B )   ?   ( A )   :   ( B ) )   
 
 M I N ( * p + + ,   b ) ONu[voR\O(u  
 
 VRg  
 
 ُ*NbՋ;NgbՋ[[[INvO(u[[INSN[s{|<ONQpevRFO/f[~R_
N/fQpe[[IN-Nb'_-Nv Spe _N
N/fwvSpe(W[U\ _veP[ Spe ۏLv/f N[ Nvfbc0
 
 z^XT[[[INvO(u^8^\_yr+Rla$N*N
 
 1 	(Na0W\[[IN-Nv Spe Tte*N[(u(ub'_bweg0@bN%N<h0WNT{
 
 # d e f i n e   M I N ( A , B )         ( A )   < =     ( B )   ?   ( A )   :   ( B )   
 
 # d e f i n e   M I N ( A , B )         ( A   < =     B   ?   A   :   B   )   
 
 ^$R0 R  
 
 2 	2bk[voR\O(u0
 
 [[IN# d e f i n e   M I N ( A , B )       ( ( A )   < =     ( B )   ?   ( A )   :   ( B ) ) [M I N ( * p + + ,   b ) v\O(u~g/f  
 
 ( ( * p + + )   < =     ( b )   ?   ( * p + + )   :   ( * p + + ) )   
 
 ُ*Nh_ONuoR\O(ucp O\O	N!k+ + ꁞXd\O0
 
 ddkKNYS N*N^$R0 RvT{/f  
 
 # d e f i n e   M I N ( A , B )         ( ( A )   < =     ( B )   ?   ( A )   :   ( B ) ) ;     
 
 ُ*NT{(W[[INvTbR ;  >f:yQ[[vi_!j|
NnSe`0W$R0 Rv^bՋ[mpl0  
 
 Ջ4 :NNHNhQ4YeN	g{|<ONNv~g  
 
       # i f n d e f   _ _ I N C v x W o r k s h   
 
       # d e f i n e   _ _ I N C v x W o r k s h   
 
       # i f d e f   _ _ c p l u s p l u s   
 
       e x t e r n   " C "   {   
 
       # e n d i f   
 
       / * . . . * /   
 
       # i f d e f   _ _ c p l u s p l u s   
 
       }   
 
       # e n d i f   
 
       # e n d i f   / *   _ _ I N C v x W o r k s h   * /   
 
       T{  
 
 4YeN-Nvы[
 
 # i f n d e f  0_ _ I N C v x W o r k s h   
 
 # d e f i n e  0_ _ I N C v x W o r k s h   
 
 # e n d i f   
 
 v\O(u/f2bk͑
Y_(u0
 
 \O:N NybT[av C + + /ecQpe͑}Ǐz_ C R
N/ec0QpeC + + ыT(Ws y m b o l ^-Nv
TW[NC  v
NT0OYGPg*NQpevSW:N  
 
 v o i d   f o o ( i n t   x ,   i n t   y ) ;   
 
 QpeC ыhVыT(Ws y m b o l ^-Nv
TW[:N_ f o o C + + ыhVRONuP_ f o o _ i n t _ i n t KN{|v
TW[0_ f o o _ i n t _ i n t ُ7hv
TW[S+TNQpe
TTQpeSpepeϑS{|WOo`C + + 1\/fُy:g6Reg[sQpe͑}v0  
 
 :NN[sC TC + + vmTzC + + cONC ޏcNbcc[&{Se x t e r n   " C " eg㉳Q
TW[9SMQpeXfMRR
Ne x t e r n   " C " TRыhV1\O	cgqC  ve_\Qpeы:N_ f o o ُ7hC  -N1\SN(uC + + vQpeN0
 
 Ջ5 Q N*NQpe\O(u/fb N*Nc h a r ~bvW[&{2N_sSyn *N0kYSeg/f a b c d e f g h i  Ygn = 2 yMOT^/f h i a b c d e f g h    
 
 Qpe4Y/fُ7hv  
 
 / / p S t r /fcTN' \ 0 ' ~>\vW[&{2Nvc  
 
 / / s t e p s /fBlyRvn   
 
 v o i d   L o o p M o v e   (   c h a r   *   p S t r ,   i n t   s t e p s   )   
 
 {   
 
 / / kXEQ. . .   
 
 }   
 
 T{  
 
 cknxT{1 
 
 v o i d   L o o p M o v e   (   c h a r   * p S t r ,   i n t   s t e p s   )   
 
 {   
 
         i n t   n   =   s t r l e n (   p S t r   )   -   s t e p s ;   
 
         c h a r   t m p [ M A X _ L E N ] ; 	   
 
         s t r c p y   (   t m p ,   p S t r   +   n   ) ; 	   
 
         s t r c p y   (   t m p   +   s t e p s ,   p S t r ) ; 	   
 
         * (   t m p   +   s t r l e n   (   p S t r   )   )   =   ' \ 0 ' ;   
 
         s t r c p y (   p S t r ,   t m p   ) ;   
 
 }   
 
 cknxT{2 
 
 v o i d   L o o p M o v e   (   c h a r   * p S t r ,   i n t   s t e p s   )   
 
 {   
 
         i n t   n   =   s t r l e n (   p S t r   )   -   s t e p s ;   
 
         c h a r   t m p [ M A X _ L E N ] ; 	   
 
         m e m c p y (   t m p ,   p S t r   +   n ,   s t e p s   ) ;   	   
 
         m e m c p y ( p S t r   +   s t e p s ,   p S t r ,   n   ) ; 	   
 
         m e m c p y ( p S t r ,   t m p ,   s t e p s   ) ; 	   
 
 } 
 
 VRg  
 
 ُ*NՋ;NgbՋ[hQ^Qpevq~z^(W veP_(u^QpeSN_'Yz^
N{Sz^Qv]\Oϑ0
 
  gA~O(uv^QpeSb
 
 1 	              s t r c p y 
 
 2 	              m e m c p y 
 
 3 	              m e m s e t 
 
 Ջ6 ]wW A V eN<h_YNhSb _ N*NW A V eNNS_vpenc~g~~W A V eN4Yv^㉐gW A V <h_vTyOo`0  
 
 W A V E eN<h_fh  
 
  0  	 OPy0W@W  	 W[pe  	 penc{|W  	 Q      [  
 
   
 
 eN4Y  	 0 0 H   	 4   	 C h a r   	 " R I F F " h_  
 
 	 0 4 H   	 4   	 i n t 3 2   	 eN^  
 
 	 0 8 H   	 4   	 C h a r   	 " W A V E " h_  
 
 	 0 C H   	 4   	 C h a r   	 " f m t " h_  
 
 	 1 0 H   	 4   	   	 Ǐ!nW[
N[	  
 
 	 1 4 H   	 2   	 i n t 1 6   	 <h_{|+R  
 
 	 1 6 H   	 2   	 i n t 1 6   	 Spe  
 
 	 1 8 H   	 2   	 i n t 1 6   	 Ǒ7hsky7h,gpe	h:yk*NSvd>e^  
 
 	 1 C H   	 4   	 i n t 3 2   	 lb_󗑘penc Os  
 
 	 2 0 H   	 2   	 i n t 1 6   	 pencWWvtepe	cW[{v	  
 
 	 2 2 H   	 2   	   	 k7h,gvpencMOpe  
 
 	 2 4 H   	 4   	 C h a r   	 pench&{d a t a   
 
 	 2 8 H   	 4   	 i n t 3 2   	 pencv^  
 
 T{  
 
 \W A V eN<h_[IN:N~gSOW A V E F O R M A T   
 
 t y p e d e f   s t r u c t   t a g W a v e F o r m a t   
 
 { 	   
 
 	 	 c h a r   c R i f f F l a g [ 4 ] ; 	   
 
 	 	 U I N 3 2   n F i l e L e n ; 	   
 
 	 	 c h a r   c W a v e F l a g [ 4 ] ; 	   
 
 	 	 c h a r   c F m t F l a g [ 4 ] ; 	   
 
 	 	 c h a r   c T r a n s i t i o n [ 4 ] ; 	   
 
 	 	 U I N 1 6   n F o r m a t T a g   ; 	   
 
 	 	 U I N 1 6   n C h a n n e l s ; 	   
 
 	 	 U I N 1 6   n S a m p l e s P e r S e c ; 	   
 
 	 	 U I N 3 2   n A v g B y t e s p e r S e c ; 	   
 
 	 	 U I N 1 6   n B l o c k A l i g n ; 	   
 
 	 	 U I N 1 6   n B i t N u m P e r S a m p l e ; 	   
 
 	 	 c h a r   c D a t a F l a g [ 4 ] ; 	   
 
 	 	 U I N 1 6   n A u d i o L e n g t h ; 	   
 
 }   W A V E F O R M A T ;   
 
 GPW A V eNQ[QTX[>e(Wcb u f f e r  _YvQX[USCQQRRgeN<h_vNx_{US:N  
 
 W A V E F O R M A T     w a v e F o r m a t ;   
 
 m e m c p y (   & w a v e F o r m a t ,   b u f f e r , s i z e o f (   W A V E F O R M A T   )   ) ;   
 
 vcǏw a v e F o r m a t vbXT1\SN_yr[W A V eNvTy<h_Oo`0  
 
 VRg  
 
 Ջ6 gbՋ~~penc~gvR	g~vz^\^\N N*NteSOvpencbXT~~:N N*N~gSO)R(uc{|WlbcSN\m e m c p y 0m e m s e t I{Qpevc(uN~gSO0W@WۏL~gSOvteSOd\O0
 
 Ǐُ*NSNwQbՋvz^~/f&T0N[0
 
 Ջ7 Q{|S t r i n g vg Qpe0ggQpeTK<PQpe]w{|S t r i n g vSW:N
 
 c l a s s   S t r i n g   
 
 { 	   
 
 p u b l i c : 	   
 
 	 S t r i n g ( c o n s t   c h a r   * s t r   =   N U L L ) ;   / /   nfg Qpe	   
 
 	 S t r i n g ( c o n s t   S t r i n g   & o t h e r ) ;   / /   bg Qpe	   
 
 	 ~   S t r i n g ( v o i d ) ;   / /   ggQpe	   
 
 	 S t r i n g   &   o p e r a t e   = ( c o n s t   S t r i n g   & o t h e r ) ;   / /   K<PQpe	   
 
 p r i v a t e : 	   
 
 	 c h a r   * m _ d a t a ;   / /   (uNOX[W[&{2N	   
 
 } ;   
 
 T{  
 
 / / nfg Qpe  
 
 S t r i n g : : S t r i n g ( c o n s t   c h a r   * s t r )   
 
 {   
 
 	 	 i f ( s t r = = N U L L )   
 
 	 	 {   
 
 	 	 	 m _ d a t a   =   n e w   c h a r [ 1 ] ;   / /   _Rp[zzW[&{2NꁨR3uX[>e~_gh_' \ 0 ' vzz  
 
   	 	 	 	 	 	      0/ / RRp[m _ d a t a RN U L L   $Re  
 
 	 	 	 * m _ d a t a   =   ' \ 0 ' ;   
 
   	 } 	   
 
 	 	 e l s e   
 
 	 	 {   
 
 	 	 i n t   l e n g t h   =   s t r l e n ( s t r ) ;   
 
 	 	 m _ d a t a   =   n e w   c h a r [ l e n g t h + 1 ] ;   / /   R  N U L L   $ReRf}Y  
 
 	 	 s t r c p y ( m _ d a t a ,   s t r ) ;   
 
 	 	 }   
 
 }   
 
 / /   S t r i n g vggQpe  
 
 S t r i n g : : ~ S t r i n g ( v o i d )   
 
 {   
 
   	 d e l e t e   [ ]   m _ d a t a ;   / /   bd e l e t e   m _ d a t a ;   
 
 }   
 
 / / bg Qpe  
 
 S t r i n g : : S t r i n g ( c o n s t   S t r i n g   & o t h e r )    0 0 0/ /   _RpeQSpe:Nc o n s t W  
 
 {   	   
 
 	 	 i n t   l e n g t h   =   s t r l e n ( o t h e r . m _ d a t a ) ;   	   
 
 	 	 m _ d a t a   =   n e w   c h a r [ l e n g t h + 1 ] ;    0 0 0 0/ / RRp[m _ d a t a RN U L L   $Re  
 
 	 	 s t r c p y ( m _ d a t a ,   o t h e r . m _ d a t a ) ;   	   
 
 }   
 
 / / K<PQpe  
 
 S t r i n g   &   S t r i n g : : o p e r a t e   = ( c o n s t   S t r i n g   & o t h e r )   / /   _RpeQSpe:Nc o n s t W  
 
 {   	   
 
 	 	 i f ( t h i s   = =   & o t h e r ) 	 	 	  0 0/ / _RphgK<P  
 
 	 	 	 r e t u r n   * t h i s ; 	   
 
 	 	 d e l e t e   [ ]   m _ d a t a ; 	 	  0 0 0 0/ / _Rpʑ>eS	gvQX[Dn  
 
 	 	 i n t   l e n g t h   =   s t r l e n (   o t h e r . m _ d a t a   ) ;   	   
 
 	 	 m _ d a t a   =   n e w   c h a r [ l e n g t h + 1 ] ;    0/ / RRp[m _ d a t a RN U L L   $Re  
 
 	 	 s t r c p y (   m _ d a t a ,   o t h e r . m _ d a t a   ) ; 	   
 
 	 	 r e t u r n   * t h i s ; 	  0 0 0 0 0 0 0 0/ / _RpԏV,g[av_(u  
 
 }   
 
 VRg  
 
 YQnxe0WQQS t r i n g {|vg Qpe0bg Qpe0K<PQpeTggQpevbՋ\]~wQYNC + + W,gRv6 0 % N
N
 
 (Wُ*N{|-NSbNc{|bXTSϑm _ d a t a S_{|-NSbc{|bXTSϑe N[͑}vQbg Qpe0K<PQpeTggQpeُe/f[C + + z^XTvW,gBl_N/f
0E f f e c t i v e  0C + + 0-Nyr+R:_vag>k0
 
 N~f[`Nُ*N{|yr+RlaRlʑv_RpTRRpvaINُ7h1\wQYN6 0 % N
NvC + + W,gR
 
 Ջ8 Qs t a t i c Tc o n s t sQ.W[=\SYv\O(u
 
 T{  
 
 s t a t i c sQ.W[\	gNRn *N\O(u
 
 1 	QpeSOQs t a t i c Sϑv\O(uV:NQpeSO
NTNa u t o SϑSϑvQX[SRM N!kVdkvQ<P(WN!k(ueN~c
N!kv<P
 
 2 	(W!jWWQvs t a t i c hQ@\SϑSN!jWWQ@b(uQpeFO
N!jWWYvQ[Qpe
 
 3 	(W!jWWQvs t a t i c QpeSSُ N!jWWQvvQ[Qpe(uُ*NQpevO(uVP6R(WXf[v!jWWQ
 
 4 	(W{|-Nvs t a t i c bXTSϑ^\Nte*N{|@bb	g[{|v@b	g[aS	g NNb
 
 5 	(W{|-Nvs t a t i c bXTQpe^\Nte*N{|@bb	gُ*NQpe
Nc6et h i s cVS{|vs t a t i c bXTSϑ0
 
 c o n s t sQ.W[\	gNRn *N\O(u
 
 1 	2k;bk N*NSϑ9eSSNO(uc o n s t sQ.W[0(W[INc o n s t Sϑe8^ [[ۏLRYSV:NNT1\l	g:gOQS9eS[N
 
 2 	[cegSNc[c,g:Nc o n s t _NSNc[c@bcvpenc:Nc o n s t bNTec[:Nc o n s t 
 
 3 	(W N*NQpeXf-Nc o n s t SNOpb_Shf[/f N*NeQSpe(WQpeQ
N9eSvQ<P
 
 4 	[N{|vbXTQpec[vQ:Nc o n s t {|WRhfvQ/f N*N8^Qpe
NO9e{|vbXTSϑ
 
 5 	[N{|vbXTQpe	geP_{c[vQԏV<P:Nc o n s t {|WNO_vQԏV<P
N:N ]<P 0OY
 
 c o n s t   c l a s s A   o p e r a t o r * ( c o n s t   c l a s s A &   a 1 , c o n s t   c l a s s A &   a 2 ) ;   
 
 o p e r a t o r * vԏV~g_{/f N*Nc o n s t [a0Yg
N/fُ7hvS`Nx_N
NOыQ
 
 c l a s s A   a ,   b ,   c ;   
 
 ( a   *   b )   =   c ;   / /   [a * b v~gK<P  
 
 d\O( a   *   b )   =   c >f6q
N&{TzvRw_Nl	gNUOaIN0  
 
 VRg  
 
 `T\\vs t a t i c Tc o n s t E\6q	gُHNYRbNVT{Q*NYgSVT{1 ~ 2 *N؏w_sQQ}Y}YOpOp0
 
 ُ*NSNgbՋ[z^wƋvccz^/fR~0-N~؏/fkmeQl	g N[vwƋ^^Tm^
NS[ُ*N~QhQbvT{0'YYpeNSVT{Qs t a t i c Tc o n s t sQ.W[vRR0
 
 4 . b]  
 
 Ջ1 Q N*NC QpeYthV/fB i g _ e n d i a n vRԏV0 /fL i t t l e _ e n d i a n vRԏV1 
 
 T{  
 
 i n t   c h e c k C P U ( )   
 
 {   
 
 	 {   
 
 	 	 u n i o n   w   
 
 	 	 {       
 
 	 	 	 i n t     a ;   
 
 	 	 	 c h a r   b ;   
 
 	 	 }   c ;   
 
 	 	 c . a   =   1 ;   
 
 	 	 r e t u r n   ( c . b   = =   1 ) ;   
 
 	 }   
 
 }   
 
 VRg  
 
 L]eQ_|~ _S^[L i t t l e - e n d i a n TB i g - e n d i a n !j_^8^N0Ǒ(uL i t t l e - e n d i a n !j_vC P U [d\OpevX[>ee_/fNNOW[0RؚW[B i g - e n d i a n !j_[d\OpevX[>ee_/fNؚW[0RNOW[0OY1 6 b i t [vpe0 x 1 2 3 4 (WL i t t l e - e n d i a n !j_C P U QX[-NvX[>ee_GPN0W@W0 x 4 0 0 0  _YX[>e	:N
 
 QX[0W@W	 0 x 4 0 0 0 	 0 x 4 0 0 1 
 
 X[>eQ[	 0 x 3 4 	 0 x 1 2 
 
 (WB i g - e n d i a n !j_C P U QX[-NvX[>ee_R:N
 
 QX[0W@W	 0 x 4 0 0 0 	 0 x 4 0 0 1 
 
 X[>eQ[	 0 x 1 2 	 0 x 3 4 
 
 3 2 b i t [vpe0 x 1 2 3 4 5 6 7 8 (WL i t t l e - e n d i a n !j_C P U QX[-NvX[>ee_GPN0W@W0 x 4 0 0 0  _YX[>e	:N
 
 QX[0W@W	 0 x 4 0 0 0 	 0 x 4 0 0 1 	 0 x 4 0 0 2 	 0 x 4 0 0 3 
 
 X[>eQ[	 0 x 7 8 	 0 x 5 6 	 0 x 3 4 	 0 x 1 2 
 
 (WB i g - e n d i a n !j_C P U QX[-NvX[>ee_R:N
 
 QX[0W@W	 0 x 4 0 0 0 	 0 x 4 0 0 1 	 0 x 4 0 0 2 	 0 x 4 0 0 3 
 
 X[>eQ[	 0 x 1 2 	 0 x 3 4 	 0 x 5 6 	 0 x 7 8 
 
 TTSOu n i o n vX[>ez^/f@b	gbXTNNO0W@W _YX[>ebՋvT{)R(uyr'`{~g0W_NC P U [QX[Ǒ(uL i t t l e - e n d i a n ؏/fB i g - e n d i a n !j_Q0YgS_:W~Qُ*NT{{v1\/f N*N)YMbvz^XT0
 
 Ջ2 Q N*NQpeԏV1 + 2 + 3 + & + n v<PGP[~g
NOǏteWSϑvV	  
 
 T{  
 
 i n t   S u m (   i n t   n   )   
 
 {   
 
 	 r e t u r n     (   ( l o n g ) 1   +   n )   *   n   /   2 ;  0 0/ / br e t u r n     ( 1 l   +   n )   *   n   /   2 ;   
 
 }   
 
 VRg  
 
 [Nُ*NS_N g{USvT{Hh1\/f g}YvT{Hh0NbvT{bWNNbvT{`SOS
N{`HN b~ vQHes_N
NSNvcr e t u r n   (   1   l   +   n   )   *   n   /   2 vk  
 
 i n t   S u m (   i n t   n   )   
 
 {   
 
     l o n g   s u m   =   0 ;   
 
     f o r (   i n t   i = 1 ;   i < = n ;   i + +   )   
 
     {   
 
 	     s u m   + =   i ;   
 
     }   
 
     r e t u r n   s u m ;   
 
 }   
 
 @bNz^XTN Oea0W\pef[I{wƋ(u(Wz^-N0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 WNA R M vL]eQ_L i n u x y
iw[SO
 
 WNA R M vL]eQ_L i n u x y
iw[SO1 	  W,gi_
 
 [[NS  2 1 c n b a o @ 2 1 c n . c o m   QYd e v . y e s k y . c o m 
 
 1 . _ 
 
 A R M /fA d v a n c e d   R I S C   M a c h i n e s ؚ~|{cN|~YthV	v)Q/fA R M lQScOv Ny_YthVwƋNCgI P 	8h0
 
 	 A R M v^(u]MS]Nc6R0m9{|5uP[NT0O|~0Q~|~0e~|~I{T{|NT^:W0WNA R M   b/gv_YthV^(u~`SncN3 2 MOR I S C   _YthV7 5 N
Nv^:WN0c _`OvKb:g0M P 3 0	 P D A ?V?V̑bYJSυ@w N*NWNA R M v_YthV
 
 	 A R M Q8hvpe*N|RA R M 7 0A R M 9 0A R M 9 E 0A R M 1 0 E 0S e c u r C o r e 0X s c a l e 0S t r o n g A R M 	Tn
NT^(uWv BleT[
NeQvneQL]eQ_|~T*N҉=v^(u0ُ/f N*NA R M veN
 
 	 NbvVGr>f:yNA R M vYS
 
   
 
   
 
 	gNv0We1\	g_lVn
0fkgY O0		gL]eQ_|~v0We1\	gA R M 0
 
 g^ N*N
YBgvL]eQ_|~N	glxN/f
NYvbN؏ ۏLd\O|~vy
i0bN8^(WA R M s^S
Ng^W i n d o w s   C E 0L i n u x 0P a l m   O S I{d\O|~vQ-NL i n u x wQ	g _>enNxvOp0
 
 NV>f:yNWNA R M L]eQ_|~-NoNNlxNvsQ|
 
 eMR{\O:NgL]eQ_A R M lxN	/ L i n u x oN	|~vyv#N&^yv~bXTۏLNN]\O
 
 ( 1 ) WNA R M 9 2 0 T Q8hS 3 C 2 4 1 0 A   C P U v5ug
 
 ( 2 ) A R M YtN^B\oNs^S-d^
 
 a . B o o t l o a d e r vy
i
 
 b . L]eQ_L i n u x d\O|~Q8hvy
i
 
 c . L]eQ_L i n u x d\O|~9heN|~vR^
 
 d . 5ug
NYL i n u x qRz^vQ0
 
 ,ge\w[0WQs,gyv _SǏz-N\Ov__NON^'YqQR0,{ Nz\{US0WN~,gA R M  _SgvlxN,{NzRgB o o t l o a d e r vy
iel,{	NzSL]eQ_  L i n u x vy
iSeN|~vg^el,{VzYvqRz^,{Nz~Q N*N]g^}YvolxNs^S
N^(u _Sv[O0
 
 Yg`	go}YvL]eQ_|~ _SW@x`\^8^[fO,ge0WQ[0sSO/f`Negl	gL]eQ_|~v _S~S,ge_NRBl`weg
Nɉ_um0`SNǏYNe m a i l N\OT|2 1 c n b a o @ 2 1 c n . c o m 0
 
 2 . A R M SO|~g
 
         \O:N NyR I S C SO|~gv_YthVA R M _YthVwQ	gR I S C SO|~gvxQWyr_0؏wQ	gYNX:_yrp
 
         ( l ) (WkagpencYtcNS_-Nc6R{/g;USCQ( A L U ) TyMOhVNOA L U TyMOhV_ g'Yv)R(us
 
 ( 2 ) ꁨRXTꁨRQv[@W!j_NOSz^-Nv_s
 
 ( 3 ) TeL o a d TS t o r e YagcNNXRpencTTϑ
 
 ( 4 ) @b	gcNagNgbLNX'YgbLTTϑ0
 
 A R M SO|~gvW[:N3 2 MO[N/ecB y t e ( 8 MO) 0H a l f w o r d ( 1 6 MO) TW o r d ( 3 2 MO) 3 ypenc{|W0
 
 A R M YthV/ec7 yYthV!j_YNh
 
   
 
       'YR^(uz^(WU s e r !j_NЏL0S_YthVYNU s e r !j_NegbLvz^el NNObv|~Dn_N
N9eS!j_&TR1\O[ N!k_8^0[|~DnvO(u1ud\O|~egc6R0
 
 U s e r !j_KNYvvQ[Qy!j__Ny:NyrCg!j_[NSN[hQ|~DnSN1u0W9eS!j_0vQ-NvF I Q 0I R Q 0s u p e r v i s o r 0A b o r t Tu n d e f i n e d   5 y!j__Ny:N_8^!j_0(WYtyr[v_8^e|~ۏeQُQy!j_0ُ5 y_8^!j_	gTꁄvYv[X[hV(uNMQ(WSu_8^vePN(u7b!j_Nvz^SuQz0
 
 ؏	g Ny!j_/fs y s t e m !j_NUO_8^
NO[ۏeQُ N!j_N[O(uv[X[hVTU s e r !j_NW,gvT0[/f NyyrCg!j_(uN	g|~DnBlS MQO(uYv[X[hVvd\O|~NR0
 
 z^XTSvA R M [X[hVqQ	g3 7 *N3 1 *N(u[X[hVNS6 *N[A R M YthVv
NT]\O!j_@bzvN(ur`[X[hVYNV
 
   
 
 A R M 9 Ǒ(u5 ~Am4l~d\OcNS0ыx0gbL0pencQ0QV0A R M 9 nN1 6 *NW[vpencQT4 *NW[v0W@WQ0ُ5 ~Am4l]_YvR I S C YthV@bǑ(uw\OR I S C ~gv ~xQ 0
 
 3 . lxN
 
 3 . 1   S 3 C 2 4 1 0 A _c6RhV
 
 5ug
NvA R M _c6RhVS 3 C 2 4 1 0 A Ǒ(uNA R M 9 2 0 T 8h[1uA R M 9 T D M I 0X[P{tUSCQM M U TؚX[	NR~b0vQ-NM M U SN{tZbQX[ؚX[1urzv1 6 K B 0W@WT1 6 K B pencؚC a c h e ~b0A R M 9 2 0 T 	g$N*NQOSYthVC P 1 4 TC P 1 5 0C P 1 4 (uNՋc6RC P 1 5 (uNX[P|~c6RNSKmՋc6R0
 
 S 3 C 2 4 1 0 A ƖbN'YϑvQ5uTYVcS
 
                   L C D c6RhV( /ecS T N TT F T &^	gxdO\vmvf>f:yO\) 
 
                   S D R A M c6RhV
 
                   3 *NSvU A R T 
 
                   4 *NSvD M A 
 
                   4 *NwQ	gP W M RvehVT N*NQe
 
                   8 Sv1 0 MOA D C 
 
                   xdO\cS
 
                   I 2 C ;`~cS
 
                   1 2 S ;`~cS
 
                   $N*NU S B ;N:gcS
 
                    N*NU S B YcS
 
                   $N*NS P I cS
 
                   S D cS
 
                   M M C aScS
 
 S 3 C 2 4 1 0 A ƖbN N*NwQ	geSRvR T C TwQ	gP L L ( M P L L TU P L L ) vGreSuhV0M P L L Nu;NeYOYthV]\Os gؚ0R2 0 3 M H z 0ُ*N]\OsYOYthV{~gЏLW i n C E 0L i n u x I{d\O|~NSۏL:N
YBgvOo`Yt0U P L L RNu[sU S B !jWWve0
 
 NV>f:yNS 3 C 2 4 1 0 A vƖbDnTYVcS
 
   
 
 bN [
NV-NvA H B ;`~TA P B ;`~vi_ۏL Njuʑ0A R M 8h _Svvv/fOvQ\O:N
YBgGr
N|~v N*NYtUSCQeg^(uv@bN؏_{cO N*NA R M NvQ[Gr
N[USCQOvcS0:NNQ\
N_vDnvjm9A R M lQS[INNA M B A ( A d v a n c e d   M i c r o c o n t r o l l e r   B u s   A r c h i t e c t u r e ) ;`~ĉ[/f N~[WNA R M 8hv0Gr
N|~KNOv0hQv0 _>eOS0
 
 (WA M B A ;`~ĉ-N[INN3 y;`~
 
 ( l ) A H B  A d v a n c e d   H i g h   P e r f o r m a c e   B u s (uNؚ'`|~!jWWvޏc/eczS!j_penc OTNRRrR
 
 ( 2 ) A S B  A d v a n c e d   S y s t e m   B u s _N(uNؚ'`|~!jWWvޏc/eczS!j_penc Oُ/fv|~;`~<h_Teg1uA H B ;`~fN
 
 ( 3 ) A P B  A d v a n c e d   P e r i P h e r a l   B u s (uNNO'`Yv{USޏc N,/fc(WA H B bA S B |~;`~
Nv,{N~;`~0
 
 xQWvA M B A ;`~|~YNV
 
   
 
 S 3 C 2 4 1 0 A \|~vX[PzzRb8 *Nb a n k k*Nb a n k v'Y\/f1 2 8 M W[qQ1 G W[0B a n k 0 0Rb a n k 5 v _Y0W@W/fV[v(uNR O M bS R A M 0b a n k 6 Tb a n k 7 S(uNR O M 0S R A M bS D R A M 0@b	gQX[WWvhTgSzYW a i t _NibU\hTg0NV~QNS 3 C 2 4 1 0 A vQX[~~
 
   
 
 NV~QNS 3 C 2 4 1 0 A vpenc;`~00W@W;`~TGr	5u
 
   
 
 S D R A M c6ROS0ƖbU S B cS5u
 
   
 
 Q8hNX[PUSCQO5u5uS 3 C 2 4 1 0 A [NGrQvT*NNǑ(uNrzv5unO~Q8hǑ(u1 . 8 V O5uX[PUSCQǑ(u3 . 3 V rzO5u	
 
   
 
 J T A G hQǏLukbcb/gcON[5ug
Nk NCQNvR0NTSvNq_TۏLKmՋvelg'Y0WeON|~5uvՋ0
 
 KmՋceQzST A P v{[INYN
 
                   T C K N(uv;KmՋee
NGSl	c2NLe_[KmՋcN0pencSc6ROSۏLyMOd\ONMl(uN[QOSyMOd\O
 
                   T M S KmՋ!j_	b(WT C K 
NGSl	gHev;KmՋc6ROS
 
                   T D I KmՋpenceQ(uNc6eKmՋpencNKmՋcN
 
                   T D O KmՋpencQ(uNKmՋpencvQ0
 
 S 3 C 2 4 1 0 A Ջ(uJ T A G cS5u
 
   
 
 3 . 2   S D R A M X[PhV
 
 S D R A M (uegX[>ed\O|~NF L A S H ㉋S)beQ	NSX[>eT{|R`pencǑ(uS A M S U N G lQSvK 4 S 5 6 1 6 3 2 [/f4 M x l 6 b i t x 4 b a n k vTekD R A M [ϑ:N3 2 M B 0(u2 GrK 4 S 5 6 1 6 3 2 [sMOibU\Openc;`~[^0R3 2 b i t ;`[ϑ0R6 4 M B \vQ0W@Wzz f\(WS 3 C 2 4 1 0 A vb a n k 6 0
 
 S D R A M   @b	gveQTQN|~eC L   K 
NGSlTek1ueQOSR A   S 0C A   S 0W E ~TNuS D R A M   c6R}TNvQW,gvc6R}TNYN
 
   
 
 S D R A M   (WwQSOd\OKNMRHQ_{ǏM R S }TNn!j_[X[hVNOnx[S D R A M   vR0W@W^ߏ0zS{|W0zS^I{]\O!j_QǏA C T }TNo;m[^0W@Wv~TeeQL0W@W6qTǏR D   bW R   }TNeQR0W@W\v^pencQbQeQ[^v0W@Wd\O[bT(uP C H   }TNbB T   }TN-NbkbQd\O0(Wl	gd\OvePk Nke_{(uA R F }TN7Repenc2bkpenc"N1Y0
 
 NV~QNS D R A M vޏc5u
 
   
 
 3 . 3   F L A S H X[PhV
 
 N O R TN A N D /fs(W^:W
N$Ny;Nv^f1YX[b/g0
 
 N O R vyrp/fGrQgbL( X I P E x e c u t e   I n   P l a c e ) sS^(uz^Svc(WF l a s h X[QЏL
N_bNx0R|~R A M -N0N O R v OHes_ؚ(W1 ~ 4 M B v\[ϑewQ	g_ؚvb,gHevFO/f_NOvQeQTdd^'Y'Yq_TN[v'`0
 
 N A N D ~gcOgؚvUSCQ[^SN0RؚX[P[^v^NQeQTddv^_N__0^(uN A N D vV(WNF l a s h v{tT yrkv|~cSS 3 C 2 4 1 0 A QL]NN A N D   F L A S H c6RhV0
 
 S 3 C 2 4 1 0 A /ecNG C S 0 
NvN O R   F L A S H /TR1 6 MOb3 2 MO	bNN A N D   F L A S H /TR ǏO M 0 TO M 1 
N5uev
NNbegn
 
   
 
 (W|~-NR+RǑ(uN NGrN O R   F L A S H ( 2 8 F 6 4 0 ) TN A N D   F L A S H ( K 9 S 1 2 0 8 ) 5uYNV
 
   
 
 3 . 4 2NS
 
 S 3 C 2 4 1 0 QƖbNU A R T c6RhV[sNv^2Nlbc0Y؏ cOC M O S / T T L 5us^NR S 2 3 2 KNvlbc
 
   
 
 3 . 5 N*YQ
 
 N*YQc6RGrǑ(uC I R R U S   L O G I C lQSuNvC S 8 9 0 0 A vQzQyrp/fO(uup;mvQirtB\cS0penc O!j_T]\O!j_I{9hnc R`teǏQ[X[hVvneg^
NTv^(usX0[&{TI E E E 8 0 3 . 3 N*YQhQ&^	g O0c6eNOnlv1 0 B a s e - T ޏczS/ec1 0 B a s e 2 1 0 B a s e 5 T1 0 B a s e - F vA U I cSv^ꁨRubb4YꁨRۏLC R C h(WQzTꁨR͑S0
 
 C S 8 9 0 0 A /ecv O!j_	gI / O TM e m o r y !j_0S_C S 8 9 0 0 A 	glxN
YMOboN
YMOe, [\؞b:N8 MO]\O!j_0VdkOC S 8 9 0 0 A ]\ON1 6 MO!j_|~_{(WKNMRcO~;`~ؚMOO{( / S B H E )  N*N1uؚ0RNO0Q1uNO0RؚSSv5us^0
 
   
 
 3 . 6   U S B cS
 
 U S B   |~1uU S B   ;N:gU S B   H o s t 	0U S B Ɩ~hVU S B   H u b 	TU S B YU S B   D e v i c e 	~b0U S B   T;N:g|~vcSy\O;N:gc6RhVH o s t   C o n t r o l l e r 	[/f1ulxNToN~T[sv09hƖ~hV/f~TN;N:g|~Q萄v(uNcOU S B vޏcp0U S B vYSbƖ~hVH u b 	TRhVNF u n c t i o n 	0
 
 S 3 C 2 4 1 0 A ƖbNU S B   h o s t TU S B   d e v i c e Yޏc5uYNV
 
   
 
   
 
 3 . 7 5un
 
 L D O ( L o w   D r o p o u t ) ^\ND C / D C SbchV-NvMSSbchV[wQ	gNOb,g0NOjVX0NORI{zQOpSY[@b vYVhVN_N_\8^S	g  1 ~ 2   *Ne5u[0
 
 (W5ug
NbNR+R(u$N*NL D O eg[s5 V T3 . 3 V X[PcS5us^	T1 . 8 V A R M Q8h5us^	vlbc0
 
   
 
 u p vc5uǑ(uM A X 7 0 8 GrcO
N5u0c5uNSMS`QNv
YMOQSNO5us^	gHevN]
YMOQ
 
   
 
 3 . 8 vQ[
 
 S N 7 4 L V T H 6 2 2 4 5 A cO;`~qRTQR
 
   
 
 S 3 C 2 4 1 0 A ƖbL C D mvf>f:yhVc6R5uY_QcS
 
   
 
 xdO\	g5u;_05u[_I{vQ,g(/f Ny\Kbc(WO\U^
Nv批pMOnlS:N5uOSv OahV0Kbc0RO\U^_w批pMOn5u;b5u[vSSQǏhKmُ N5u'`SSN_KbcvPWhMOn0ǏS 3 C 2 4 1 0 A ƖbvA D R[b5uOSTO\U^PWhvlSxdO\cSYN
 
   
 
 .vRvc)R(uC P U vSzI / O Sޏc  m x n .vR m + n *NSzI / O S1uoN[s.vkbcƋ+R	c.
 
   
 
 3 . 9 teSOgg
 
 NVHTsNA R M YthVSYV5uvteSOFhg
 
   
 
 4 . \~
 
 ,gz㉆NWNS 3 C 2 4 1 0 A   A R M YthV5uglxNvW,g~b:NT~TzcON;`SO'`vQY]\O0
 
 
 
 WNA R M vL]eQ_L i n u x y
iw[SO2 	  B o o t L o a d e r 
 
 
 
 [[NS  2 1 c n b a o @ 2 1 c n . c o m   QY: d e v . y e s k y . c o m 
 
 
 
 B o o t L o a d e r c|~/TRT(Wd\O|~Q8hЏLKNMRЏLv Nk\z^0ǏB o o t L o a d e r bNSNRYSlxNY0^zQX[zzv f\VN\|~volxNsX&^0R N*NTvr`NO:N g~(ud\O|~Q8hQY}YcknxvsX08^B o o t L o a d e r /f%N͑0WOVNlxN[svyr+R/f(WL]eQ_NLu0Vdk(WL]eQ_NLȗ^z N*N(uv  B o o t L o a d e r   QNN/f
NSv0=\{YdkbNN6qSN[B o o t L o a d e r R_~Q NN(uvi_egNc[(u7byr[vB o o t L o a d e r N[s0
 
 
 
 B o o t L o a d e r   v[sOVNC P U vSO|~gVdk'YYpe  B o o t L o a d e r   R:Ns t a g e 1   Ts t a g e 2   $N'YR0OVNC P U SO|~gvNxkYYRYSNxI{8^>e(W  s t a g e 1 -NN8^(uGl eg[sN0Rw\|`vvv0s t a g e 2   R8^(uC    eg[sُ7hSN[sf
YBgvRNNxOwQ	gf}YvS'`TSy
i'`0
 
 
 
 B o o t L o a d e r   v  s t a g e 1   8^SbNNek
 
 
 
                    lxNYRYS
 
 
 
                    :NR}B o o t   L o a d e r vs t a g e 2 QY  R A M   zz
 
 
 
                    bB o o t   L o a d e r vs t a g e 2   0RR A M zz-N
 
 
 
                    n}YXh
 
 
 
                    l0R  s t a g e 2   v  C   eQSp0
 
 
 
 B o o t   L o a d e r vs t a g e 2 8^SbNNek                          
 
 
 
                    RYS,g6kO(u0RvlxNY
 
 
 
                    hKm|~QX[ f\( m e m o r y   m a p ) 
 
 
 
                    \k e r n e l    fPT9heN|~ fPNf l a s h 
N0R  R A M   zz-N
 
 
 
                    :NQ8hn/TRSpe
 
 
 
                    (uQ8h0
 
 
 
 ,g|~-NvB o o t L o a d e r SgqVm i z i lQSvv i v i ۏLO9e0
 
 
 
 1 .  _SsX
 
 
 
 bN-pNNfkIlR~yrOo`b/g	gPlQS _SvwQ	g;NwƋNCgv^(uNL]eQ_oN _SvƖbo0lxN _Ss^SA D T A R M   D e v e l o p m e n t   T o o l s 	[:NWNA R M   8hvL]eQ_^(ucON NteWY[Yv _SeHhSbz^0]z{tTn0z^ы0z^ՋI{0
 
 
 
 A D T L]eQ_ _SsX1uA D T   E m u l a t o r   f o r   A R M   TA D T   I D E   f o r   A R M ~b0A D T   E m u l a t o r   f o r   A R M   ǏJ T A G   [s;N:gTvh:gKNvՋ/ecR0[e vhX[PhV
N`S(uvh|~vNUOzSDn0vhz^vc(Wvhg
NЏLǏA R M   GrvJ T A G   LukbcSۏLՋ^\N[hQ^ceQ_ՋvQNwHegcяw[|~0
 
 
 
 A D T   I D E   f o r   A R M   :N(u7bcOؚHefpfvVb_SL]eQ_^(uoN _SsXSb NteWY[YvbTL]eQ_|~v _STՋ]wQnxhV0]z{thV0]zыhVыhV0GlhVTޏchV	0ƖbՋsX0A D T   E m u l a t o r   f o r   A R M   ՋcSI{0vQLubTM i c r o s o f t   V i s u a l   S t u d i o   sXv<O(u7bSN(WA D T   I D E   f o r   A R M   Ɩb _SsX-NR^]z0Sb _]z^z0Sb _TeNы0ޏc0n0ЏL0ՋL]eQ_^(uz^0
 
 
 
 A D T L]eQ_oN _SsXǑ(u;N:g
vh:gNS _S!jW0A D T   I D E   f o r   A R M   ЏLN;N:gzA D T   E m u l a t o r   f o r   A R M   [sA D T   I D E   f o r   A R M   Nvh:gKNvޏc0 _SeHQ1uA D T   I D E   f o r   A R M   ыޏcubvhNx6qT^zNA D T   E m u l a t o r   f o r   A R M   KNvՋSՋS^zbRT1\SN(WA D T   I D E   f o r   A R M   -NǏA D T   E m u l a t o r   f o r   A R M   c6Rvhg[svhz^vՋSb\vhNxN}0Rvh:g-Nc6Rz^ЏLՋOo`[I{I{0
 
 
 
 
 
 
 
 
 
 
 
 2 . A R M Gl
 
 
 
 A R M ,g^\NR I S C cN|~cNagpe1\_\vQzSNC I{ؚ~ :N;NbNN (WB o o t l o a d e r v,{ N6k(u0R\ϑGlcN
 
 
 
 1 	+ - Џ{
 
 A D D         r 0 ,     r 1 ,     r 2     
 
     r 0     : =   r 1     +     r 2 
 
 S U B       r 0 ,     r 1 ,     r 2       
 
     r 0     : =     r 1     -     r 2 
 
 vQ-Nv,{N*Nd\OpeSN/f N*NzsSpe
 
 A D D   r 3 ,   r 3 ,   # 1   
 
     r 3   : =   r 3   +   1 
 
 ,{N*Nd\Ope؏SN/fMOyd\OTv~g
 
 A D D   r 3 ,   r 2 ,   r 1 ,   L S L   # 3   
 
     r 3   : =   r 2   +   8 . r 1 
 
 2 	MOЏ{
 
 A N D     r 0 ,   r 1 ,   r 2       
 
     r 0   : =   r 1   a n d   r 2 
 
 O R R     r 0 ,   r 1 ,   r 2 
 
     r 0   : =   r 1   o r         r 2 
 
 E O R     r 0 ,   r 1 ,   r 2 
 
     r 0   : =   r 1   x o r     r 2 
 
 B I C       r 0 ,   r 1 ,   r 2     
 
     r 0   : =   r 1   a n d   n o t   r 2 
 
 3 	[X[hV,dy
 
 M O V     r 0 ,     r 2   
 
     r 0     : =     r 2 
 
 M V N     r 0 ,     r 2                       
 
     r 0     : =     n o t     r 2 
 
 4 	k
 
 C M P   r 1 ,   r 2   
 
     s e t   c c   o n   r 1   -   r 2 
 
 C M N   r 1 ,   r 2   
 
     s e t   c c   o n   r 1   +   r 2 
 
 T S T   r 1 ,   r 2   
 
     s e t   c c   o n   r 1   a n d   r 2 
 
 T E Q   r 1 ,   r 2   
 
     s e t   c c   o n   r 1   o r   r 2 
 
 ُNcNq_TC P S R [X[hV-Nv  ( N ,   Z ,   C ,   V )   MO
 
 5 	QX[d\O
 
 L D R   r 0 ,   [ r 1 ]   
 
       r 0   : =   m e m   [ r 1 ] 
 
 S T R   r 0 ,   [ r 1 ]   
 
      m e m   [ r 1 ]   : =   r 0 
 
 L D R   r 0 ,   [ r 1 ,   # 4 ]   
 
       r 0   : =   m e m   [ r 1 + 4 ] 
 
 L D R   r 0 ,   [ r 1 ,   # 4 ]   !   
 
       r 0   : =   m e m   [ r 1 + 4 ]           r 1   : =   r 1   +   4 
 
 L D R   r 0 ,   [ r 1 ] ,   # 4 
 
       r 0   : =   m e m   [ r 1 ]               r 1   : =   r 1   + 4 
 
 L D R B   r 0   ,   [ r 1 ]   
 
       r 0   : =   m e m 8   [ r 1 ] 
 
 L D M I A   r 1 ,   { r 0 ,   r 2 ,   r 5 } 
 
       r 0   : =   m e m   [ r 1 ]         r 2   : =   m e m   [ r 1 + 4 ]         r 5   : =   m e m   [ r 1 + 8 ] 
 
 { . . }   SNSbr 0 ~ r 1 5 -Nv@b	g[X[hVSbr 1 5   ( P C ) \[z^vl0
 
 6 	c6RAm
 
 O1 : 
 
 M O V   r 0 ,   # 0   ;   i n i t i a l i z e   c o u n t e r 
 
 L O O P : 
 
       A D D   r 0 ,   r 0 ,   # 1   ;   i n c r e m e n t   c o u n t e r 
 
       C M P   r 0 ,   # 1 0   ;   c o m p a r e   w i t h   l i m i t 
 
       B N E   L O O P   ;   r e p e a t   i f   n o t   e q u a l 
 
 O2 : 
 
 C M P   r 0 ,   # 5   
 
 A D D N E   r 1 ,   r 1 ,   r 0   
 
 S U B N E   r 1 ,   r 1 ,   r 2   
 
   
 
 i f   ( r 0   ! =   5 )   { 
 
 r 1   : =   r 1   +   r 0   -   r 2 
 
 } 
 
 3 . B o o t L o a d e r ,{ N6k
 
 3 . 1 lxNYRYS
 
 W,gvlxNRYS]\OSb
 
                    O\=@b	gv-Ne
 
                    nC P U v^Tes
 
                    R A M RYS
 
                    RYSL E D 
 
 A R M v-NeTϑhn(W0 0W@W _Yv8 *NW[zz-NYNh
 
 kS_vQ-Nvg*N_8^SuTsS\P C <Pn0Rv^v-NeTϑYk*N-NeTϑY>en N*NlcN0Rv^v-Ne
gRz^SۏLYt-NeTϑhvz^YN
 
 @   0 x 0 0 :   R e s e t 
 
               b           R e s e t 
 
 @   0 x 0 4 :   U n d e f i n e d   i n s t r u c t i o n   e x c e p t i o n 
 
 U n d e f E n t r y P o i n t : 
 
               b           H a n d l e U n d e f 
 
 @   0 x 0 8 :   S o f t w a r e   i n t e r r u p t   e x c e p t i o n 
 
 S W I E n t r y P o i n t : 
 
               b           H a n d l e S W I 
 
 @   0 x 0 c :   P r e f e t c h   A b o r t   ( I n s t r u c t i o n   F e t c h   M e m o r y   A b o r t ) 
 
 P r e f e t c h A b o r t E n t e r y P o i n t : 
 
               b           H a n d l e P r e f e t c h A b o r t 
 
 @   0 x 1 0 :   D a t a   A c c e s s   M e m o r y   A b o r t 
 
 D a t a A b o r t E n t r y P o i n t : 
 
               b           H a n d l e D a t a A b o r t 
 
 @   0 x 1 4 :   N o t   u s e d 
 
 N o t U s e d E n t r y P o i n t : 
 
               b           H a n d l e N o t U s e d 
 
 @   0 x 1 8 :   I R Q ( I n t e r r u p t   R e q u e s t )   e x c e p t i o n 
 
 I R Q E n t r y P o i n t : 
 
               b           H a n d l e I R Q 
 
 @   0 x 1 c :   F I Q ( F a s t   I n t e r r u p t   R e q u e s t )   e x c e p t i o n 
 
 F I Q E n t r y P o i n t : 
 
               b           H a n d l e F I Q 
 
 
YMOesQwr[ehV0O\=@b	g-Ne
 
 R e s e t : 
 
               @   d i s a b l e   w a t c h   d o g   t i m e r 
 
               m o v   r 1 ,   # 0 x 5 3 0 0 0 0 0 0 
 
               m o v   r 2 ,   # 0 x 0 
 
               s t r       r 2 ,   [ r 1 ] 
 
               @   d i s a b l e   a l l   i n t e r r u p t s 
 
               m o v   r 1 ,   # I N T _ C T L _ B A S E 
 
               m o v   r 2 ,   # 0 x f f f f f f f f 
 
               s t r       r 2 ,   [ r 1 ,   # o I N T M S K ] 
 
               l d r       r 2 ,   = 0 x 7 f f 
 
               s t r       r 2 ,   [ r 1 ,   # o I N T S U B M S K ] 
 
 n|~e
 
         @ i n i t   c l k 
 
         @   1 : 2 : 4 
 
         m o v   r 1 ,   # C L K _ C T L _ B A S E 
 
         m o v   r 2 ,   # 0 x 3     
 
         s t r       r 2 ,   [ r 1 ,   # o C L K D I V N ] 
 
         m r c   p 1 5 ,   0 ,   r 1 ,   c 1 ,   c 0 ,   0                           @   r e a d   c t r l   r e g i s t e r   
 
         o r r       r 1 ,   r 1 ,   # 0 x c 0 0 0 0 0 0 0                           @   A s y n c h r o n o u s     
 
         m c r   p 1 5 ,   0 ,   r 1 ,   c 1 ,   c 0 ,   0                           @   w r i t e   c t r l   r e g i s t e r 
 
         @   n o w ,   C P U   c l o c k   i s   2 0 0   M h z 
 
         m o v   r 1 ,   # C L K _ C T L _ B A S E 
 
         l d r       r 2 ,   m p l l _ 2 0 0 m h z 
 
         s t r       r 2 ,   [ r 1 ,   # o M P L L C O N ] 
 
 pN@b	gv(u7bL E D 
 
               @   A l l   L E D   o n 
 
               m o v   r 1 ,   # G P I O _ C T L _ B A S E 
 
               a d d     r 1 ,   r 1 ,   # o G P I O _ F 
 
               l d r       r 2 , = 0 x 5 5 a a 
 
               s t r       r 2 ,   [ r 1 ,   # o G P I O _ C O N ] 
 
               m o v   r 2 ,   # 0 x f f 
 
               s t r       r 2 ,   [ r 1 ,   # o G P I O _ U P ] 
 
               m o v   r 2 ,   # 0 x 0 0 
 
               s t r       r 2 ,   [ r 1 ,   # o G P I O _ D A T ] 
 
 nRYS	QX[ f\
 
 E N T R Y ( m e m s e t u p ) 
 
               @   i n i t i a l i s e   t h e   s t a t i c   m e m o r y   
 
               @   s e t   m e m o r y   c o n t r o l   r e g i s t e r s 
 
               m o v   r 1 ,   # M E M _ C T L _ B A S E 
 
               a d r l     r 2 ,   m e m _ c f g _ v a l 
 
               a d d     r 3 ,   r 1 ,   # 5 2 
 
 1 :           l d r       r 4 ,   [ r 2 ] ,   # 4 
 
               s t r       r 4 ,   [ r 1 ] ,   # 4 
 
               c m p   r 1 ,   r 3 
 
           b n e     1 b 
 
               m o v   p c ,   l r 
 
 nRYS	U A R T 
 
               @   s e t   G P I O   f o r   U A R T 
 
             m o v   r 1 ,   # G P I O _ C T L _ B A S E 
 
               a d d     r 1 ,   r 1 ,   # o G P I O _ H 
 
               l d r       r 2 ,   g p i o _ c o n _ u a r t       
 
               s t r       r 2 ,   [ r 1 ,   # o G P I O _ C O N ] 
 
               l d r       r 2 ,   g p i o _ u p _ u a r t 
 
               s t r       r 2 ,   [ r 1 ,   # o G P I O _ U P ]           
 
               b l           I n i t U A R T 
 
 @   I n i t i a l i z e   U A R T 
 
 @ 
 
 @   r 0   =   n u m b e r   o f   U A R T   p o r t 
 
 I n i t U A R T : 
 
               l d r       r 1 ,   S e r B a s e 
 
               m o v   r 2 ,   # 0 x 0 
 
               s t r       r 2 ,   [ r 1 ,   # o U F C O N ] 
 
               s t r       r 2 ,   [ r 1 ,   # o U M C O N ] 
 
               m o v   r 2 ,   # 0 x 3 
 
               s t r       r 2 ,   [ r 1 ,   # o U L C O N ] 
 
               l d r       r 2 ,   = 0 x 2 4 5 
 
               s t r       r 2 ,   [ r 1 ,   # o U C O N ] 
 
 # d e f i n e   U A R T _ B R D   ( ( 5 0 0 0 0 0 0 0   /   ( U A R T _ B A U D _ R A T E   *   1 6 ) )   -   1 ) 
 
               m o v   r 2 ,   # U A R T _ B R 
 
               s t r       r 2 ,   [ r 1 ,   # o U B R D I V ] 
 
               m o v   r 3 ,   # 1 0 0 
 
               m o v   r 2 ,   # 0 x 0 
 
 1 :           s u b     r 3 ,   r 3 ,   # 0 x 1 
 
               t s t         r 2 ,   r 3 
 
               b n e     1 b 
 
 # i f   0 
 
               m o v   r 2 ,   # ' U ' 
 
               s t r       r 2 ,   [ r 1 ,   # o U T X H L ] 
 
 1 :           l d r       r 3 ,   [ r 1 ,   # o U T R S T A T ] 
 
               a n d     r 3 ,   r 3 ,   # U T R S T A T _ T X _ E M P T Y 
 
               t s t         r 3 ,   # U T R S T A T _ T X _ E M P T Y 
 
               b n e     1 b         
 
               m o v   r 2 ,   # ' 0 ' 
 
               s t r       r 2 ,   [ r 1 ,   # o U T X H L ] 
 
 1 :           l d r       r 3 ,   [ r 1 ,   # o U T R S T A T ] 
 
               a n d     r 3 ,   r 3 ,   # U T R S T A T _ T X _ E M P T Y 
 
               t s t         r 3 ,   # U T R S T A T _ T X _ E M P T Y 
 
               b n e     1 b         
 
 # e n d i f 
 
               m o v   p c ,   l r 
 
 dkYv i v i ؏cONQ*NGl`QNǏ2NSSbpSW[&{vQpeP r i n t C h a r 0P r i n t W o r d TP r i n t H e x W o r d 
 
 @   P r i n t C h a r   :   p r i n t s   t h e   c h a r a c t e r   i n   R 0 
 
 @       r 0   c o n t a i n s   t h e   c h a r a c t e r 
 
 @       r 1   c o n t a i n s   b a s e   o f   s e r i a l   p o r t 
 
 @       w r i t e s   r o   w i t h   X X X ,   m o d i f i e s   r 0 , r 1 , r 2 
 
 @       T O D O   :   w r i t e   r o   w i t h   X X X   r e g   t o   e r r o r   h a n d l i n g 
 
 P r i n t C h a r : 
 
 T X B u s y : 
 
               l d r       r 2 ,   [ r 1 ,   # o U T R S T A T ] 
 
               a n d     r 2 ,   r 2 ,   # U T R S T A T _ T X _ E M P T Y 
 
               t s t         r 2 ,   # U T R S T A T _ T X _ E M P T Y 
 
               b e q     T X B u s y     
 
               s t r       r 0 ,   [ r 1 ,   # o U T X H L ] 
 
               m o v   p c ,   l r 
 
   
 
 @   P r i n t W o r d   :   p r i n t s   t h e   4   c h a r a c t e r s   i n   R 0 
 
 @       r 0   c o n t a i n s   t h e   b i n a r y   w o r d 
 
 @       r 1   c o n t a i n s   t h e   b a s e   o f   t h e   s e r i a l   p o r t 
 
 @       w r i t e s   r o   w i t h   X X X ,   m o d i f i e s   r 0 , r 1 , r 2 
 
 @       T O D O   :   w r i t e   r o   w i t h   X X X   r e g   t o   e r r o r   h a n d l i n g 
 
 P r i n t W o r d : 
 
               m o v   r 3 ,   r 0 
 
               m o v   r 4 ,   l r 
 
               b l           P r i n t C h a r 
 
               m o v   r 0 ,   r 3 ,   L S R   # 8                             / *   s h i f t   w o r d   r i g h t   8   b i t s   * / 
 
               b l           P r i n t C h a r 
 
               m o v   r 0 ,   r 3 ,   L S R   # 1 6                           / *   s h i f t   w o r d   r i g h t   1 6   b i t s   * / 
 
               b l           P r i n t C h a r         
 
               m o v   r 0 ,   r 3 ,   L S R   # 2 4                           / *   s h i f t   w o r d   r i g h t   2 4   b i t s   * / 
 
               b l           P r i n t C h a r 
 
               m o v   r 0 ,   # ' \ r ' 
 
               b l           P r i n t C h a r 
 
                 m o v   r 0 ,   # ' \ n ' 
 
               b l           P r i n t C h a r 
 
             m o v   p c ,   r 4   
 
 @   P r i n t H e x W o r d   :   p r i n t s   t h e   4   b y t e s   i n   R 0   a s   8   h e x   a s c i i   c h a r a c t e r s 
 
 @       f o l l o w e d   b y   a   n e w l i n e 
 
 @       r 0   c o n t a i n s   t h e   b i n a r y   w o r d 
 
 @       r 1   c o n t a i n s   t h e   b a s e   o f   t h e   s e r i a l   p o r t 
 
 @       w r i t e s   r o   w i t h   X X X ,   m o d i f i e s   r 0 , r 1 , r 2 
 
 @       T O D O   :   w r i t e   r o   w i t h   X X X   r e g   t o   e r r o r   h a n d l i n g 
 
 P r i n t H e x W o r d : 
 
               m o v   r 4 ,   l r 
 
               m o v   r 3 ,   r 0 
 
               m o v   r 0 ,   r 3 ,   L S R   # 2 8 
 
               b l           P r i n t H e x N i b b l e 
 
               m o v   r 0 ,   r 3 ,   L S R   # 2 4 
 
               b l           P r i n t H e x N i b b l e 
 
               m o v   r 0 ,   r 3 ,   L S R   # 2 0 
 
               b l           P r i n t H e x N i b b l e 
 
               m o v   r 0 ,   r 3 ,   L S R   # 1 6 
 
             b l           P r i n t H e x N i b b l e 
 
               m o v   r 0 ,   r 3 ,   L S R   # 1 2 
 
               b l           P r i n t H e x N i b b l e 
 
               m o v   r 0 ,   r 3 ,   L S R   # 8 
 
               b l           P r i n t H e x N i b b l e 
 
               m o v   r 0 ,   r 3 ,   L S R   # 4 
 
               b l           P r i n t H e x N i b b l e 
 
               m o v   r 0 ,   r 3 
 
               b l           P r i n t H e x N i b b l e 
 
               m o v   r 0 ,   # ' \ r ' 
 
               b l           P r i n t C h a r 
 
               m o v   r 0 ,   # ' \ n ' 
 
               b l           P r i n t C h a r 
 
               m o v   p c ,   r 4 
 
 3 . 2 B o o t l o a d e r b
 
 Mn:NNN A N D   F L A S H /TR \N A N D   F L A S H -Nvv i v i Nxc o p y 0RR A M -N
 
 # i f d e f   C O N F I G _ S 3 C 2 4 1 0 _ N A N D _ B O O T 
 
               b l           c o p y _ m y s e l f 
 
               @   j u m p   t o   r a m 
 
               l d r       r 1 ,   = o n _ t h e _ r a m 
 
               a d d     p c ,   r 1 ,   # 0 
 
               n o p 
 
               n o p 
 
 1 :           b           1 b                       @   i n f i n i t e   l o o p   
 
 # i f d e f   C O N F I G _ S 3 C 2 4 1 0 _ N A N D _ B O O T 
 
 @ 
 
 @   c o p y _ m y s e l f :   c o p y   v i v i   t o   r a m 
 
 @ 
 
 c o p y _ m y s e l f : 
 
               m o v   r 1 0 ,   l r 
 
               @   r e s e t   N A N D 
 
               m o v   r 1 ,   # N A N D _ C T L _ B A S E 
 
               l d r       r 2 ,   = 0 x f 8 3 0                       @   i n i t i a l   v a l u e 
 
               s t r       r 2 ,   [ r 1 ,   # o N F C O N F ] 
 
               l d r       r 2 ,   [ r 1 ,   # o N F C O N F ] 
 
               b i c       r 2 ,   r 2 ,   # 0 x 8 0 0                 @   e n a b l e   c h i p 
 
               s t r       r 2 ,   [ r 1 ,   # o N F C O N F ] 
 
               m o v   r 2 ,   # 0 x f f                 @   R E S E T   c o m m a n d 
 
               s t r b     r 2 ,   [ r 1 ,   # o N F C M D ] 
 
               m o v   r 3 ,   # 0                                         @   w a i t   
 
 1 :           a d d     r 3 ,   r 3 ,   # 0 x 1 
 
               c m p   r 3 ,   # 0 x a 
 
               b l t         1 b 
 
 2 :           l d r       r 2 ,   [ r 1 ,   # o N F S T A T ]               @   w a i t   r e a d y 
 
               t s t         r 2 ,   # 0 x 1 
 
               b e q     2 b 
 
               l d r       r 2 ,   [ r 1 ,   # o N F C O N F ] 
 
               o r r       r 2 ,   r 2 ,   # 0 x 8 0 0                 @   d i s a b l e   c h i p 
 
               s t r       r 2 ,   [ r 1 ,   # o N F C O N F ] 
 
               @   g e t   r e a d   t o   c a l l   C   f u n c t i o n s   ( f o r   n a n d _ r e a d ( ) ) 
 
               l d r       s p ,   D W _ S T A C K _ S T A R T             @   s e t u p   s t a c k   p o i n t e r 
 
               m o v   f p ,   # 0                                         @   n o   p r e v i o u s   f r a m e ,   s o   f p = 0 
 
               @   c o p y   v i v i   t o   R A M 
 
               l d r       r 0 ,   = V I V I _ R A M _ B A S E 
 
               m o v           r 1 ,   # 0 x 0 
 
             m o v   r 2 ,   # 0 x 2 0 0 0 0 
 
               b l           n a n d _ r e a d _ l l 
 
               t s t         r 0 ,   # 0 x 0 
 
               b e q     o k _ n a n d _ r e a d 
 
 # i f d e f   C O N F I G _ D E B U G _ L L 
 
 b a d _ n a n d _ r e a d :   
 
               l d r       r 0 ,   S T R _ F A I L 
 
               l d r       r 1 ,   S e r B a s e 
 
               b l           P r i n t W o r d 
 
 1 :           b           1 b                       @   i n f i n i t e   l o o p   
 
 # e n d i f             
 
 o k _ n a n d _ r e a d : 
 
 # i f d e f   C O N F I G _ D E B U G _ L L 
 
               l d r       r 0 ,   S T R _ O K 
 
               l d r       r 1 ,   S e r B a s e 
 
               b l           P r i n t W o r d 
 
 # e n d i f 
 
               @   v e r i f y 
 
               m o v   r 0 ,   # 0 
 
               l d r       r 1 ,   = 0 x 3 3 f 0 0 0 0 0 
 
               m o v   r 2 ,   # 0 x 4 0 0             @   4   b y t e s   *   1 0 2 4   =   4 K - b y t e s 
 
 g o _ n e x t : 
 
               l d r       r 3 ,   [ r 0 ] ,   # 4 
 
               l d r       r 4 ,   [ r 1 ] ,   # 4 
 
               t e q       r 3 ,   r 4 
 
               b n e     n o t m a t c h 
 
               s u b s   r 2 ,   r 2 ,   # 4 
 
               b e q     d o n e _ n a n d _ r e a d           
 
               b n e     g o _ n e x t 
 
 n o t m a t c h : 
 
 # i f d e f   C O N F I G _ D E B U G _ L L 
 
               s u b     r 0 ,   r 0 ,   # 4 
 
               l d r       r 1 ,   S e r B a s e 
 
               b l           P r i n t H e x W o r d 
 
               l d r       r 0 ,   S T R _ F A I L 
 
               l d r       r 1 ,   S e r B a s e 
 
               b l           P r i n t W o r d 
 
 # e n d i f 
 
 1 :           b           1 b 
 
 d o n e _ n a n d _ r e a d :   
 
 # i f d e f   C O N F I G _ D E B U G _ L L 
 
               l d r       r 0 ,   S T R _ O K 
 
               l d r       r 1 ,   S e r B a s e 
 
               b l           P r i n t W o r d 
 
 # e n d i f   
 
               m o v   p c ,   r 1 0   
 
 @   c l e a r   m e m o r y 
 
 @   r 0 :   s t a r t   a d d r e s s 
 
 @   r 1 :   l e n g t h 
 
 m e m _ c l e a r : 
 
               m o v   r 2 ,   # 0 
 
               m o v   r 3 ,   r 2 
 
               m o v   r 4 ,   r 2 
 
               m o v   r 5 ,   r 2 
 
               m o v   r 6 ,   r 2 
 
               m o v   r 7 ,   r 2 
 
               m o v   r 8 ,   r 2 
 
               m o v   r 9 ,   r 2   
 
 c l e a r _ l o o p : 
 
               s t m i a               r 0 ! ,   { r 2 - r 9 } 
 
               s u b s   r 1 ,   r 1 ,   # ( 8   *   4 ) 
 
               b n e     c l e a r _ l o o p 
 
               m o v   p c ,   l r 
 
 # e n d i f   @   C O N F I G _ S 3 C 2 4 1 0 _ N A N D _ B O O T 
 
 3 . 3 ۏeQC Nx
 
 HQnXhcs p Xhcvn/f:NNgbLC  Nx\O}YQY0n}YXhT(uC  vm a i n Qpe
 
 @   g e t   r e a d   t o   c a l l   C   f u n c t i o n s 
 
 l d r       s p ,   D W _ S T A C K _ S T A R T             @   s e t u p   s t a c k   p o i n t e r 
 
 m o v   f p ,   # 0                                         @   n o   p r e v i o u s   f r a m e ,   s o   f p = 0 
 
 m o v   a 2 ,   # 0                                       @   s e t   a r g v   t o   N U L L   
 
 b l           m a i n                                           @   c a l l   m a i n   
 
 m o v   p c ,   # F L A S H _ B A S E                             @   o t h e r w i s e ,   r e b o o t 
 
 4 .   B o o t L o a d e r ,{N6k
 
 v i v i   B o o t l o a d e r v,{N6kSRbNkQ*N\6k(Wm a i n Qpe-NR+R(uُQ*N\6kvvsQQpe
 
 i n t   m a i n ( i n t   a r g c ,   c h a r   * a r g v [ ] ) 
 
 { 
 
               i n t   r e t ; 
 
               / * 
 
                 *   S t e p   1 : 
 
                 * / 
 
             p u t s t r ( " \ r \ n " ) ; 
 
               p u t s t r ( v i v i _ b a n n e r ) ; 
 
                 r e s e t _ h a n d l e r ( ) ; 
 
               / * 
 
                 *   S t e p   2 : 
 
                 * / 
 
               r e t   =   b o a r d _ i n i t ( ) ; 
 
               i f   ( r e t )   { 
 
                             p u t s t r ( " F a i l e d   a   b o a r d _ i n i t ( )   p r o c e d u r e \ r \ n " ) ; 
 
                             e r r o r ( ) ; 
 
               }   
 
               / * 
 
                 *   S t e p   3 : 
 
                 * / 
 
               m e m _ m a p _ i n i t ( ) ; 
 
               m m u _ i n i t ( ) ; 
 
               p u t s t r ( " S u c c e e d   m e m o r y   m a p p i n g . \ r \ n " ) ; 
 
               / * 
 
                 *   N o w ,   v i v i   i s   r u n n i n g   o n   t h e   r a m .   M M U   i s   e n a b l e d . 
 
                 * /   
 
               / *   
 
                 *   S t e p   4 : 
 
                 * / 
 
               / *   i n i t i a l i z e   t h e   h e a p   a r e a * / 
 
               r e t   =   h e a p _ i n i t ( ) ; 
 
               i f   ( r e t )   { 
 
                             p u t s t r ( " F a i l e d   i n i t a i l i z i n g   h e a p   r e g i o n \ r \ n " ) ; 
 
                             e r r o r ( ) ; 
 
               } 
 
               / *   S t e p   5 : 
 
                 * / 
 
               r e t   =   m t d _ d e v _ i n i t ( ) ;   
 
               / *   S t e p   6 : 
 
                 * / 
 
               i n i t _ p r i v _ d a t a ( ) ;   
 
               / *   S t e p   7 : 
 
                 * / 
 
               m i s c ( ) ; 
 
               i n i t _ b u i l t i n _ c m d s ( ) ;   
 
               / *   S t e p   8 : 
 
                 * / 
 
               b o o t _ o r _ v i v i ( ) ; 
 
               r e t u r n   0 ; 
 
 } 
 
 S T E P 1 vp u t s t r ( v i v i _ b a n n e r ) S(W2NSQ NkW[&{fv i v i vHr,g0\OI{Oo`v i v i _ b a n n e r [IN:N
 
 c o n s t   c h a r   * v i v i _ b a n n e r   = 
 
                                               " V I V I   v e r s i o n   "   V I V I _ R E L E A S E   "   ( "   V I V I _ C O M P I L E _ B Y   " @ " 
 
                                               V I V I _ C O M P I L E _ H O S T   " )   ( "   V I V I _ C O M P I L E R   " )   "   U T S _ V E R S I O N   " \ r \ n " ; 
 
 r e s e t _ h a n d l e r ۏLv^v
YMOYt
 
 v o i d 
 
 r e s e t _ h a n d l e r ( v o i d ) 
 
 { 
 
               i n t   p r e s s e d ; 
 
               p r e s s e d   =   i s _ p r e s s e d _ p w _ b t n ( ) ;   
 
               i f   ( p r e s s e d   = =   P W B T _ P R E S S _ L E V E L )   { 
 
                             D P R I N T K ( " H A R D   R E S E T \ r \ n " ) ; 
 
                             h a r d _ r e s e t _ h a n d l e ( ) ; 
 
               }   e l s e   { 
 
                             D P R I N T K ( " S O F T   R E S E T \ r \ n " ) ; 
 
                             s o f t _ r e s e t _ h a n d l e ( ) ; 
 
               } 
 
 } 
 
 h a r d _ r e s e t _ h a n d l e Oc l e a r QX[oN
YMOYtRNHN
NZP
 
 s t a t i c   v o i d 
 
 h a r d _ r e s e t _ h a n d l e ( v o i d ) 
 
 { 
 
               c l e a r _ m e m ( ( u n s i g n e d   l o n g ) U S E R _ R A M _ B A S E ,   ( u n s i g n e d   l o n g ) U S E R _ R A M _ S I Z E ) ;   
 
 } 
 
 S T E P 2 ۏLgRYSneTSzI / O S
 
 i n t   b o a r d _ i n i t ( v o i d ) 
 
 { 
 
               i n i t _ t i m e ( ) ; 
 
               s e t _ g p i o s ( ) ;   
 
               r e t u r n   0 ; 
 
 } 
 
 S T E P 3 ۏLQX[ f\SM M U RYS
 
 v o i d   m e m _ m a p _ i n i t ( v o i d ) 
 
 { 
 
 # i f d e f   C O N F I G _ S 3 C 2 4 1 0 _ N A N D _ B O O T 
 
               m e m _ m a p _ n a n d _ b o o t ( ) ; 
 
 # e l s e 
 
               m e m _ m a p _ n o r ( ) ; 
 
 # e n d i f 
 
               c a c h e _ c l e a n _ i n v a l i d a t e ( ) ; 
 
               t l b _ i n v a l i d a t e ( ) ; 
 
 } 
 
 S 3 C 2 4 1 0 A vM M U RYSS (u(uva r m 9 2 0   M M U RYSQpe
 
 s t a t i c   i n l i n e   v o i d   a r m 9 2 0 _ s e t u p ( v o i d ) 
 
 { 
 
               u n s i g n e d   l o n g   t t b   =   M M U _ T A B L E _ B A S E ;   
 
 _ _ a s m _ _ ( 
 
               / *   I n v a l i d a t e   c a c h e s   * / 
 
               " m o v               r 0 ,   # 0 \ n " 
 
               " m c r               p 1 5 ,   0 ,   r 0 ,   c 7 ,   c 7 ,   0 \ n "     / *   i n v a l i d a t e   I , D   c a c h e s   o n   v 4   * / 
 
               " m c r               p 1 5 ,   0 ,   r 0 ,   c 7 ,   c 1 0 ,   4 \ n "   / *   d r a i n   w r i t e   b u f f e r   o n   v 4   * / 
 
               " m c r               p 1 5 ,   0 ,   r 0 ,   c 8 ,   c 7 ,   0 \ n "     / *   i n v a l i d a t e   I , D   T L B s   o n   v 4   * / 
 
               / *   L o a d   p a g e   t a b l e   p o i n t e r   * / 
 
               " m o v               r 4 ,   % 0 \ n " 
 
               " m c r               p 1 5 ,   0 ,   r 4 ,   c 2 ,   c 0 ,   0 \ n "     / *   l o a d   p a g e   t a b l e   p o i n t e r   * / 
 
               / *   W r i t e   d o m a i n   i d   ( c p 1 5 _ r 3 )   * / 
 
               " m v n               r 0 ,   # 0 \ n "                                 / *   D o m a i n s   0 ,   1   =   c l i e n t   * / 
 
               " m c r               p 1 5 ,   0 ,   r 0 ,   c 3 ,   c 0 ,   0 \ n "     / *   l o a d   d o m a i n   a c c e s s   r e g i s t e r   * / 
 
               / *   S e t   c o n t r o l   r e g i s t e r   v 4   * / 
 
               " m r c               p 1 5 ,   0 ,   r 0 ,   c 1 ,   c 0 ,   0 \ n "     / *   g e t   c o n t r o l   r e g i s t e r   v 4   * / 
 
               / *   C l e a r   o u t   ' u n w a n t e d '   b i t s   ( t h e n   p u t   t h e m   i n   i f   w e   n e e d   t h e m )   * /                                                                                     / *   . R V I   . . R S   B . . .   . C A M   * /   
 
               " b i c     r 0 ,   r 0 ,   # 0 x 3 0 0 0 \ n "                   / *   . . 1 1   . . . .   . . . .   . . . .   * / 
 
               " b i c     r 0 ,   r 0 ,   # 0 x 0 3 0 0 \ n "                   / *   . . . .   . . 1 1   . . . .   . . . .   * / 
 
               " b i c     r 0 ,   r 0 ,   # 0 x 0 0 8 7 \ n "                   / *   . . . .   . . . .   1 . . .   . 1 1 1   * / 
 
               / *   T u r n   o n   w h a t   w e   w a n t   * / 
 
               / *   F a u l t   c h e c k i n g   e n a b l e d   * / 
 
               " o r r     r 0 ,   r 0 ,   # 0 x 0 0 0 2 \ n "                   / *   . . . .   . . . .   . . . .   . . 1 .   * / 
 
 # i f d e f   C O N F I G _ C P U _ D _ C A C H E _ O N 
 
               " o r r     r 0 ,   r 0 ,   # 0 x 0 0 0 4 \ n "                   / *   . . . .   . . . .   . . . .   . 1 . .   * / 
 
 # e n d i f     
 
 # i f d e f   C O N F I G _ C P U _ I _ C A C H E _ O N   
 
               " o r r     r 0 ,   r 0 ,   # 0 x 1 0 0 0 \ n "                   / *   . . . 1   . . . .   . . . .   . . . .   * / 
 
 # e n d i f     
 
               / *   M M U   e n a b l e d   * / 
 
               " o r r     r 0 ,   r 0 ,   # 0 x 0 0 0 1 \ n "                   / *   . . . .   . . . .   . . . .   . . . 1   * / 
 
               " m c r               p 1 5 ,   0 ,   r 0 ,   c 1 ,   c 0 ,   0 \ n "     / *   w r i t e   c o n t r o l   r e g i s t e r   * / 
 
               :   / *   n o   o u t p u t s   * / 
 
               :   " r "   ( t t b )   ) ; 
 
 } 
 
 S T E P 4 nXhS T E P 5 ۏLm t d YvRYSU_M T D R:SOo`S T E P 6 ny	gpencS T E P 7 RYSQ^}TN0
 
 S T E P 8 /TR N*NS H E L L I{_(u7bQ}TNv^ۏLv^Yt0(WS H E L L  Qv`QN/TRd\O|~
 
 # d e f i n e   D E F A U L T _ B O O T _ D E L A Y               0 x 3 0 0 0 0 0 0 0 
 
 v o i d   b o o t _ o r _ v i v i ( v o i d ) 
 
 { 
 
               c h a r   c ; 
 
               i n t   r e t ; 
 
               u l o n g   b o o t _ d e l a y ; 
 
               b o o t _ d e l a y   =   g e t _ p a r a m _ v a l u e ( " b o o t _ d e l a y " ,   & r e t ) ; 
 
               i f   ( r e t )   b o o t _ d e l a y   =   D E F A U L T _ B O O T _ D E L A Y ; 
 
               / *   I f   a   v a l u e   o f   b o o t _ d e l a y   i s   z e r o ,   
 
                 *   u n c o n d i t i o n a l l y   c a l l   v i v i   s h e l l   * / 
 
               i f   ( b o o t _ d e l a y   = =   0 )   v i v i _ s h e l l ( ) ;   
 
               / * 
 
               *   w a i t   f o r   a   k e y s t r o k e   ( o r   a   b u t t o n   p r e s s   i f   y o u   w a n t . ) 
 
                 * / 
 
               p r i n t k ( " P r e s s   R e t u r n   t o   s t a r t   t h e   L I N U X   n o w ,   a n y   o t h e r   k e y   f o r   v i v i \ n " ) ; 
 
               c   =   a w a i t k e y ( b o o t _ d e l a y ,   N U L L ) ; 
 
               i f   ( ( ( c   ! =   ' \ r ' )   & &   ( c   ! =   ' \ n ' )   & &   ( c   ! =   ' \ 0 ' ) ) )   { 
 
                             p r i n t k ( " t y p e   \ " h e l p \ "   f o r   h e l p . \ n " ) ; 
 
                             v i v i _ s h e l l ( ) ; 
 
               } 
 
               r u n _ a u t o b o o t ( ) ;   
 
               r e t u r n ; 
 
 
 
 } 
 
 
 
 S H E L L -NS(u7bN2NSQv}TNW[&{2NgbL}TN
 
 v o i d   
 
 v i v i _ s h e l l ( v o i d ) 
 
 { 
 
 # i f d e f   C O N F I G _ S E R I A L _ T E R M 
 
               s e r i a l _ t e r m ( ) ; 
 
 # e l s e 
 
 # e r r o r   t h e r e   i s   n o   t e r m i n a l . 
 
 # e n d i f 
 
 } 
 
 v o i d   s e r i a l _ t e r m ( v o i d ) 
 
 { 
 
               c h a r   c m d _ b u f [ M A X _ C M D B U F _ S I Z E ] 
 
               f o r   ( ; ; )   { 
 
                           p r i n t k ( " % s >   " ,   p r o m p t ) ; 
 
                             g e t c m d ( c m d _ b u f ,   M A X _ C M D B U F _ S I Z E ) ;   
 
                             / *   e x e c u t e   a   u s e r   c o m m a n d   * / 
 
                             i f   ( c m d _ b u f [ 0 ] ) 
 
                                           e x e c _ s t r i n g ( c m d _ b u f ) ; 
 
               } 
 
 } 
 
 5 . 5ugՋ
 
 (W5ugvՋǏz-NbNHQ(WA D T e^v]z-NmR,{ N6kvGlNxh e a d . S eNO9eL i n k ,g\NxTpenc f\0RS 3 C 2 4 1 0 A &^v0 x 4 0 0 0 0 0 0 0  _Yv4 K B QX[zzQ
 
 
 
 S E C T I O N S 
 
 { 
 
               .   =   0 x 4 0 0 0 0 0 0 0 ; 
 
               . t e x t   :   {   * ( . t e x t )   } 
 
               I m a g e _ R O _ L i m i t   =   . ; 
 
               I m a g e _ R W _ B a s e   =   . ; 
 
               . d a t a   :   {   * ( . d a t a )   } 
 
               . r o d a t a   :   {   * ( . r o d a t a )   } 
 
               I m a g e _ Z I _ B a s e   =   . ; 
 
               . b s s   :   {   * ( . b s s )   } 
 
               I m a g e _ Z I _ L i m i t   =   . ; 
 
               _ _ b s s _ s t a r t _ _   =   . ; 
 
               _ _ b s s _ e n d _ _   =   . ; 
 
               _ _ E H _ F R A M E _ B E G I N _ _   =   . ; 
 
               _ _ E H _ F R A M E _ E N D _ _   =   . ; 
 
 P R O V I D E   ( _ _ s t a c k   =   . ) ; 
 
               e n d   =   . ; 
 
               _ e n d   =   . ; 
 
               . d e b u g _ i n f o           0   :   {   * ( . d e b u g _ i n f o )     } 
 
             . d e b u g _ l i n e                         0   :   {   * ( . d e b u g _ l i n e )     }   
 
           . d e b u g _ a b b r e v       0   :   {   * ( . d e b u g _ a b b r e v ) } 
 
           . d e b u g _ f r a m e         0   :   {   * ( . d e b u g _ f r a m e )   } 
 
 } 
 
 
 
 PRN(uh0:ylhVI{NhVNhS D R A M v^\v i v i -N&^v2NS0N A N D   F L A S H qRmR0R]z-NՋǏg
Nv2NSTF L A S H 0Ygg5uvStN	NflQSD E M O g	g]ݍRv i v i -NlxNvd\OۏLv^vO9e0hQՋǏTO9ev i v i nNx͑eыv i v i \vQpU_eQN A N D   F L A S H 1\SN(W
YMOT/TRُ*NB o o t l o a d e r N0
 
 
 
 Ջg
NveXlxNe[(WA D T -NmRv^vNx(W
NR}d\O|~v`QNUS~0Wd\OُNlxN0Yg5ug	gۏLޘ~TrR~I{Yt0
 
 
 
 6 . \~
 
 
 
 ,gz㉆NA R M Gl0B o o t l o a d e r vRB o o t l o a d e r vՋsXSA R M 5ugvՋel0
 
 
 
  NSW
TYObՋvbNeR'  
 
 [[NS    2 1 c n b a o @ 2 1 c n . c o m   oNb
 
 [N N*NW[8 b i t 	vpencBlvQ-N 1  v*NpeBl{lvgbLHes=\S0Wؚ0
 
 Rg\O:N NSW
TYOvbՋw<O{US[RSNwQ N*Nz^XTvW,gR^vNb[z^0`Ob]~`0R_YellYd0YOd\OMOd\OI{FO
N/f g_v0,ge NekekRgv0R gT~Q N*N g_velvO`Ow0R,ge gTv*N g_veleO	g`狄vaɉ0
 
 T{
 
 HQ_6qv`O`0RdlTBlYOЏ{v^~QNYONvT{Hh
 
 el1 O(ud0YOd\O
 
 # i n c l u d e   
 
 # d e f i n e   B Y T E   u n s i g n e d   c h a r 
 
 i n t   m a i n ( i n t   a r g c ,   c h a r   * a r g v [ ] ) 
 
 { 
 
     i n t   i ,   n u m   =   0 ; 
 
     B Y T E   a ; 
 
     / *   c6e(u7beQ  * / 
 
     p r i n t f ( " \ n P l e a s e   I n p u t   a   B Y T E ( 0 ~ 2 5 5 ) : " ) ; 
 
     s c a n f ( " % d " ,   & a ) ; 
 
     / *   {1 v*Npe  * / 
 
     f o r   ( i   =   0 ;   i   <   8 ;   i + + ) 
 
     { 
 
         i f   ( a   %   2   = =   1 ) 
 
         { 
 
             n u m + + ; 
 
         } 
 
         a   =   a   /   2 ; 
 
     } 
 
     p r i n t f ( " \ n t h e   n u m   o f   1   i n   t h e   B Y T E   i s   % d " ,   n u m ) ; 
 
     r e t u r n   0 ; 
 
 } 
 
 _WaO@bhTwdld\OvЏ{s[(W/f_NOvُ*NT{HhSasT@wbՋmpl
 
 }Y|fvbՋ`0RNNMOd\ONfdlTBlYOd\Ov^~QYNT{Hh
 
 el2 O(uMOd\O
 
 # i n c l u d e   
 
 # d e f i n e   B Y T E   u n s i g n e d   c h a r 
 
 i n t   m a i n ( i n t   a r g c ,   c h a r   * a r g v [ ] ) 
 
 { 
 
     i n t   i ,   n u m   =   0 ; 
 
     B Y T E   a ; 
 
     / *   c6e(u7beQ  * / 
 
     p r i n t f ( " \ n P l e a s e   I n p u t   a   B Y T E ( 0 ~ 2 5 5 ) : " ) ; 
 
     s c a n f ( " % d " ,   & a ) ; 
 
     / *   {1 v*Npe  * / 
 
     f o r   ( i   =   0 ;   i   <   8 ;   i + + ) 
 
     { 
 
         n u m   + =   ( a   > >   i )   & 0 x 0 1 ; 
 
     } 
 
     / * bُ7h{1 v*Npe* / 
 
     / *   f o r ( i = 0 ; i < 8 ; i + + ) 
 
     { 
 
     i f ( ( a > > i ) & 0 x 0 1 ) 
 
     n u m + + ; 
 
     } 
 
       * / 
 
     p r i n t f ( " \ n t h e   n u m   o f   1   i n   t h e   B Y T E   i s   % d " ,   n u m ) ; 
 
     r e t u r n   0 ; 
 
 } 
 
 elN-Nn u m   + =   ( a   > >   i )   & 0 x 0 1 ; d\OvgbLHesf>fؚNel N-Nv
 
 i f   ( a   %   2   = =   1 ) 
 
         { 
 
             n u m + + ; 
 
         } 
 
 a   =   a   /   2 ; 
 
 0Rُ*NePbՋ	gU_(uvS'`NFO/fS g_v1\/fُ*NelNTl	gf_vNTelNwvؚq\NbkNT
 
 
N
N(uZPdl0MOd\O1\vc_QT{HhvbTN/f`O`0Rb0 ~ 2 5 5 v`QWRQegv^O(uR/ed\O~QYNT{Hh
 
 el3 O(uR/ed\O
 
 # i n c l u d e   
 
 # d e f i n e   B Y T E   u n s i g n e d   c h a r 
 
 i n t   m a i n ( i n t   a r g c ,   c h a r   * a r g v [ ] ) 
 
 { 
 
     i n t   i ,   n u m   =   0 ; 
 
     B Y T E   a ; 
 
     / *   c6e(u7beQ  * / 
 
     p r i n t f ( " \ n P l e a s e   I n p u t   a   B Y T E ( 0 ~ 2 5 5 ) : " ) ; 
 
     s c a n f ( " % d " ,   & a ) ; 
 
     / *   {1 v*Npe  * / 
 
     s w i t c h   ( a ) 
 
     { 
 
         c a s e   0 x 0 : 
 
             n u m   =   0 ; 
 
             b r e a k ; 
 
         c a s e   0 x 1 : 
 
         c a s e   0 x 2 : 
 
         c a s e   0 x 4 : 
 
         c a s e   0 x 8 : 
 
         c a s e   0 x 1 0 : 
 
         c a s e   0 x 2 0 : 
 
         c a s e   0 x 4 0 : 
 
         c a s e   0 x 8 0 : 
 
             n u m   =   1 ; 
 
             b r e a k ; 
 
         c a s e   0 x 3 : 
 
         c a s e   0 x 6 : 
 
         c a s e   0 x c : 
 
         c a s e   0 x 1 8 : 
 
         c a s e   0 x 3 0 : 
 
         c a s e   0 x 6 0 : 
 
         c a s e   0 x c 0 : 
 
             n u m   =   2 ; 
 
             b r e a k ; 
 
             / / . . . 
 
     } 
 
     p r i n t f ( " \ n t h e   n u m   o f   1   i n   t h e   B Y T E   i s   % d " ,   n u m ) ; 
 
     r e t u r n   0 ; 
 
 } 
 
 el	Nw<O_vc[EgbLHesS؏O\NelNV:NR/eSvgbL`QwwQSOW[v<PYga = 0 6q(W,{1 *Nc a s e 1\_QNT{HhFO/fYga = 2 5 5 R(W gT N*Nc a s e Mb_QT{HhsS(WۏLN2 5 5 !kkd\OKNT
 
 wegel	N
NSSFO/fel	NcON N*N`1\/fWRv^vc~Q<Py gTvelVS	g NekKNe0<ww@w1\ُ[W
TYOU_(udkedk;R~
N[>e_[~bf_vel0
 
 ~Nupa Ns_0RelV N*NN`O_nooCnvT{Hh_0WNNT{l-N
N ۏLNUOvЏ{0`O	gYvO_NbNbvT{Hh~bՋ[
 
 el4 vc_0R~g
 
 # i n c l u d e   
 
 # d e f i n e   B Y T E   u n s i g n e d   c h a r 
 
 / *   [INg~bh  * / 
 
 B Y T E   n u m T a b l e [ 2 5 6 ]   = 
 
 { 
 
     0 ,   1 ,   1 ,   2 ,   1 ,   2 ,   2 ,   3 ,   1 ,   2 ,   2 ,   3 ,   2 ,   3 ,   3 ,   4 ,   1 ,   2 ,   2 ,   3 ,   2 ,   3 ,   3 ,   4 ,   2 ,   3 , 
 
         3 ,   4 ,   3 ,   4 ,   4 ,   5 ,   1 ,   2 ,   2 ,   3 ,   2 ,   3 ,   3 ,   4 ,   2 ,   3 ,   3 ,   4 ,   3 ,   4 ,   4 ,   5 ,   2 ,   3 ,   3 , 
 
         4 ,   3 ,   4 ,   4 ,   5 ,   3 ,   4 ,   4 ,   5 ,   4 ,   5 ,   5 ,   6 ,   1 ,   2 ,   2 ,   3 ,   2 ,   3 ,   3 ,   4 ,   2 ,   3 ,   3 ,   4 , 
 
         3 ,   4 ,   4 ,   5 ,   2 ,   3 ,   3 ,   4 ,   3 ,   4 ,   4 ,   5 ,   3 ,   4 ,   4 ,   5 ,   4 ,   5 ,   5 ,   6 ,   2 ,   3 ,   3 ,   4 ,   3 , 
 
         4 ,   4 ,   5 ,   3 ,   4 ,   4 ,   5 ,   4 ,   5 ,   5 ,   6 ,   3 ,   4 ,   4 ,   5 ,   4 ,   5 ,   5 ,   6 ,   4 ,   5 ,   5 ,   6 ,   5 ,   6 , 
 
         6 ,   7 ,   1 ,   2 ,   2 ,   3 ,   2 ,   3 ,   3 ,   4 ,   2 ,   3 ,   3 ,   4 ,   3 ,   4 ,   4 ,   5 ,   2 ,   3 ,   3 ,   4 ,   3 ,   4 ,   4 , 
 
         5 ,   3 ,   4 ,   4 ,   5 ,   4 ,   5 ,   5 ,   6 ,   2 ,   3 ,   3 ,   4 ,   3 ,   4 ,   4 ,   5 ,   3 ,   4 ,   4 ,   5 ,   4 ,   5 ,   5 ,   6 , 
 
         3 ,   4 ,   4 ,   5 ,   4 ,   5 ,   5 ,   6 ,   4 ,   5 ,   5 ,   6 ,   5 ,   6 ,   6 ,   7 ,   2 ,   3 ,   3 ,   4 ,   3 ,   4 ,   4 ,   5 ,   3 , 
 
         4 ,   4 ,   5 ,   4 ,   5 ,   5 ,   6 ,   3 ,   4 ,   4 ,   5 ,   4 ,   5 ,   5 ,   6 ,   4 ,   5 ,   5 ,   6 ,   5 ,   6 ,   6 ,   7 ,   3 ,   4 , 
 
         4 ,   5 ,   4 ,   5 ,   5 ,   6 ,   4 ,   5 ,   5 ,   6 ,   5 ,   6 ,   6 ,   7 ,   4 ,   5 ,   5 ,   6 ,   5 ,   6 ,   6 ,   7 ,   5 ,   6 ,   6 , 
 
         7 ,   6 ,   7 ,   7 ,   8 
 
 } ; 
 
 i n t   m a i n ( i n t   a r g c ,   c h a r   * a r g v [ ] ) 
 
 { 
 
     i n t   i ,   n u m   =   0 ; 
 
     B Y T E   a   =   0 ; 
 
     / *   c6e(u7beQ  * / 
 
     p r i n t f ( " \ n P l e a s e   I n p u t   a   B Y T E ( 0 ~ 2 5 5 ) : " ) ; 
 
     s c a n f ( " % d " ,   & a ) ; 
 
     / *   {1 v*Npe  * / 
 
     / *   (uB Y T E vc\O:Npe~vNhSQ1 v*NpeYT  * / 
 
     p r i n t f ( " \ n t h e   n u m   o f   1   i n   t h e   B Y T E   i s   % d " ,   c h e c k n u m [ a ] ) ; 
 
     r e t u r n   0 ; 
 
 } 
 
 ُ/f*NxQWvzzbce{lb0 ~ 2 5 5 -N1 v*NpevcX[P(Wpe~-NW[a \O:Npe~vNhc h e c k n u m [ a ] vc1\/fa -N 1  v*Npe{lv
YBg^YN
 
 e
YBg^O ( 1 ) 
 
 zz
YBg^O ( 2 n ) 
 
 m`U`O`O]~ُ[W
TvYOU_(u;`T`O8OQKb W e l c o m e   t o   o u r   c o m p a n y  0  
 
 WNA R M vL]eQ_L i n u x y
iw[SO3 	  d\O|~
 
 [[NS2 1 c n b a o @ 2 1 c n . c o m   QY: d e v . y e s k y . c o m 
 
 (W{dQv
0C  L]eQ_|~zOpKNS0 Ne-N;NHɋvoNgg/fUSNRed\O|~s^Sv,gevO͑pR(WNd\O|~L]eQvoNggNv:S+RYNV
 
   
 
 L]eQ_d\O|~v^
N;`/f_{vV:Nz^[hQSN(Wg
NЏL0=\{YdkFO[N
YBgv|~:NOvQwQ	gNR{t0[ehV{t0X[PhV{t0Dn{t0NN{t0|~{t0mo`{t0R{tT-NeYtvRcOYNRYtf}YvRM|~DnvR_	g_[yr[vlxNs^ST[E^(uy
id\O|~0tNL i n u x vnNx _>e'`[b:NL]eQ_d\O|~Wv_}Y	b0VQYYw
T'Yf[0lQS0xvz:ggReQNL]eQ_L i n u x vxvzLRcQN NNW
TvHr,g
 
                    R T - L i n u x cON N*N|]v[eQ8hbhQvL i n u x 8h_\O:N[e8h_v N*NۏzT(u7bv[eۏz Nw^0R T - L i n u x ]bR0W^(uN*)Yޘ:gvzzpencǑƖ0yf[NhVKmcT5uq_yrbVPYtI{^lv^(uW0YN A S A ( VV[[*@\) \ň	gR T - L i n u x vY>e(Wޘ:g
NNKmϑG e o r a g e TΘvΘ
 
                    u C L i n u x M i c r o - C o n t r o l - L i n u x u h:yM i c r o C h:yC o n t r o l 	ScNM M U QX[{t	R^(uNl	gZbQX[{tv_YthV/ _c6RhV[]~bR0Wy
i0RN_Ys^S
N0
 
 ,gzmSvm i z i - l i n u x 1uVm i z i lQS9hncL i n u x   2 . 4 Q8hy
ieg/ecS 3 C 2 4 1 0 A YthV0
 
 1 . L i n u x Q8hp
 
 TvQNd\O|~ N7hL i n u x S+Tۏz^NۏzO( I P C ) 0QX[{t( M M U ) 0ZbeN|~( V F S ) 0Q~cSI{NV~QNL i n u x v~bSvQsQ|
 
   
 
 L i n u x Q8hnNxSbY*NvU_
 
 1 	a r c h SblxNyr[vQ8hNxYa r m 0m i p s 0i 3 8 6 I{
 
 2 	d r i v e r s S+TlxNqRNxYc h a r 0c d r o m 0s c s i 0m t d I{
 
 3 	i n c l u d e (u4YeNS[
NTs^Syr[v4YeNYa s m - i 3 8 6 0a s m - a r m I{
 
 4 	i n i t Q8hRYSNx
 
 5 	i p c ۏzONx
 
 6 	k e r n e l Q8h8h_Nx
 
 7 	m m QX[{tNx
 
 8 	n e t NQ~OShvsQvNxYi p v 4 0i p v 6 0e t h e r n e t I{
 
 9 	f s eN|~vsQNxYn f s 0v f a t I{
 
 1 0 	l i b ^eNNs^SesQvs t r l e n 0s t r c p y I{Y(Ws t r i n g . c -NS+T
 
 c h a r   *   s t r c p y ( c h a r   *   d e s t , c o n s t   c h a r   * s r c ) 
 
 { 
 
               c h a r   * t m p   =   d e s t ; 
 
   
 
               w h i l e   ( ( * d e s t + +   =   * s r c + + )   ! =   ' \ 0 ' ) 
 
                             / *   n o t h i n g   * / ; 
 
               r e t u r n   t m p ; 
 
 } 
 
 1 1 	D o c u m e n t a t i o n ech0
 
 (WL i n u x Q8hv[s-N	g NNpenc~gO(u^8^A~[xQ8hvNeg:NsQ.[N/f
 
 1 . t a s k _ s t r u c t 
 
 L i n u x Q8h)R(ut a s k _ s t r u c t penc~gNh N*Nۏz(ut a s k _ s t r u c t cb_b N*Nt a s k pe~0S_^zeۏzvePL i n u x :NevۏzRM N*Nt a s k _ s t r u c t ~g6qT\cOX[(Wt a s k pe~-N0^z^~bc u r r e n t c[cTS_MRck(WЏLvۏz0
 
 2 . m m _ s t r u c t 
 
 k*NۏzvZbQX[1um m _ s t r u c t ~gNh0~g-NS+TN N~cTv m - a r e a _ s t r u c t ~gvcv m - a r e a _ s t r u c t ~gcNZbQX[v N*N:SW0
 
 3 . i n o d e 
 
 L i n u x ZbeN|~-NveN0vU_I{GW1u[^v"}_p( i n o d e ) Nh0
 
 2 . L i n u x y
iyv
 
 m i z i - l i n u x ]~9hncL i n u x   2 . 4 Q8h[S 3 C 2 4 1 0 A ُ NGrۏLN	g['`vy
i]\OSb
 
 1 	O9e9hvU_NvM a k e f i l e eN
 
 a . c[vhs^S:NA R M 
 
 # A R C H   : =   $ ( s h e l l   u n a m e   - m   |   s e d   - e   s / i . 8 6 / i 3 8 6 /   - e   s / s u n 4 u / s p a r c 6 4 /   - e   s / a r m . * / a r m /   - e   s / s a 1 1 0 / a r m / ) 
 
 A R C H   : =   a r m 
 
 b . c[NSыhV
 
 C R O S S _ C O M P I L E               =   a r m - l i n u x - 
 
 2 	O9ea r c h vU_-NveN
 
 9hnc,gz,{ NSwL i n u x va r c h vU_X[>elxNvsQvQ8hNxVdk(WL i n u x Q8h-NXR[S 3 C 2 4 1 0 v/ec g;N1\/fO9ea r c h vU_-NveN0
 
 a . (Wa r c h / a r m / M a k e f i l e eN-NReQ
 
 i f e q   ( $ ( C O N F I G _ A R C H _ S 3 C 2 4 1 0 ) , y ) 
 
 T E X T A D D R       =   0 x C 0 0 0 8 0 0 0 
 
 M A C H I N E                           =   s 3 c 2 4 1 0 
 
 E n d i f 
 
 b . (Wa r c h \ a r m \ c o n f i g . i n eN-NReQ
 
 i f   [   " $ C O N F I G _ A R C H _ S 3 C 2 4 1 0 "   =   " y "   ] ;   t h e n 
 
 c o m m e n t   ' S 3 C 2 4 1 0   I m p l e m e n t a t i o n ' 
 
 d e p _ b o o l   '   S M D K   ( M E R I   T E C H   B O A R D ) '   C O N F I G _ S 3 C 2 4 1 0 _ S M D K   $ C O N F I G _ A R C H _ S 3 C 2 4 1 0 
 
 d e p _ b o o l   '       c h a n g e   A I J I '   C O N F I G _ S M D K _ A I J I 
 
 d e p _ t r i s t a t e   ' S 3 C 2 4 1 0   U S B   f u n c t i o n   s u p p o r t '   C O N F I G _ S 3 C 2 4 1 0 _ U S B   $ C O N F I G _ A R C H _ S 3 C 2 1 0 0 
 
 d e p _ t r i s t a t e   '   S u p p o r t   f o r   S 3 C 2 4 1 0   U S B   c h a r a c t e r   d e v i c e   e m u l a t i o n '   C O N F I G _ S 3 C 2 4 1 0 _ U S B _ C H A R   $ C O N F I G _ S 3 C 2 4 1 0 _ U S B 
 
 f i           #   / *   C O N F I G _ A R C H _ S 3 C 2 4 1 0   * / 
 
 a r c h \ a r m \ c o n f i g . i n eN؏	gQY[S 3 C 2 4 1 0 vO9e0
 
 c . (Wa r c h / a r m / b o o t / M a k e f i l e eN-NReQ
 
 i f e q   ( $ ( C O N F I G _ A R C H _ S 3 C 2 4 1 0 ) , y ) 
 
 Z T E X T A D D R   =   0 x 3 0 0 0 8 0 0 0 
 
 Z R E L A D D R       =   0 x 3 0 0 0 8 0 0 0 
 
 e n d i f 
 
 d . (Wl i n u x / a r c h / a r m / b o o t / c o m p r e s s e d / M a k e f i l e eN-NReQ
 
 i f e q   ( $ ( C O N F I G _ A R C H _ S 3 C 2 4 1 0 ) , y ) 
 
 O B J S                           + =   h e a d - s 3 c 2 4 1 0 . o 
 
 e n d i f 
 
 ReQv~g/fh e a d - s 3 c 2 4 1 0 . S eNы:Nh e a d - s 3 c 2 4 1 0 . o 0
 
 e . ReQa r c h \ a r m \ b o o t \ c o m p r e s s e d \   h e a d - s 3 c 2 4 1 0 . S eN
 
 # i n c l u d e   < l i n u x / c o n f i g . h > 
 
 # i n c l u d e   < l i n u x / l i n k a g e . h > 
 
 # i n c l u d e   < a s m / m a c h - t y p e s . h > 
 
   
 
               . s e c t i o n       " . s t a r t " ,   # a l l o c ,   # e x e c i n s t r 
 
   
 
 _ _ S 3 C 2 4 1 0 _ s t a r t : 
 
   
 
               @   P r e s e r v e   r 8 / r 7   i . e .   k e r n e l   e n t r y   v a l u e s 
 
               @   W h a t   i s   i t ? 
 
               @   N a n d y 
 
   
 
               @   D a t a   c a c h e ,   I n t s t r u c t i o n   c a c h e ,   M M U   m i g h t   b e   a c t i v e . 
 
               @   B e   s u r e   t o   f l u s h   k e r n e l   b i n a r y   o u t   o f   t h e   c a c h e , 
 
               @   w h a t e v e r   s t a t e   i t   i s ,   b e f o r e   i t   i s   t u r n e d   o f f . 
 
               @   T h i s   i s   d o n e   b y   f e t c h i n g   t h r o u g h   c u r r e n t l y   e x e c u t e d 
 
               @   m e m o r y   t o   b e   s u r e   w e   h i t   t h e   s a m e   c a c h e 
 
   
 
               b i c       r 2 ,   p c ,   # 0 x 1 f 
 
               a d d   r 3 ,   r 2 ,   # 0 x 4 0 0 0                             @   1 6   k b   i s   q u i t e   e n o u g h . . . 
 
 1 :           l d r   r 0 ,   [ r 2 ] ,   # 3 2 
 
               t e q       r 2 ,   r 3 
 
               b n e   1 b 
 
               m c r   p 1 5 ,   0 ,   r 0 ,   c 7 ,   c 1 0 ,   4           @   d r a i n   W B 
 
               m c r   p 1 5 ,   0 ,   r 0 ,   c 7 ,   c 7 ,   0             @   f l u s h   I   &   D   c a c h e s 
 
   
 
 # i f   0 
 
               @   d i s a b l i n g   M M U   a n d   c a c h e s 
 
               m r c   p 1 5 ,   0 ,   r 0 ,   c 1 ,   c 0 ,   0             @   r e a d   c o n t r o l   r e g i s t e r 
 
               b i c       r 0 ,   r 0 ,   # 0 x 0 5                                 @   d i s a b l e   D   c a c h e   a n d   M M U 
 
               b i c   r 0 ,   r 0 ,   # 1 0 0 0                                     @   d i s a b l e   I   c a c h e 
 
               m c r   p 1 5 ,   0 ,   r 0 ,   c 1 ,   c 0 ,   0 
 
 # e n d i f 
 
   
 
               / * 
 
                 *   P a u s e   f o r   a   s h o r t   t i m e   s o   t h a t   w e   g i v e   e n o u g h   t i m e 
 
                 *   f o r   t h e   h o s t   t o   s t a r t   a   t e r m i n a l   u p . 
 
                 * / 
 
               m o v   r 0 ,   # 0 x 0 0 2 0 0 0 0 0 
 
 1 :           s u b s   r 0 ,   r 0 ,   # 1 
 
               b n e   1 b 
 
 勇eN-NvGlNx[bS 3 C 2 4 1 0 yr[lxNvsQvRYS0
 
 f . (Wa r c h \ a r m \ d e f - c o n f i g s vU_-NXRMneN
 
 g . (Wa r c h \ a r m \ k e r n e l \ M a k e f i l e -NXR[S 3 C 2 4 1 0 v/ec
 
 n o - i r q - a r c h           : =   $ ( C O N F I G _ A R C H _ I N T E G R A T O R )   $ ( C O N F I G _ A R C H _ C L P S 7 1 1 X )   \ 
 
                                   $ ( C O N F I G _ F O O T B R I D G E )   $ ( C O N F I G _ A R C H _ E B S A 1 1 0 )   \ 
 
                                   $ ( C O N F I G _ A R C H _ S A 1 1 0 0 )   $ ( C O N F I G _ A R C H _ C A M E L O T )   \ 
 
                                   $ ( C O N F I G _ A R C H _ S 3 C 2 4 0 0 )   $ ( C O N F I G _ A R C H _ S 3 C 2 4 1 0 )   \ 
 
                                   $ ( C O N F I G _ A R C H _ M X 1 A D S )   $ ( C O N F I G _ A R C H _ P X A ) 
 
 o b j - $ ( C O N F I G _ M I Z I )       + =   e v e n t . o 
 
 o b j - $ ( C O N F I G _ A P M )       + =   a p m 2 . o 
 
 h . O9ea r c h / a r m / k e r n e l / d e b u g - a r m v . S eN(WS_vMOnXRYNsQNS 3 C 2 4 1 0 vNx
 
 # e l i f   d e f i n e d ( C O N F I G _ A R C H _ S 3 C 2 4 1 0 ) 
 
   
 
                               . m a c r o   a d d r u a r t , r x 
 
                               m r c           p 1 5 ,   0 ,   \ r x ,   c 1 ,   c 0 
 
                               t s t           \ r x ,   # 1                   @   M M U   e n a b l e d   ? 
 
                               m o v e q       \ r x ,   # 0 x 5 0 0 0 0 0 0 0                 @   p h y s i c a l   b a s e   a d d r e s s 
 
                               m o v n e       \ r x ,   # 0 x f 0 0 0 0 0 0 0                 @   v i r t u a l   a d d r e s s 
 
                               . e n d m 
 
   
 
                               . m a c r o   s e n d u a r t , r d , r x 
 
                               s t r           \ r d ,   [ \ r x ,   # 0 x 2 0 ]               @   U T X H 
 
                               . e n d m 
 
   
 
                               . m a c r o   w a i t u a r t , r d , r x 
 
                               . e n d m 
 
   
 
                               . m a c r o   b u s y u a r t , r d , r x 
 
 1 0 0 1 :   l d r           \ r d ,   [ \ r x ,   # 0 x 1 0 ]               @   r e a d   U T R S T A T 
 
                               t s t           \ r d ,   # 1   < <   2                         @   T X _ E M P T Y   ? 
 
                               b e q           1 0 0 1 b 
 
                               . e n d m 
 
 i . O9ea r c h / a r m / k e r n e l / s e t u p . c eN
 
 dkeN-Nvs e t u p _ a r c h ^8^sQ.(ueg[bNSO|~gvsQvRYS
 
 v o i d   _ _ i n i t   s e t u p _ a r c h ( c h a r   * * c m d l i n e _ p ) 
 
 { 
 
               s t r u c t   t a g   * t a g s   =   N U L L ; 
 
               s t r u c t   m a c h i n e _ d e s c   * m d e s c ; 
 
               c h a r   * f r o m   =   d e f a u l t _ c o m m a n d _ l i n e ; 
 
   
 
               R O O T _ D E V   =   M K D E V ( 0 ,   2 5 5 ) ; 
 
   
 
               s e t u p _ p r o c e s s o r ( ) ; 
 
               m d e s c   =   s e t u p _ m a c h i n e ( m a c h i n e _ a r c h _ t y p e ) ; 
 
               m a c h i n e _ n a m e   =   m d e s c - > n a m e ; 
 
   
 
               i f   ( m d e s c - > s o f t _ r e b o o t ) 
 
                             r e b o o t _ s e t u p ( " s " ) ; 
 
   
 
               i f   ( m d e s c - > p a r a m _ o f f s e t ) 
 
                             t a g s   =   p h y s _ t o _ v i r t ( m d e s c - > p a r a m _ o f f s e t ) ; 
 
   
 
               / * 
 
                 *   D o   t h e   m a c h i n e - s p e c i f i c   f i x u p s   b e f o r e   w e   p a r s e   t h e 
 
                 *   p a r a m e t e r s   o r   t a g s . 
 
                 * / 
 
               i f   ( m d e s c - > f i x u p ) 
 
                             m d e s c - > f i x u p ( m d e s c ,   ( s t r u c t   p a r a m _ s t r u c t   * ) t a g s , 
 
                                                     & f r o m ,   & m e m i n f o ) ; 
 
   
 
               / * 
 
                 *   I f   w e   h a v e   t h e   o l d   s t y l e   p a r a m e t e r s ,   c o n v e r t   t h e m   t o 
 
                 *   a   t a g   l i s t   b e f o r e . 
 
                 * / 
 
               i f   ( t a g s   & &   t a g s - > h d r . t a g   ! =   A T A G _ C O R E ) 
 
                             c o n v e r t _ t o _ t a g _ l i s t ( ( s t r u c t   p a r a m _ s t r u c t   * ) t a g s , 
 
                                                                 m e m i n f o . n r _ b a n k s   = =   0 ) ; 
 
   
 
               i f   ( t a g s   & &   t a g s - > h d r . t a g   = =   A T A G _ C O R E ) 
 
                             p a r s e _ t a g s ( t a g s ) ; 
 
   
 
               i f   ( m e m i n f o . n r _ b a n k s   = =   0 )   { 
 
                             m e m i n f o . n r _ b a n k s             =   1 ; 
 
                             m e m i n f o . b a n k [ 0 ] . s t a r t   =   P H Y S _ O F F S E T ; 
 
                             m e m i n f o . b a n k [ 0 ] . s i z e   =   M E M _ S I Z E ; 
 
               } 
 
   
 
               i n i t _ m m . s t a r t _ c o d e   =   ( u n s i g n e d   l o n g )   & _ t e x t ; 
 
               i n i t _ m m . e n d _ c o d e       =   ( u n s i g n e d   l o n g )   & _ e t e x t ; 
 
               i n i t _ m m . e n d _ d a t a       =   ( u n s i g n e d   l o n g )   & _ e d a t a ; 
 
               i n i t _ m m . b r k               =   ( u n s i g n e d   l o n g )   & _ e n d ; 
 
   
 
               m e m c p y ( s a v e d _ c o m m a n d _ l i n e ,   f r o m ,   C O M M A N D _ L I N E _ S I Z E ) ; 
 
               s a v e d _ c o m m a n d _ l i n e [ C O M M A N D _ L I N E _ S I Z E - 1 ]   =   ' \ 0 ' ; 
 
               p a r s e _ c m d l i n e ( & m e m i n f o ,   c m d l i n e _ p ,   f r o m ) ; 
 
               b o o t m e m _ i n i t ( & m e m i n f o ) ; 
 
               p a g i n g _ i n i t ( & m e m i n f o ,   m d e s c ) ; 
 
               r e q u e s t _ s t a n d a r d _ r e s o u r c e s ( & m e m i n f o ,   m d e s c ) ; 
 
   
 
               / * 
 
                 *   S e t   u p   v a r i o u s   a r c h i t e c t u r e - s p e c i f i c   p o i n t e r s 
 
                 * / 
 
               i n i t _ a r c h _ i r q   =   m d e s c - > i n i t _ i r q ; 
 
   
 
 # i f d e f   C O N F I G _ V T 
 
 # i f   d e f i n e d ( C O N F I G _ V G A _ C O N S O L E ) 
 
               c o n s w i t c h p   =   & v g a _ c o n ; 
 
 # e l i f   d e f i n e d ( C O N F I G _ D U M M Y _ C O N S O L E ) 
 
               c o n s w i t c h p   =   & d u m m y _ c o n ; 
 
 # e n d i f 
 
 # e n d i f 
 
 } 
 
 j . O9ea r c h / a r m / m m / m m - a r m v . c eNa r c h / a r m / m m / vU_-NveN[bNA R M vsQvM M U Yt	
 
 O9e
 
 i n i t _ m a p s - > b u f f e r a b l e   =   0 ; 
 
 :N
 
 i n i t _ m a p s - > b u f f e r a b l e   =   1 ; 
 
 {f>N0WۏL
Nlb~g_vQ8hy
i]\Ov^^ NN{~gvN` [L i n u x Q8h	g_}YvccTecclxNyr[vwƋTvsQvGl0x^m i z i lQSv _SN]~TR:NbN[bN
N]\OُO_\_N(W\m i z i - l i n u x y
i0Rꁫ _Sv5ugvǏz-NS sQ_YNQp
 
 1 	Q8hRYSL i n u x Q8hveQSp/fs t a r t _ k e r n e l ( ) Qpe0[RYSQ8hvvQNRSbUcI R Q S^YqRh[^ߏ_s g͑v/fYf o r k  i n i t  ۏzN/TRte*NYNRsX0
 
 bNSN(Wi n i t -NR
N NNyr[vQ[0
 
 ( 2 ) YqRYqR`SncNL i n u x Q8h_'YR0TvQNd\O|~ N7hYqR:N[N@bc6RvlxNYTd\O|~cOcS0
 
 ,ge,{Vz\USrqRz^vQel0
 
 ( 3 ) eN|~L i n u x  g͑vyr'`KN N1\/f[YyeN|~v/ec0ُyyr'`O_L i n u x _[f0WTvQNd\O|~qQX[0eN|~vi_O_(u7bYgwX[PY
NveNT_e{Q[EirtYveN|~{|W0L i n u x fv/ecY
NTveN|~\Ty[ňveNTeN|~N N*N[tevZbeN|~vb__HTs~(u7b0
 
 bNSN(WK 9 S 1 2 0 8   N A N D   F L A S H 
Ny
ic r a m f s 0j f s s 2 0y a f f s I{F L A S H eN|~0
 
 3 .   i n i t ۏz
 
 (Wi n i t Qpe-N Re SNO_L i n u x /TRvePZPpNHNOY^]SUKNlQSvd e m o g(WvQ-NReQNlQSOo`
 
 s t a t i c   i n t   i n i t ( v o i d   *   u n u s e d ) 
 
 { 
 
               l o c k _ k e r n e l ( ) ; 
 
               d o _ b a s i c _ s e t u p ( ) ; 
 
   
 
               p r e p a r e _ n a m e s p a c e ( ) ; 
 
   
 
               / * 
 
                 *   O k ,   w e   h a v e   c o m p l e t e d   t h e   i n i t i a l   b o o t u p ,   a n d 
 
                 *   w e ' r e   e s s e n t i a l l y   u p   a n d   r u n n i n g .   G e t   r i d   o f   t h e 
 
                 *   i n i t m e m   s e g m e n t s   a n d   s t a r t   t h e   u s e r - m o d e   s t u f f . . 
 
                 * / 
 
               f r e e _ i n i t m e m ( ) ; 
 
               u n l o c k _ k e r n e l ( ) ; 
 
   
 
               i f   ( o p e n ( " / d e v / c o n s o l e " ,   O _ R D W R ,   0 )   <   0 ) 
 
                             p r i n t k ( " W a r n i n g :   u n a b l e   t o   o p e n   a n   i n i t i a l   c o n s o l e . \ n " ) ; 
 
   
 
               ( v o i d )   d u p ( 0 ) ; 
 
               ( v o i d )   d u p ( 0 ) ; 
 
               
 
               / * 
 
                 *   W e   t r y   e a c h   o f   t h e s e   u n t i l   o n e   s u c c e e d s . 
 
                 * 
 
                 *   T h e   B o u r n e   s h e l l   c a n   b e   u s e d   i n s t e a d   o f   i n i t   i f   w e   a r e   
 
                 *   t r y i n g   t o   r e c o v e r   a   r e a l l y   b r o k e n   m a c h i n e . 
 
                 * / 
 
               
 
               p r i n t k ( " = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = \ n " ) ; 
 
               p r i n t k ( " =           F r i e n d l y - A R M   T e c h .   L t d .                     = \ n " ) ; 
 
               p r i n t k ( " =               h t t p : / / w w w . a r m 9 . n e t                         = \ n " ) ;               
 
               p r i n t k ( " =             h t t p : / / w w w . a r m 9 . c o m . c n                     = \ n " ) ; 
 
               p r i n t k ( " = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = \ n " ) ; 
 
   
 
               i f   ( e x e c u t e _ c o m m a n d ) 
 
                             e x e c v e ( e x e c u t e _ c o m m a n d , a r g v _ i n i t , e n v p _ i n i t ) ; 
 
               e x e c v e ( " / s b i n / i n i t " , a r g v _ i n i t , e n v p _ i n i t ) ; 
 
               e x e c v e ( " / e t c / i n i t " , a r g v _ i n i t , e n v p _ i n i t ) ; 
 
               e x e c v e ( " / b i n / i n i t " , a r g v _ i n i t , e n v p _ i n i t ) ; 
 
               e x e c v e ( " / b i n / s h " , a r g v _ i n i t , e n v p _ i n i t ) ; 
 
               p a n i c ( " N o   i n i t   f o u n d .   T r y   p a s s i n g   i n i t =   o p t i o n   t o   k e r n e l . " ) ; 
 
 } 
 
 ُ7h(WL i n u x v/TRǏz-NOY0WQ
 
 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
 
 =                       F r i e n d l y - A R M   T e c h .   L t d .               = 
 
 =                       h t t p : / / w w w . a r m 9 . n e t                       = 
 
 =                       h t t p : / / w w w . a r m 9 . c o m . c n                 = 
 
 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
 
 4 . eN|~y
i
 
 eN|~/fWNRRvX[PY
Nv;
NUSMO
Nv Ny[INeNv}T
T0X[P0~~SSQvel0Yg N*NL i n u x l	g9heN|~[/f
Ncknxv/TRv0VdkbN :NL i n u x R^9heN|~bN\vQR^(WK 9 S 1 2 0 8   N A N D   F L A S H 
N0
 
 L i n u x v9heN|~SSbYNvU_bfYvvU_	
 
 1 	/ b i n   ( b i n a r y ) S+T@w@b	gvhQ}TNT^(uz^
 
 2 	/ d e v   ( d e v i c e ) S+TYveNcS(WL i n u x NeNTYǑ(uTy0Welv|~
Nvk*NY(W/ d e v ̑	g N*N[^vYeN
 
 3 	/ e t c   ( e t c e t e r a ) ُ*NvU_S+T@w|~neNTvQNv|~eNOY/ e t c / f s t a b ( f i l e   s y s t e m   t a b l e ) U_N/TRem o u n t   vf i l e s y s t e m 
 
 4 	/ h o m e X[>e(u7b;NvU_
 
 5 	/ l i b ( l i b r a r y ) X[>e|~ gW,gv^eN
 
 6 	/ m n t (u7b4Nec}eN|~v0We
 
 7 	/ p r o c l i n u x cOv N*NZb|~|~/TRe(WQX[-NNu(u7bSNvcǏُNeNeg_|~Oo`
 
 8 	/ r o o t ~(u7b;NvU_
 
 9 	/ s b i n ُ*NvU_X[>e@w|~{tz^Yf s c k 0m o u n t I{
 
 1 0 	/ t m p ( t e m p o r a r y ) X[>e
NTvz^gbLeNuv4NeeN
 
 1 1 	/ u s r ( u s e r ) X[>e(u7b^(uz^TeN0
 
 Ǒ(uB u s y B o x /f)\9heN|~v}YRlV:NvQ-NcON|~vYW,gcNFO/fvQSOy_\0O@bhTw^tXQ RNvQ\]{O0ROY
TNLub:NTVQNv_Y]wQv^^l^(uNlB u s y B o x _Ny:NL]eQ_L i n u x Wv ^tXQ R 0
 
 dk0W@WSNN}B u s y B o x h t t p : / / w w w . b u s y b o x . n e t S_MR geHr,g:N1 . 1 . 3 0ы}Yb u s y b o x T\vQ>eeQ/ b i n vU_傁O(uvQ-Nv}TNS ^zl i n k Y
 
 l n   - s   . / b u s y b o x   l s 
 
 l n   - s   . / b u s y b o x   m k d i r 
 
 4 . 1   c r a m f s 
 
 (W9heN|~-N:NOb|~vW,gn
Nf9eSNǑ(uc r a m f s <h_[/f NySvX[eN|~06R\Oc r a m f s eN|~vel:N^z N*NvU_\ >e0ReN|~veNc o p y 0Rُ*NvU_ЏL m k c r a m f s   vU_
T  i m a g e 
T 1\SNub N*Nc r a m f s eN|~vi m a g e eN0OYYgvU_
T:Nr o o t f s Rcknxv}TN:N
 
 m k c r a m f s   r o o t f s   r o o t f s . r a m f s 
 
 bNO(uNbv}TNSNm o u n t ubvr o o t f s . r a m f s eNv^gwvQ-NvQ[
 
 m o u n t   - o   l o o p   - t   c r a m f s   r o o t f s . r a m f s   / m o u n t / p o i n t 
 
 dk0W@WSNN}m k c r a m f s ]wQh t t p : / / s o u r c e f o r g e . n e t / p r o j e c t s / c r a m f s / 0
 
 4 . 2   j f s s 2 
 
 [Nc r a m f s X[eN|~Ygl	gr a m f s v/ecRSǑ(uj f s s 2 T h e   J o u r n a l l i n g   F l a s h   F i l e   S y s t e m   v e r s i o n   2 	eN|~RSNvc(WX[-N0Qpenc0j f s s 2   /f N*Ne_~g( l o g - s t r u c t u r e d ) veN|~S+TpencTSpenc( m e t a - d a t a ) vp(WX[
Nz^0WX[P0j f s s 2 U_Nk*NdQWWvdQ!kpeS_X[
NT*NdQWWvdQ!kpev]ݍǏg*N[v <P _YۏLx_cs^avte0tevV{eu/f(WW>WV6ee\dQ!kpe\vdQWW
Nvpency0RdQ!kpe'YvdQWW
NN0Rx_cs^avvv0
 
 Nm k c r a m f s {|<OT7h	g N*Nm k f s . j f f s 2 ]wQSN\ N*NvU_6R\O:Nj f f s 2 eN|~0GPb/ b i n vU_6R\O:Nj f f s 2 eN|~ ЏLv}TN:N
 
 m k f s . j f f s 2   - d   / b i n   - o   j f f s 2 . i m g 
 
 4 . 3   y a f f s 
 
 y a f f s   /f NyN:NL]eQ_|~-N8^(uvX[Yv NySQveN|~[kj f f s 2   eN|~wQ	gf_v/TR^[X[O(u[}T	gf}YvOb:g6R0:NOL i n u x /ecy a f f s eN|~bN \vQ[^vqRReQ0RQ8h-Nf s / y a f f s / v^O9eQ8hMneN0O(ubNO(um k y a f f s ]wQSN\N A N D   F L A S H -NvR:S<h_S:Ny a f f s <h_Y/ b i n / m k y a f f s   / d e v / m t d b l o c k / 0 }TNSN\,{1 *NM T D WWYR:S<h_S:Ny a f f s 	O(um k y a f f s i m a g e {|<ONm k c r a m f s 0m k f s . j f f s 2 	RSN\gvU_ub:Ny a f f s eN|~\P0
 
 L]eQ_L i n u x ؏SNO(uN F S Q~eN|~	ǏN*YQcc9heN|~ُ/f Ny~8^(ueg\O:NՋO(uveN|~/TRe_0ǏQ~ccv9heN|~SN(W;N:g
NubA R M   NSыHr,gvvheNbNۏ6RSgbLeN6qT1\SNvcň}bgbL[
N(uA~0WQeQf l a s h 0
 
 Ǒ(u
NTveN|~/TRelaǏ,{NzN~vB o o t L o a d e r O9e/TRSpeY^]SUKNvd e m o cOYN	Ny/TRe_
 
 1 	Nc r a m f s cc9heN|~r o o t = / d e v / b o n / 2 ( )   
 
 2 	Ny
ivy a f f s cc9heN|~r o o t = / d e v / m t d b l o c k / 0 
 
 3 	NN*YQcc9heN|~r o o t = / d e v / n f s 0
 
 5 . \~
 
 ,gzN~NL]eQ_L i n u x v̀of0y
iyv0i n i t ۏzO9eTeN|~y
iǏُNekbNSN(WL]eQ_|~
N/TR N*NW,gvL i n u x 0
 
 
 
 
 
 WNA R M vL]eQ_L i n u x y
iw[SO4 	  YqR
 
 [[NS2 1 c n b a o @ 2 1 c n . c o m   QY: d e v . y e s k y . c o m 
 
 YqRz^/fd\O|~Q8hT:ghVlxNKNvcS[:N^(uz^O\=lxNv~ N,egL i n u x vYqRz^ [bYNR
 
                    YRYS0ʑ>e
 
                    cOT{|Y
gR
 
                    #Q8hTYKNvpencNbc
 
                    hKmTYtY]\OǏz-NQsv0
 
 L i n u x NvYqRz^~~:N N~[b
NTNRvQpevƖTǏُNQpeO_L i n u x vYd\OrYeN N,0(W^(uz^weglxNYS/f N*NYeN^(uz^SNad\OnfeN N7h[lxNYۏLd\OYo p e n   ( ) 0c l o s e   ( ) 0r e a d   ( ) 0w r i t e   ( )   I{0
 
 L i n u x ;N\YR:NN{|W[&{YTWWY0W[&{Y/fcYSTc6epencNW[&{vb__ۏLWWYRNte*NpencQ:Svb__ۏL0(W[W[&{YSQ/ QBle[EvlxNI / O  N,1\'}c@wSuNWWYR
N6q[)R(u NWW|~QX[\OQ:SS_(u7bۏz[YBln(u7bvBl1\ԏVBlvpencYg
N1\(uBlQpeegۏL[EvI / O d\O0WWY;N[xvI{baY0
 
 1 . QX[RM
 
 1uNL i n u x qRz^(WQ8h-NЏLVdk(WYqRz^ 3u/ ʑ>eQX[e
NO(u(u7b~vm a l l o c / f r e e Qpe 1uQ8h~vQpek m a l l o c / k f r e e   ( )   eg[sk m a l l o c ( ) QpevSW:N
 
 v o i d   k m a l l o c   ( s i z e _ t   s i z e   , i n t   p r i o r i t y ) ; 
 
 Spes i z e :N3uRMQX[vW[pek m a l l o c  gYS _1 2 8 k vQX[Spep r i o r i t y fk m a l l o c ( ) 
Nl
NRMQX[e(u7bۏzǑ(uvR\OG F P _ K E R N E L   h:yI{_sSI{k m a l l o c ( ) Qpe\ NNQX[[c0RNbc:Segn`OvQX[ G F P _ A T O M I C   h:y
NI{_Y
NzsSRM0RQX[RԏV0   <PQpevԏV<PcT]RMQX[vwY0W@WQeԏV0 0
 
 k m a l l o c   ( ) RMvQX[ (uk f r e e ( ) Qpeegʑ>ek f r e e   ( ) [IN:N
 
 #   d e f i n e   k f r e e   ( n )   k f r e e _ s (   ( n )   , 0 ) 
 
 vQ-Nk f r e e _ s   ( )   QpeSW:N
 
 v o i d   k f r e e _ s   ( v o i d   *   p t r   , i n t   s i z e ) ; 
 
 Spep t r :Nk m a l l o c ( ) ԏVv]RMQX[vcs i z e /fʑ>eQX[vW[pe:N0   e1uQ8hꁨRnx[QX[v'Y\0
 
 2 . -Ne
 
 YYmS0R-Ned\OVdk(Wُ7hvYvqRz^-N [lxNNuv-NeBlcO-Ne
gRz^0NlQW,geQSp N7hqRz^_NBlQ8h\yr[v-NeBlT-Ne
gRz^T|(W Nw0(WL i n u x -N(ur e q u e s t _ i r q ( ) Qpeeg[sBl
 
 i n t   r e q u e s t _ i r q   ( u n s i g n e d   i n t   i r q   , v o i d (   *   h a n d l e r )   i n t   , u n s i g n e d   l o n g   t y p e   , c h a r   *   n a m e ) ; 
 
 Spei r q :N-NeBlSSpeh a n d l e r :NcT-Ne
gRz^vcSpet y p e   (uegnx[/fck8^-Ne؏/f_-Neck8^-Nec-Ne
gRP[z^ԏVTQ8hSNgbL^z^egnx[\ЏLT N*Nۏz_-Ne/fc-Ne
gRP[z^ԏVTzsSgbL-Nez^ck8^-Net y p e   S<P:N0   _-Net y p e   S<P:NS A _ I N T E R R U P T 	Spen a m e /fYqRz^v
Ty0
 
 3 . W[&{YqR
 
 bN_{:NW[&{YcO N*NRYSQpeQpe(ueg[b[@bcYvRYS]\Ov^(ur e g i s t e r _ c h r d e v ( )   QpelQW[&{Y0GP	g NW[&{Y e x a m p l e d e v  RvQi n i t   Qpe:N
 
 v o i d   e x a m p l e d e v _ i n i t ( v o i d ) 
 
 { 
 
   i f   ( r e g i s t e r _ c h r d e v ( M A J O R _ N U M ,   "   e x a m p l e d e v   " ,   & e x a m p l e d e v _ f o p s ) ) 
 
         T R A C E _ T X T ( " D e v i c e   e x a m p l e d e v   d r i v e r   r e g i s t e r e d   e r r o r " ) ; 
 
   e l s e 
 
         T R A C E _ T X T ( " D e v i c e   e x a m p l e d e v   d r i v e r   r e g i s t e r e d   s u c c e s s f u l l y " ) ; 
 
   & / / YRYS
 
 } 
 
 vQ-Nr e g i s t e r _ c h r d e v Qpe-NvSpeM A J O R _ N U M :N;NYS,  e x a m p l e d e v  :NY
Te x a m p l e d e v _ f o p s :NS+TW,gQpeeQSpv~gSO{|W:Nf i l e _ o p e r a t i o n s 0S_gbLe x a m p l e d e v _ i n i t e[\(uQ8hQper e g i s t e r _ c h r d e v bqRz^vW,geQSpcX[>e(WQ8hvW[&{Y0W@Wh-N(W(u7bۏz[勾YgbL|~(uecOeQS0W@W0
 
 @wQ8hRvR:_f i l e _ o p e r a t i o n s ~gSO_NS_fR^'Y0FO/f'YYpevqRz^S/f)R(uNvQ-Nv NR[NqRz^-Ne cOvRS bv^MOnv<P:NN U L L 0[NW[&{YegcOv;NeQS	go p e n   ( ) 0r e l e a s e   ( ) 0r e a d   ( ) 0w r i t e   ( ) 0i o c t l   ( ) I{0
 
 o p e n ( ) Qpe 0[YyrkeNۏLo p e n ( ) |~(ue\(uqRz^vo p e n   ( )   Qpe
 
 i n t   ( * o p e n ) ( s t r u c t   i n o d e   *   i n o d e , s t r u c t   f i l e   * f i l p ) ; 
 
 vQ-NSpei n o d e :NYyrkeNvi n o d e   ( "}_~p)   ~gvcSpef i l p /fcTُ NYveN~gvc0o p e n ( ) v;NNR/fnx[lxNY(W1\~r`0!kYSvTl'`( !kYSSN(uM I N O R ( i n o d e - >   i _ r d e v )   S_) 0c6RO(uYvۏzpe09hncgbL`QԏVr`x( 0 h:ybRpeh:yX[(W)   I{
 
 r e l e a s e ( ) Qpe 0S_ gT N*NSb _Yv(u7bۏzgbLc l o s e   ( ) |~(ueQ8h\(uqRz^vr e l e a s e   ( )   Qpe
 
 v o i d   ( * r e l e a s e )   ( s t r u c t   i n o d e   *   i n o d e , s t r u c t   f i l e   * f i l p )   ; 
 
 r e l e a s e   Qpev;NNR/fnt*g~_gveQ/ Qd\O0ʑ>eDn0(u7bꁚ[INcNh_v
YMOI{0
 
 r e a d ( ) Qpe 0S_[YyrkeNۏLr e a d ( )   |~(ue\(uqRz^r e a d ( )   Qpe
 
 s s i z e _ t   ( * r e a d )   ( s t r u c t   f i l e   *   f i l p ,   c h a r   *   b u f ,   s i z e _ t   c o u n t ,   l o f f _ t   *   o f f p ) ; 
 
 Speb u f /fcT(u7bzzQ:Svc1u(u7bۏz~Qc o u n t   :N(u7bۏzBlSvW[pe_N1u(u7b~Q0
 
 r e a d ( )   QpevR1\/fNlxYbQ8hQX[-NSb
Y6Rc o u n t *NW[0Rb u f   c[vQ:S-N0(W
Y6RpencelaqRz^ЏL(WQ8h-Nb u f c[vQ:S(W(u7bQX[:S-N/f
Nvc(WQ8h-NO(uvVdk_{O(uyrkv
Y6RQpeeg[b
Y6R]\OُNQpe(Wi n c l u d e / a s m / u a c c e s s . h -NXf
 
 u n s i g n e d   l o n g   c o p y _ t o _ u s e r   ( v o i d   *   t o ,   v o i d   *   f r o m ,   u n s i g n e d   l o n g   l e n ) ; 
 
 dkYp u t _ u s e r ( ) Qpe(uNQ8hzzT(u7bzzvUS<PNNYc h a r 0i n t 0l o n g 	0
 
 w r i t e (   )   Qpe 0S_YyrkeNۏLw r i t e   ( )   |~(ue\(uqRz^vw r i t e   ( )   Qpe
 
 s s i z e _ t   ( * w r i t e )   ( s t r u c t   f i l e   * ,   c o n s t   c h a r   * ,   s i z e _ t ,   l o f f _ t   * ) ; 
 
 w r i t e   ( ) vR/f\Speb u f   c[vQ:S-Nvc o u n t   *NW[Q[
Y6R0RlxNbQ8hQX[-NTr e a d ( )    N7h
Y6R]\O_N 1uyrkQpeeg[b
 
 u n s i g n e d   l o n g   c o p y _ f r o m _ u s e r ( v o i d   * t o ,   c o n s t   v o i d   * f r o m ,   u n s i g n e d   l o n g   n ) ; 
 
 dkYg e t _ u s e r ( ) Qpe(uNQ8hzzT(u7bzzvUS<PNNYc h a r 0i n t 0l o n g 	0
 
 i o c t l ( )   Qpe 0Qpe/fyrkvc6RQpeSNǏ[TY Oc6ROo`bNYS_r`Oo`QpeSW:N
 
 i n t   ( * i o c t l )   ( s t r u c t   i n o d e   *   i n o d e , s t r u c t   f i l e   *   f i l p , u n s i g n e d   i n t   c m d , u n s i g n e d   l o n g   a r g ) ; 
 
 Spec m d :NYqRz^gbLv}TNvNx1u(u7bꁚ[INSpea r g   :Nv^v}TNcOSpe{|WSN/fteW0cI{0
 
 T7h(WqRz^-NُNQpev[IN_N_{&{T}T
TĉR	cgq,ge~[Y e x a m p l e d e v  vqRz^vُNQpe^R+R}T
T:Ne x a m p l e d e v _ o p e n 0e x a m p l e d e v _   r e l e a s e 0e x a m p l e d e v _ r e a d 0e x a m p l e d e v _ w r i t e 0e x a m p l e d e v _ i o c t l VdkY e x a m p l e d e v  vW,geQSp~gSϑe x a m p l e d e v _ f o p s   K<PYN[eHr,gvQ8h	
 
 s t r u c t   f i l e _ o p e r a t i o n s   e x a m p l e d e v _ f o p s   { 
 
  0N U L L   , 
 
  0e x a m p l e d e v _ r e a d   , 
 
  0e x a m p l e d e v _ w r i t e   , 
 
  0N U L L   , 
 
  0N U L L   , 
 
  0e x a m p l e d e v _ i o c t l   , 
 
  0N U L L   , 
 
  0e x a m p l e d e v _ o p e n   , 
 
  0e x a m p l e d e v _ r e l e a s e   , 
 
  0N U L L   , 
 
  0N U L L   , 
 
  0N U L L   , 
 
  0N U L L 
 
 }   ; 
 
               1\vMR 1uNf i l e _ o p e r a t i o n s ~gSO]~_^'YbNfT(uG N U ibU\vC legRYSe x a m p l e d e v _ f o p s 
 
 s t r u c t   f i l e _ o p e r a t i o n s   e x a m p l e d e v _ f o p s   =   { 
 
 r e a d :   e x a m p l e d e v   _ r e a d , 
 
 w r i t e :   e x a m p l e d e v   _ w r i t e , 
 
 i o c t l :   e x a m p l e d e v _ i o c t l   , 
 
 o p e n :   e x a m p l e d e v _ o p e n   , 
 
 r e l e a s e   :   e x a m p l e d e v _ r e l e a s e   , 
 
 } ; 
 
 ww,{ Nz5uglxNStVg
NS+TV*N(u7bSzvSIQNg{L E D 	ُNL E D ޏc(WA R M YthVvSzI / O SG P I O 	
Ns(WegQُNL E D vqR
 
 # i n c l u d e   < l i n u x / c o n f i g . h > 
 
 # i n c l u d e   < l i n u x / k e r n e l . h > 
 
 # i n c l u d e   < l i n u x / i n i t . h > 
 
 # i n c l u d e   < l i n u x / m i s c d e v i c e . h > 
 
 # i n c l u d e   < l i n u x / s c h e d . h > 
 
 # i n c l u d e   < l i n u x / d e l a y . h > 
 
 # i n c l u d e   < a s m / h a r d w a r e . h > 
 
 # d e f i n e   D E V I C E _ N A M E   " l e d s "   / * [INl e d   Yv
TW[* / 
 
 # d e f i n e   L E D _ M A J O R   2 3 1   / * [INl e d   Yv;NYS* / 
 
 s t a t i c   u n s i g n e d   l o n g   l e d _ t a b l e [ ]   = 
 
 { 
 
   / * I / O   e_l e d   Y[^vlxNDn* / 
 
   G P I O _ B 1 0 ,   G P I O _ B 8 ,   G P I O _ B 5 ,   G P I O _ B 6 , 
 
 } ; 
 
 / * O(ui o c t l   c6Rl e d * / 
 
 s t a t i c   i n t   l e d s _ i o c t l ( s t r u c t   i n o d e   * i n o d e ,   s t r u c t   f i l e   * f i l e ,   u n s i g n e d   i n t   c m d , 
 
   u n s i g n e d   l o n g   a r g ) 
 
 { 
 
   s w i t c h   ( c m d ) 
 
   { 
 
         c a s e   0 : 
 
         c a s e   1 : 
 
             i f   ( a r g   >   4 ) 
 
             { 
 
                 r e t u r n   - E I N V A L ; 
 
             } 
 
             w r i t e _ g p i o _ b i t ( l e d _ t a b l e [ a r g ] ,   ! c m d ) ; 
 
         d e f a u l t : 
 
             r e t u r n   - E I N V A L ; 
 
   } 
 
 } 
 
   
 
 s t a t i c   s t r u c t   f i l e _ o p e r a t i o n s   l e d s _ f o p s   = 
 
 { 
 
   o w n e r :   T H I S _ M O D U L E ,   i o c t l :   l e d s _ i o c t l , 
 
 } ; 
 
 s t a t i c   d e v f s _ h a n d l e _ t   d e v f s _ h a n d l e ; 
 
 s t a t i c   i n t   _ _ i n i t   l e d s _ i n i t ( v o i d ) 
 
 { 
 
   i n t   r e t ; 
 
   i n t   i ; 
 
   / * (WQ8h-NlQY* / 
 
   r e t   =   r e g i s t e r _ c h r d e v ( L E D _ M A J O R ,   D E V I C E _ N A M E ,   & l e d s _ f o p s ) ; 
 
   i f   ( r e t   <   0 ) 
 
   { 
 
         p r i n t k ( D E V I C E _ N A M E   "   c a n ' t   r e g i s t e r   m a j o r   n u m b e r \ n " ) ; 
 
         r e t u r n   r e t ; 
 
   } 
 
   d e v f s _ h a n d l e   =   d e v f s _ r e g i s t e r ( N U L L ,   D E V I C E _ N A M E ,   D E V F S _ F L _ D E F A U L T ,   L E D _ M A J O R , 
 
         0 ,   S _ I F C H R   |   S _ I R U S R   |   S _ I W U S R ,   & l e d s _ f o p s ,   N U L L ) ; 
 
   / * O(u[ۏLzSRYSs e t _ g p i o _ c t r l   Tw r i t e _ g p i o _ b i t   GW:N[[IN* / 
 
   f o r   ( i   =   0 ;   i   <   8 ;   i + + ) 
 
   { 
 
         s e t _ g p i o _ c t r l ( l e d _ t a b l e [ i ]   |   G P I O _ P U L L U P _ E N   |   G P I O _ M O D E _ O U T ) ; 
 
         w r i t e _ g p i o _ b i t ( l e d _ t a b l e [ i ] ,   1 ) ; 
 
   } 
 
   p r i n t k ( D E V I C E _ N A M E   "   i n i t i a l i z e d \ n " ) ; 
 
   r e t u r n   0 ; 
 
 } 
 
   
 
 s t a t i c   v o i d   _ _ e x i t   l e d s _ e x i t ( v o i d ) 
 
 { 
 
   d e v f s _ u n r e g i s t e r ( d e v f s _ h a n d l e ) ; 
 
   u n r e g i s t e r _ c h r d e v ( L E D _ M A J O R ,   D E V I C E _ N A M E ) ; 
 
 } 
 
   
 
 m o d u l e _ i n i t ( l e d s _ i n i t ) ; 
 
 m o d u l e _ e x i t ( l e d s _ e x i t ) ; 
 
 O(u}TNe_ыl e d   qR!jWW
 
 # a r m - l i n u x - g c c   - D _ _ K E R N E L _ _   - I / a r m / k e r n e l / i n c l u d e 
 
 - D K B U I L D _ B A S E N A M E = l e d s   - D M O D U L E   - c   - o   l e d s . o   l e d s . c 
 
 N
N}TN\ubl e d s . o   eNb勇eN
Y6R0RgP[v/ l i b vU_NO(uNN}TN1\SN[ňl e d s qR!jWW
 
 # i n s m o d   / l i b /   l e d s . o 
 
  Rd!jWWv}TN/f
 
 # r m m o d   l e d s 
 
 4 . WWYqR
 
 WWYqRz^vQ/f N*NimA~v]zvQ^܏ǏW[&{Y
NCSLvNx__Sd[ N*N{USvWWYpeASLNx1\Sd[ N*NW[&{Y0Vdk^_	gvS_vW,gRMb[bdky]\O0NbHQ~Q N*N[OsSm t d b l o c k WWYvqR0bNǏRgdk[O-NvNxegfWWYqRz^vQl1uN{E^vsQ|'YϑvNxweuSOYuN_v;Nr^	
 
 # i n c l u d e   < l i n u x / c o n f i g . h > 
 
 # i n c l u d e   < l i n u x / d e v f s _ f s _ k e r n e l . h > 
 
 s t a t i c   v o i d   m t d _ n o t i f y _ a d d ( s t r u c t   m t d _ i n f o *   m t d ) ; 
 
 s t a t i c   v o i d   m t d _ n o t i f y _ r e m o v e ( s t r u c t   m t d _ i n f o *   m t d ) ; 
 
 s t a t i c   s t r u c t   m t d _ n o t i f i e r   n o t i f i e r   =   { 
 
                 m t d _ n o t i f y _ a d d , 
 
                 m t d _ n o t i f y _ r e m o v e , 
 
                 N U L L 
 
 } ; 
 
 s t a t i c   d e v f s _ h a n d l e _ t   d e v f s _ d i r _ h a n d l e   =   N U L L ; 
 
 s t a t i c   d e v f s _ h a n d l e _ t   d e v f s _ r w _ h a n d l e [ M A X _ M T D _ D E V I C E S ] ; 
 
   
 
 s t a t i c   s t r u c t   m t d b l k _ d e v   { 
 
               s t r u c t   m t d _ i n f o   * m t d ;   / *   L o c k e d   * / 
 
               i n t   c o u n t ; 
 
               s t r u c t   s e m a p h o r e   c a c h e _ s e m ; 
 
               u n s i g n e d   c h a r   * c a c h e _ d a t a ; 
 
               u n s i g n e d   l o n g   c a c h e _ o f f s e t ; 
 
               u n s i g n e d   i n t   c a c h e _ s i z e ; 
 
               e n u m   {   S T A T E _ E M P T Y ,   S T A T E _ C L E A N ,   S T A T E _ D I R T Y   }   c a c h e _ s t a t e ; 
 
 }   * m t d b l k s [ M A X _ M T D _ D E V I C E S ] ; 
 
   
 
 s t a t i c   s p i n l o c k _ t   m t d b l k s _ l o c k ; 
 
 / *   t h i s   l o c k   i s   u s e d   j u s t   i n   k e r n e l s   > =   2 . 5 . x   * /   
 
 s t a t i c   s p i n l o c k _ t   m t d b l o c k _ l o c k ; 
 
   
 
 s t a t i c   i n t   m t d _ s i z e s [ M A X _ M T D _ D E V I C E S ] ; 
 
 s t a t i c   i n t   m t d _ b l k s i z e s [ M A X _ M T D _ D E V I C E S ] ; 
 
   
 
 s t a t i c   v o i d   e r a s e _ c a l l b a c k ( s t r u c t   e r a s e _ i n f o   * d o n e ) 
 
 { 
 
               w a i t _ q u e u e _ h e a d _ t   * w a i t _ q   =   ( w a i t _ q u e u e _ h e a d _ t   * ) d o n e - > p r i v ; 
 
               w a k e _ u p ( w a i t _ q ) ; 
 
 } 
 
   
 
 s t a t i c   i n t   e r a s e _ w r i t e   ( s t r u c t   m t d _ i n f o   * m t d ,   u n s i g n e d   l o n g   p o s ,   
 
                                           i n t   l e n ,   c o n s t   c h a r   * b u f ) 
 
 { 
 
               s t r u c t   e r a s e _ i n f o   e r a s e ; 
 
               D E C L A R E _ W A I T Q U E U E ( w a i t ,   c u r r e n t ) ; 
 
               w a i t _ q u e u e _ h e a d _ t   w a i t _ q ; 
 
               s i z e _ t   r e t l e n ; 
 
               i n t   r e t ; 
 
   
 
               / * 
 
                 *   F i r s t ,   l e t ' s   e r a s e   t h e   f l a s h   b l o c k . 
 
                 * / 
 
   
 
               i n i t _ w a i t q u e u e _ h e a d ( & w a i t _ q ) ; 
 
               e r a s e . m t d   =   m t d ; 
 
               e r a s e . c a l l b a c k   =   e r a s e _ c a l l b a c k ; 
 
               e r a s e . a d d r   =   p o s ; 
 
               e r a s e . l e n   =   l e n ; 
 
               e r a s e . p r i v   =   ( u _ l o n g ) & w a i t _ q ; 
 
   
 
               s e t _ c u r r e n t _ s t a t e ( T A S K _ I N T E R R U P T I B L E ) ; 
 
               a d d _ w a i t _ q u e u e ( & w a i t _ q ,   & w a i t ) ; 
 
   
 
               r e t   =   M T D _ E R A S E ( m t d ,   & e r a s e ) ; 
 
               i f   ( r e t )   { 
 
                             s e t _ c u r r e n t _ s t a t e ( T A S K _ R U N N I N G ) ; 
 
                             r e m o v e _ w a i t _ q u e u e ( & w a i t _ q ,   & w a i t ) ; 
 
                             p r i n t k   ( K E R N _ W A R N I N G   " m t d b l o c k :   e r a s e   o f   r e g i o n   [ 0 x % l x ,   0 x % x ]   " 
 
                                                                   " o n   \ " % s \ "   f a i l e d \ n " , 
 
                                           p o s ,   l e n ,   m t d - > n a m e ) ; 
 
                             r e t u r n   r e t ; 
 
               } 
 
   
 
               s c h e d u l e ( ) ;   / *   W a i t   f o r   e r a s e   t o   f i n i s h .   * / 
 
               r e m o v e _ w a i t _ q u e u e ( & w a i t _ q ,   & w a i t ) ; 
 
   
 
               / * 
 
                 *   N e x t ,   w r i t h e   d a t a   t o   f l a s h . 
 
                 * / 
 
   
 
               r e t   =   M T D _ W R I T E   ( m t d ,   p o s ,   l e n ,   & r e t l e n ,   b u f ) ; 
 
               i f   ( r e t ) 
 
                             r e t u r n   r e t ; 
 
               i f   ( r e t l e n   ! =   l e n ) 
 
                             r e t u r n   - E I O ; 
 
               r e t u r n   0 ; 
 
 } 
 
   
 
   
 
 s t a t i c   i n t   w r i t e _ c a c h e d _ d a t a   ( s t r u c t   m t d b l k _ d e v   * m t d b l k ) 
 
 { 
 
               s t r u c t   m t d _ i n f o   * m t d   =   m t d b l k - > m t d ; 
 
               i n t   r e t ; 
 
   
 
               i f   ( m t d b l k - > c a c h e _ s t a t e   ! =   S T A T E _ D I R T Y ) 
 
                             r e t u r n   0 ; 
 
   
 
               D E B U G ( M T D _ D E B U G _ L E V E L 2 ,   " m t d b l o c k :   w r i t i n g   c a c h e d   d a t a   f o r   \ " % s \ "   " 
 
                                           " a t   0 x % l x ,   s i z e   0 x % x \ n " ,   m t d - > n a m e ,   
 
                                           m t d b l k - > c a c h e _ o f f s e t ,   m t d b l k - > c a c h e _ s i z e ) ; 
 
               
 
               r e t   =   e r a s e _ w r i t e   ( m t d ,   m t d b l k - > c a c h e _ o f f s e t ,   
 
                                                 m t d b l k - > c a c h e _ s i z e ,   m t d b l k - > c a c h e _ d a t a ) ; 
 
               i f   ( r e t ) 
 
                             r e t u r n   r e t ; 
 
   
 
               m t d b l k - > c a c h e _ s t a t e   =   S T A T E _ E M P T Y ; 
 
               r e t u r n   0 ; 
 
 } 
 
   
 
 s t a t i c   i n t   d o _ c a c h e d _ w r i t e   ( s t r u c t   m t d b l k _ d e v   * m t d b l k ,   u n s i g n e d   l o n g   p o s ,   
 
                                                   i n t   l e n ,   c o n s t   c h a r   * b u f ) 
 
 { 
 
 & 
 
 } 
 
   
 
 s t a t i c   i n t   d o _ c a c h e d _ r e a d   ( s t r u c t   m t d b l k _ d e v   * m t d b l k ,   u n s i g n e d   l o n g   p o s ,   
 
                                                 i n t   l e n ,   c h a r   * b u f ) 
 
 { 
 
 & 
 
 } 
 
   
 
 s t a t i c   i n t   m t d b l o c k _ o p e n ( s t r u c t   i n o d e   * i n o d e ,   s t r u c t   f i l e   * f i l e ) 
 
 { 
 
 & 
 
 } 
 
   
 
 s t a t i c   r e l e a s e _ t   m t d b l o c k _ r e l e a s e ( s t r u c t   i n o d e   * i n o d e ,   s t r u c t   f i l e   * f i l e ) 
 
 { 
 
               i n t   d e v ; 
 
               s t r u c t   m t d b l k _ d e v   * m t d b l k ; 
 
         D E B U G ( M T D _ D E B U G _ L E V E L 1 ,   " m t d b l o c k _ r e l e a s e \ n " ) ; 
 
   
 
               i f   ( i n o d e   = =   N U L L ) 
 
                             r e l e a s e _ r e t u r n ( - E N O D E V ) ; 
 
   
 
               d e v   =   m i n o r ( i n o d e - > i _ r d e v ) ; 
 
               m t d b l k   =   m t d b l k s [ d e v ] ; 
 
   
 
               d o w n ( & m t d b l k - > c a c h e _ s e m ) ; 
 
               w r i t e _ c a c h e d _ d a t a ( m t d b l k ) ; 
 
               u p ( & m t d b l k - > c a c h e _ s e m ) ; 
 
   
 
               s p i n _ l o c k ( & m t d b l k s _ l o c k ) ; 
 
               i f   ( ! - - m t d b l k - > c o u n t )   { 
 
                             / *   I t   w a s   t h e   l a s t   u s a g e .   F r e e   t h e   d e v i c e   * / 
 
                             m t d b l k s [ d e v ]   =   N U L L ; 
 
                             s p i n _ u n l o c k ( & m t d b l k s _ l o c k ) ; 
 
                             i f   ( m t d b l k - > m t d - > s y n c ) 
 
                                           m t d b l k - > m t d - > s y n c ( m t d b l k - > m t d ) ; 
 
                             p u t _ m t d _ d e v i c e ( m t d b l k - > m t d ) ; 
 
                             v f r e e ( m t d b l k - > c a c h e _ d a t a ) ; 
 
                             k f r e e ( m t d b l k ) ; 
 
               }   e l s e   { 
 
                             s p i n _ u n l o c k ( & m t d b l k s _ l o c k ) ; 
 
               } 
 
   
 
               D E B U G ( M T D _ D E B U G _ L E V E L 1 ,   " o k \ n " ) ; 
 
   
 
               B L K _ D E C _ U S E _ C O U N T ; 
 
               r e l e a s e _ r e t u r n ( 0 ) ; 
 
 }   
 
   
 
   
 
 / *   
 
   *   T h i s   i s   a   s p e c i a l   r e q u e s t _ f n   b e c a u s e   i t   i s   e x e c u t e d   i n   a   p r o c e s s   c o n t e x t   
 
   *   t o   b e   a b l e   t o   s l e e p   i n d e p e n d e n t l y   o f   t h e   c a l l e r .   T h e 
 
   *   i o _ r e q u e s t _ l o c k   ( f o r   < 2 . 5 )   o r   q u e u e _ l o c k   ( f o r   > = 2 . 5 )   i s   h e l d   u p o n   e n t r y   
 
   *   a n d   e x i t .   T h e   h e a d   o f   o u r   r e q u e s t   q u e u e   i s   c o n s i d e r e d   a c t i v e   s o   t h e r e   i s 
 
   *   n o   n e e d   t o   d e q u e u e   r e q u e s t s   b e f o r e   w e   a r e   d o n e . 
 
   * / 
 
 s t a t i c   v o i d   h a n d l e _ m t d b l o c k _ r e q u e s t ( v o i d ) 
 
 { 
 
               s t r u c t   r e q u e s t   * r e q ; 
 
               s t r u c t   m t d b l k _ d e v   * m t d b l k ; 
 
               u n s i g n e d   i n t   r e s ; 
 
   
 
               f o r   ( ; ; )   { 
 
                             I N I T _ R E Q U E S T ; 
 
                             r e q   =   C U R R E N T ; 
 
                             s p i n _ u n l o c k _ i r q ( Q U E U E _ L O C K ( Q U E U E ) ) ;   
 
                             m t d b l k   =   m t d b l k s [ m i n o r ( r e q - > r q _ d e v ) ] ; 
 
                             r e s   =   0 ; 
 
   
 
                             i f   ( m i n o r ( r e q - > r q _ d e v )   > =   M A X _ M T D _ D E V I C E S ) 
 
                                           p a n i c ( " % s   :   m i n o r   o u t   o f   b o u n d " ,   _ _ F U N C T I O N _ _ ) ; 
 
   
 
                             i f   ( ! I S _ R E Q _ C M D ( r e q ) ) 
 
                                           g o t o   e n d _ r e q ; 
 
   
 
                             i f   ( ( r e q - > s e c t o r   +   r e q - > c u r r e n t _ n r _ s e c t o r s )   >   ( m t d b l k - > m t d - > s i z e   > >   9 ) ) 
 
                                           g o t o   e n d _ r e q ; 
 
   
 
                             / /   H a n d l e   t h e   r e q u e s t 
 
                             s w i t c h   ( r q _ d a t a _ d i r ( r e q ) ) 
 
                             { 
 
                                           i n t   e r r ; 
 
   
 
                                           c a s e   R E A D : 
 
                                           d o w n ( & m t d b l k - > c a c h e _ s e m ) ; 
 
                                           e r r   =   d o _ c a c h e d _ r e a d   ( m t d b l k ,   r e q - > s e c t o r   < <   9 ,   
 
                                                                       r e q - > c u r r e n t _ n r _ s e c t o r s   < <   9 , 
 
                                                                       r e q - > b u f f e r ) ; 
 
                                           u p ( & m t d b l k - > c a c h e _ s e m ) ; 
 
                                           i f   ( ! e r r ) 
 
                                                         r e s   =   1 ; 
 
                                           b r e a k ; 
 
   
 
                                           c a s e   W R I T E : 
 
                                           / /   R e a d   o n l y   d e v i c e 
 
                                           i f   (   ! ( m t d b l k - > m t d - > f l a g s   &   M T D _ W R I T E A B L E )   )   
 
                                                         b r e a k ; 
 
   
 
                                           / /   D o   t h e   w r i t e 
 
                                           d o w n ( & m t d b l k - > c a c h e _ s e m ) ; 
 
                                           e r r   =   d o _ c a c h e d _ w r i t e   ( m t d b l k ,   r e q - > s e c t o r   < <   9 , 
 
                                                                       r e q - > c u r r e n t _ n r _ s e c t o r s   < <   9 ,   
 
                                                                       r e q - > b u f f e r ) ; 
 
                                           u p ( & m t d b l k - > c a c h e _ s e m ) ; 
 
                                           i f   ( ! e r r ) 
 
                                                         r e s   =   1 ; 
 
                                           b r e a k ; 
 
                             } 
 
   
 
 e n d _ r e q : 
 
                             s p i n _ l o c k _ i r q ( Q U E U E _ L O C K ( Q U E U E ) ) ;   
 
                             e n d _ r e q u e s t ( r e s ) ; 
 
               } 
 
 } 
 
   
 
 s t a t i c   v o l a t i l e   i n t   l e a v i n g   =   0 ; 
 
 s t a t i c   D E C L A R E _ M U T E X _ L O C K E D ( t h r e a d _ s e m ) ; 
 
 s t a t i c   D E C L A R E _ W A I T _ Q U E U E _ H E A D ( t h r _ w q ) ; 
 
   
 
 i n t   m t d b l o c k _ t h r e a d ( v o i d   * d u m m y ) 
 
 { 
 
 & 
 
 } 
 
   
 
 # d e f i n e   R Q F U N C _ A R G   r e q u e s t _ q u e u e _ t   * q 
 
   
 
 s t a t i c   v o i d   m t d b l o c k _ r e q u e s t ( R Q F U N C _ A R G ) 
 
 { 
 
               / *   D o n ' t   d o   a n y t h i n g ,   e x c e p t   w a k e   t h e   t h r e a d   i f   n e c e s s a r y   * / 
 
               w a k e _ u p ( & t h r _ w q ) ; 
 
 } 
 
   
 
 s t a t i c   i n t   m t d b l o c k _ i o c t l ( s t r u c t   i n o d e   *   i n o d e ,   s t r u c t   f i l e   *   f i l e , 
 
                                         u n s i g n e d   i n t   c m d ,   u n s i g n e d   l o n g   a r g ) 
 
 { 
 
               s t r u c t   m t d b l k _ d e v   * m t d b l k ; 
 
   
 
               m t d b l k   =   m t d b l k s [ m i n o r ( i n o d e - > i _ r d e v ) ] ; 
 
   
 
               s w i t c h   ( c m d )   { 
 
               c a s e   B L K G E T S I Z E :       / *   R e t u r n   d e v i c e   s i z e   * / 
 
                             r e t u r n   p u t _ u s e r ( ( m t d b l k - > m t d - > s i z e   > >   9 ) ,   ( u n s i g n e d   l o n g   * )   a r g ) ; 
 
   
 
                             
 
               c a s e   B L K F L S B U F : 
 
                             i f ( ! c a p a b l e ( C A P _ S Y S _ A D M I N ) ) 
 
                                           r e t u r n   - E A C C E S ; 
 
   
 
                             f s y n c _ d e v ( i n o d e - > i _ r d e v ) ; 
 
                             i n v a l i d a t e _ b u f f e r s ( i n o d e - > i _ r d e v ) ; 
 
                             d o w n ( & m t d b l k - > c a c h e _ s e m ) ; 
 
                             w r i t e _ c a c h e d _ d a t a ( m t d b l k ) ; 
 
                             u p ( & m t d b l k - > c a c h e _ s e m ) ; 
 
                             i f   ( m t d b l k - > m t d - > s y n c ) 
 
                                           m t d b l k - > m t d - > s y n c ( m t d b l k - > m t d ) ; 
 
                             r e t u r n   0 ; 
 
   
 
               d e f a u l t : 
 
                             r e t u r n   - E I N V A L ; 
 
               } 
 
 } 
 
   
 
 s t a t i c   s t r u c t   b l o c k _ d e v i c e _ o p e r a t i o n s   m t d _ f o p s   =   
 
 { 
 
               o w n e r :   T H I S _ M O D U L E , 
 
               o p e n :   m t d b l o c k _ o p e n , 
 
               r e l e a s e :   m t d b l o c k _ r e l e a s e , 
 
               i o c t l :   m t d b l o c k _ i o c t l 
 
 } ; 
 
   
 
 s t a t i c   v o i d   m t d _ n o t i f y _ a d d ( s t r u c t   m t d _ i n f o *   m t d ) 
 
 { 
 
 & 
 
 } 
 
   
 
 s t a t i c   v o i d   m t d _ n o t i f y _ r e m o v e ( s t r u c t   m t d _ i n f o *   m t d ) 
 
 { 
 
                 i f   ( ! m t d   | |   m t d - > t y p e   = =   M T D _ A B S E N T ) 
 
                                 r e t u r n ; 
 
   
 
                 d e v f s _ u n r e g i s t e r ( d e v f s _ r w _ h a n d l e [ m t d - > i n d e x ] ) ; 
 
 } 
 
   
 
 i n t   _ _ i n i t   i n i t _ m t d b l o c k ( v o i d ) 
 
 { 
 
               i n t   i ; 
 
   
 
               s p i n _ l o c k _ i n i t ( & m t d b l k s _ l o c k ) ; 
 
               / *   t h i s   l o c k   i s   u s e d   j u s t   i n   k e r n e l s   > =   2 . 5 . x   * / 
 
               s p i n _ l o c k _ i n i t ( & m t d b l o c k _ l o c k ) ; 
 
   
 
 # i f d e f   C O N F I G _ D E V F S _ F S 
 
               i f   ( d e v f s _ r e g i s t e r _ b l k d e v ( M T D _ B L O C K _ M A J O R ,   D E V I C E _ N A M E ,   & m t d _ f o p s ) ) 
 
               { 
 
                             p r i n t k ( K E R N _ N O T I C E   " C a n ' t   a l l o c a t e   m a j o r   n u m b e r   % d   f o r   M e m o r y   T e c h n o l o g y   D e v i c e s . \ n " , 
 
                                           M T D _ B L O C K _ M A J O R ) ; 
 
                             r e t u r n   - E A G A I N ; 
 
               } 
 
   
 
               d e v f s _ d i r _ h a n d l e   =   d e v f s _ m k _ d i r ( N U L L ,   D E V I C E _ N A M E ,   N U L L ) ; 
 
               r e g i s t e r _ m t d _ u s e r ( & n o t i f i e r ) ; 
 
 # e l s e 
 
               i f   ( r e g i s t e r _ b l k d e v ( M A J O R _ N R , D E V I C E _ N A M E , & m t d _ f o p s ) )   { 
 
                             p r i n t k ( K E R N _ N O T I C E   " C a n ' t   a l l o c a t e   m a j o r   n u m b e r   % d   f o r   M e m o r y   T e c h n o l o g y   D e v i c e s . \ n " , 
 
                                           M T D _ B L O C K _ M A J O R ) ; 
 
                             r e t u r n   - E A G A I N ; 
 
               } 
 
 # e n d i f 
 
               
 
               / *   W e   f i l l   i t   i n   a t   o p e n ( )   t i m e .   * / 
 
               f o r   ( i = 0 ;   i <   M A X _ M T D _ D E V I C E S ;   i + + )   { 
 
                             m t d _ s i z e s [ i ]   =   0 ; 
 
                             m t d _ b l k s i z e s [ i ]   =   B L O C K _ S I Z E ; 
 
               } 
 
               i n i t _ w a i t q u e u e _ h e a d ( & t h r _ w q ) ; 
 
               / *   A l l o w   t h e   b l o c k   s i z e   t o   d e f a u l t   t o   B L O C K _ S I Z E .   * / 
 
               b l k s i z e _ s i z e [ M A J O R _ N R ]   =   m t d _ b l k s i z e s ; 
 
               b l k _ s i z e [ M A J O R _ N R ]   =   m t d _ s i z e s ; 
 
   
 
               B L K _ I N I T _ Q U E U E ( B L K _ D E F A U L T _ Q U E U E ( M A J O R _ N R ) ,   & m t d b l o c k _ r e q u e s t ,   & m t d b l o c k _ l o c k ) ; 
 
                                     
 
               k e r n e l _ t h r e a d   ( m t d b l o c k _ t h r e a d ,   N U L L ,   C L O N E _ F S | C L O N E _ F I L E S | C L O N E _ S I G H A N D ) ; 
 
               r e t u r n   0 ; 
 
 } 
 
   
 
 s t a t i c   v o i d   _ _ e x i t   c l e a n u p _ m t d b l o c k ( v o i d ) 
 
 { 
 
               l e a v i n g   =   1 ; 
 
               w a k e _ u p ( & t h r _ w q ) ; 
 
               d o w n ( & t h r e a d _ s e m ) ; 
 
 # i f d e f   C O N F I G _ D E V F S _ F S 
 
               u n r e g i s t e r _ m t d _ u s e r ( & n o t i f i e r ) ; 
 
               d e v f s _ u n r e g i s t e r ( d e v f s _ d i r _ h a n d l e ) ; 
 
               d e v f s _ u n r e g i s t e r _ b l k d e v ( M T D _ B L O C K _ M A J O R ,   D E V I C E _ N A M E ) ; 
 
 # e l s e 
 
               u n r e g i s t e r _ b l k d e v ( M A J O R _ N R , D E V I C E _ N A M E ) ; 
 
 # e n d i f 
 
               b l k _ c l e a n u p _ q u e u e ( B L K _ D E F A U L T _ Q U E U E ( M A J O R _ N R ) ) ; 
 
               b l k s i z e _ s i z e [ M A J O R _ N R ]   =   N U L L ; 
 
               b l k _ s i z e [ M A J O R _ N R ]   =   N U L L ; 
 
 } 
 
   
 
 m o d u l e _ i n i t ( i n i t _ m t d b l o c k ) ; 
 
 m o d u l e _ e x i t ( c l e a n u p _ m t d b l o c k ) ; 
 
 N
NnNx-NbNSsWWY_NNNW[&{Yr e g i s t e r _ c h r d e v 0u n r e g i s t e r _   c h r d e v   Qpe{|<OvelۏLYvlQNʑ>e
 
 i n t   r e g i s t e r _ b l k d e v ( u n s i g n e d   i n t   m a j o r ,   c o n s t   c h a r   * n a m e ,     s t r u c t   b l o c k _ d e v i c e _ o p e r a t i o n s   * b d o p s ) ;   
 
 i n t   u n r e g i s t e r _ b l k d e v ( u n s i g n e d   i n t   m a j o r ,   c o n s t   c h a r   * n a m e ) ; 
 
 FO/fr e g i s t e r _ c h r d e v O(u N*NT  f i l e _ o p e r a t i o n s   ~gvcr e g i s t e r _ b l k d e v   RO(u  b l o c k _ d e v i c e _ o p e r a t i o n s   ~gvcvQ-N[INvo p e n 0r e l e a s e   T  i o c t l   elTW[&{Yv[^elvTFO*g[IN  r e a d   b  w r i t e   d\O0ُ/fV:N@b	gmS0RWWYv  I / O   8^1u|~ۏLQYt0
 
 WWqRz^ g~_{cO[b[EWW  I / O   d\Ov:g6R(W  L i n u x   S_-N(uNُN  I / O   d\Ovely:N r e q u e s t Bl	 0(WWWYvlQǏz-N RYSr e q u e s t Rُ NR\OǏb l k _ i n i t _ q u e u e eg[bb l k _ i n i t _ q u e u e Qpe^zRv^\qRz^v  r e q u e s t   QpesQT0RR0(W!jWWvnd6k^(u  b l k _ c l e a n u p _ q u e u e   Qpe0
 
 ,gO-NvsQvNx:N
 
 B L K _ I N I T _ Q U E U E ( B L K _ D E F A U L T _ Q U E U E ( M A J O R _ N R ) ,   & m t d b l o c k _ r e q u e s t ,   & m t d b l o c k _ l o c k ) ; 
 
 b l k _ c l e a n u p _ q u e u e ( B L K _ D E F A U L T _ Q U E U E ( M A J O R _ N R ) ) ; 
 
 k*NY	g N*N؞O(uvBlR_eSO(u  B L K _ D E F A U L T _ Q U E U E ( m a j o r )   [_0R؞R0ُ*N[(W  b l k _ d e v _ s t r u c t   ~gb_bvhQ@\pe~pe~
T:N  b l k _ d e v 	-Nd"}_0R[^v؞R0b l k _ d e v   pe~1uQ8h~bv^SǏ;NYS"}_0b l k _ d e v _ s t r u c t   cS[INYN
 
 s t r u c t   b l k _ d e v _ s t r u c t   { 
 
               / * 
 
                 *   q u e u e _ p r o c   h a s   t o   b e   a t o m i c 
 
                 * / 
 
               r e q u e s t _ q u e u e _ t                         r e q u e s t _ q u e u e ; 
 
               q u e u e _ p r o c                         * q u e u e ; 
 
               v o i d                               * d a t a ; 
 
 } ; 
 
 r e q u e s t _ q u e u e   bXTS+TNRYSKNTv  I / O   BlRd a t a   bXTS1uqRz^O(uNOOX[ NNy	gpenc0
 
 r e q u e s t _ q u e u e [IN:N
 
 s t r u c t   r e q u e s t _ q u e u e 
 
 { 
 
               / * 
 
                 *   t h e   q u e u e   r e q u e s t   f r e e l i s t ,   o n e   f o r   r e a d s   a n d   o n e   f o r   w r i t e s 
 
                 * / 
 
               s t r u c t   r e q u e s t _ l i s t       r q [ 2 ] ; 
 
   
 
               / * 
 
                 *   T o g e t h e r   w i t h   q u e u e _ h e a d   f o r   c a c h e l i n e   s h a r i n g 
 
                 * / 
 
               s t r u c t   l i s t _ h e a d               q u e u e _ h e a d ; 
 
               e l e v a t o r _ t                             e l e v a t o r ; 
 
   
 
               r e q u e s t _ f n _ p r o c                         *   r e q u e s t _ f n ; 
 
               m e r g e _ r e q u e s t _ f n       *   b a c k _ m e r g e _ f n ; 
 
               m e r g e _ r e q u e s t _ f n       *   f r o n t _ m e r g e _ f n ; 
 
               m e r g e _ r e q u e s t s _ f n   *   m e r g e _ r e q u e s t s _ f n ; 
 
               m a k e _ r e q u e s t _ f n                       *   m a k e _ r e q u e s t _ f n ; 
 
               p l u g _ d e v i c e _ f n                             *   p l u g _ d e v i c e _ f n ; 
 
               / * 
 
                 *   T h e   q u e u e   o w n e r   g e t s   t o   u s e   t h i s   f o r   w h a t e v e r   t h e y   l i k e . 
 
                 *   l l _ r w _ b l k   d o e s n ' t   t o u c h   i t . 
 
                 * / 
 
               v o i d                               *   q u e u e d a t a ; 
 
   
 
               / * 
 
                 *   T h i s   i s   u s e d   t o   r e m o v e   t h e   p l u g   w h e n   t q _ d i s k   r u n s . 
 
                 * / 
 
               s t r u c t   t q _ s t r u c t             p l u g _ t q ; 
 
   
 
               / * 
 
                 *   B o o l e a n   t h a t   i n d i c a t e s   w h e t h e r   t h i s   q u e u e   i s   p l u g g e d   o r   n o t . 
 
                 * / 
 
               c h a r                               p l u g g e d ; 
 
   
 
               / * 
 
                 *   B o o l e a n   t h a t   i n d i c a t e s   w h e t h e r   c u r r e n t _ r e q u e s t   i s   a c t i v e   o r 
 
                 *   n o t . 
 
                 * / 
 
               c h a r                               h e a d _ a c t i v e ; 
 
   
 
               / * 
 
                 *   I s   m e a n t   t o   p r o t e c t   t h e   q u e u e   i n   t h e   f u t u r e   i n s t e a d   o f 
 
                 *   i o _ r e q u e s t _ l o c k 
 
                 * / 
 
               s p i n l o c k _ t                             q u e u e _ l o c k ; 
 
   
 
               / * 
 
                 *   T a s k s   w a i t   h e r e   f o r   f r e e   r e q u e s t 
 
                 * / 
 
               w a i t _ q u e u e _ h e a d _ t   w a i t _ f o r _ r e q u e s t ; 
 
 } ; 
 
 NVh_Nb l k _ d e v 0b l k _ d e v _ s t r u c t Tr e q u e s t _ q u e u e vsQ|
 
   
 
 NVRh_NWWYvlQTʑ>eǏz
 
   
 
 5 . \~
 
 ,gzNL i n u x YqRz^veQSQpeSqRz^-NvQX[3u0-NeI{v^R+RN[ONW[&{YSWWYvqR _Sel0
 
 
 
 
 
 
 
 T r a c k b a c k :   h t t p : / / t b . d o n e w s . n e t / T r a c k B a c k . a s p x ? P o s t I d = 1 0 0 0 0 9 9 
 
 
 
 [ pQdkY6eυ,ge]     ShN2 0 0 6 t^0 8 g1 4 e  8 : 0 7   P M 
 
   
 
 
 
 
 
 
 
 WNA R M vL]eQ_L i n u x y
iw[SO5 	  ^(u[O
 
 [[NS2 1 c n b a o @ 2 1 c n . c o m   QY: d e v . y e s k y . c o m 
 
 ^(u[OvQ[E
N]~
N^\NL i n u x d\O|~y
ivtuFO/f:NNO,g|Rezv[te'`ُ̑cO N|R[L]eQ_L i n u x  _S^(uz^v[O0
 
 QL i n u x ^(uz^(u0RYN]wQ
 
               1 	ыhVG C C 
 
 G C C /fL i n u x s^SN g͑v _S]wQ[/fG N U vC TC + + ыhVvQW,g(ul:Ng c c   [ o p t i o n s ]   [ f i l e n a m e s ] 0
 
 bN^O(ua r m - l i n u x - g c c 0
 
               2 	ՋhVG D B 
 
 g d b /f N*N(uegՋC TC + + z^v:_RՋhVbNǏ[ۏL N|RՋ]\OSbnep0gSϑ0USekI{0
 
 bN^O(ua r m - l i n u x - g d b 0
 
 3 	M a k e 
 
 G N U   M a k e v;N]\O/fۏ N*Ne,geNy:Nm a k e f i l e 0ُ*NeNU_NTNeN1uTNeNNu(uNHN}TNegNu0M a k e O`dkm a k e f i l e -NvOo`hgxv
NveNYgvveNvR^bO9eek[v N*NO`eNev݋m a k e 1\gbLv^v}TNNOfevveN0
 
 M a k e f i l e -NvыĉRv^0WO(ua r m - l i n u x - Hr,g0
 
 4 	Nx
 
 SNO(u O~vv i hVFO g}YǑ(ue m a c s oN[wQYlؚN0Hr,gc6RI{D&^R0
 
 (W[;N:g
N(u
N]wQ[b^(uz^v _STSNǏYN_\z^N}0Rvhg
NЏL
 
 1 	Ǐ2NSOOSr z \z^N}0RvhgveN|~-Na"L i n u x cONr z ُ7hv N*N}TN	
 
 2 	Ǐf t p OOSN[;N:g
Nvf t p vU_̑\z^N}0RvhgveN|~-N
 
 3 	\z^beQU v(Wvh:g
Nm o u n t  0U vЏLU v-Nvz^
 
 4 	Ygvh:gL i n u x O(uN F S eN|~RSNvc\z^beQ0R[;N:gv^vvU_Q(Wvh:gL i n u x -NSNvcO(u0
 
 1 .           eNz
 
 L i n u x veNd\OA P I mS0RR^0Sb _0QTsQ핇eN0
 
 R^
 
 i n t   c r e a t ( c o n s t   c h a r   * f i l e n a m e ,   m o d e _ t   m o d e ) ; 
 
 Spem o d e c[e^eNvX[SCgP[Tu m a s k  NwQ[eNv g~CgPm o d e & u m a s k 	vQ-Nu m a s k NhNeN(WR^e Scv NNX[SCgP0u m a s k SǏ|~(uu m a s k ( ) eg9eS
 
 i n t   u m a s k ( i n t   n e w m a s k ) ; 
 
 (u\u m a s k n:Nn e w m a s k 6qTԏVevu m a s k [Sq_T0QTgbLCgP0
 
 Sb _
 
 i n t   o p e n ( c o n s t   c h a r   * p a t h n a m e ,   i n t   f l a g s ) ;   
 
 i n t   o p e n ( c o n s t   c h a r   * p a t h n a m e ,   i n t   f l a g s ,   m o d e _ t   m o d e ) ; 
 
 Q
 
 (WeNSb _NTbNMbS[eNۏLQNL i n u x -NcOeNQv|~(u/fr e a d 0w r i t e Qpe
 
 i n t   r e a d ( i n t   f d ,   c o n s t   v o i d   * b u f ,   s i z e _ t   l e n g t h ) ; 
 
 i n t   w r i t e ( i n t   f d ,   c o n s t   v o i d   * b u f ,   s i z e _ t   l e n g t h ) ; 
 
 vQ-NSpeb u f :NcTQ:Svcl e n g t h :NQ:Sv'Y\NW[:NUSMO	0Qper e a d ( ) [sNeNc&{f d @bc[veN-NSl e n g t h *NW[0Rb u f @bcTvQ:S-NԏV<P:N[ESvW[pe0Qpew r i t e [s\bl e n g t h *NW[Nb u f cTvQ:S-NQ0ReNc&{f d @bcTveN-NԏV<P:N[EQeQvW[pe0
 
 NO _ C R E A T :Nh_vo p e n [E
N[sNeNR^vRVdkNbvQpeI{Tc r e a t ( ) Qpe
 
 i n t   o p e n ( p a t h n a m e ,   O _ C R E A T   |   O _ W R O N L Y   |   O _ T R U N C ,   m o d e ) ;   
 
 [MO
 
 [N:geNbNSN:gvc[MOnQO(uYNQpeۏL[MO
 
 i n t   l s e e k ( i n t   f d ,   o f f s e t _ t   o f f s e t ,   i n t   w h e n c e ) ; 
 
 l s e e k ( ) \eNQcv[w h e n c e yRo f f s e t *NW[0d\ObReԏVeNcv[NeN4YvMOn0Spew h e n c e SO(uN<P
 
 S E E K _ S E T v[eN _4Y
 
 S E E K _ C U R v[eNQcvS_MRMOn
 
 S E E K _ E N D v[eN+g>\
 
 o f f s e t SS<POYN(uS\eNcv[S_MRMOnTMRyR5 *NW[
 
 l s e e k ( f d ,   - 5 ,   S E E K _ C U R ) ; 
 
 1uNl s e e k QpevԏV<P:NeNcv[NeN4YvMOnVdkNR(uvԏV<P1\/feNv^
 
 l s e e k ( f d ,   0 ,   S E E K _ E N D ) ; 
 
 sQ
 
 S(uc l o s e 1\SNNvQ-Nf d /fbNsQ필veNc&{  
 
 i n t   c l o s e ( i n t   f d ) ; 
 
 NbbNegQ N*N^(uz^(WS_MRvU_NR^(u7bSQeN e x a m p l e . t x t  (WvQ-NQeQ H e l l o   W o r l d  sQ핇eNQ!kSb _[SvQ-NvQ[v^Q(WO\U^
N
 
 # i n c l u d e   < s y s / t y p e s . h > 
 
 # i n c l u d e   < s y s / s t a t . h > 
 
 # i n c l u d e   < f c n t l . h > 
 
 # i n c l u d e   < s t d i o . h > 
 
 # d e f i n e   L E N G T H   1 0 0 
 
 m a i n ( ) 
 
 { 
 
   i n t   f d ,   l e n ; 
 
   c h a r   s t r [ L E N G T H ] ; 
 
   
 
   f d   =   o p e n ( " h e l l o . t x t " ,   O _ C R E A T   |   O _ R D W R ,   S _ I R U S R   |   S _ I W U S R ) ;   / *   R^v^Sb _eN  * / 
 
   i f   ( f d )   
 
   { 
 
   w r i t e ( f d ,   " H e l l o ,   S o f t w a r e   W e e k l y " ,   s t r l e n ( " H e l l o ,   s o f t w a r e   w e e k l y " ) ) ;   / *   QeQH e l l o ,   s o f t w a r e   w e e k l y W[&{2N  * / 
 
   c l o s e ( f d ) ; 
 
   } 
 
   
 
   f d   =   o p e n ( " h e l l o . t x t " ,   O _ R D W R ) ; 
 
   l e n   =   r e a d ( f d ,   s t r ,   L E N G T H ) ;   / *   SeNQ[  * / 
 
   s t r [ l e n ]   =   ' \ 0 ' ; 
 
   p r i n t f ( " % s \ n " ,   s t r ) ; 
 
   c l o s e ( f d ) ; 
 
 } 
 
 2 .           ۏzc6R/ Oz
 
 ۏzc6R-N;NmS0RۏzvR^0aw wT QI{(WL i n u x -N;NcONf o r k 0e x e c 0c l o n e vۏzR^els l e e p vۏzaw wTe x i t vۏz Q(uSYL i n u x ؏cON6rۏzI{_P[ۏz~_gv|~(uw a i t 0
 
 f o r k 
 
 [Nl	gcǏU n i x / L i n u x d\O|~vNegf o r k /f gt㉄vi_KN NV:N[gbL N!ktSԏV$N*N<PNMR @b*g 0HQwNbvz^
 
 i n t   m a i n ( ) 
 
 { 
 
   i n t   i ; 
 
   i f   ( f o r k ( )   = =   0 ) 
 
   { 
 
         f o r   ( i   =   1 ;   i   <   3 ;   i + + ) 
 
             p r i n t f ( " T h i s   i s   c h i l d   p r o c e s s \ n " ) ; 
 
   } 
 
   e l s e 
 
   { 
 
         f o r   ( i   =   1 ;   i   <   3 ;   i + + ) 
 
             p r i n t f ( " T h i s   i s   p a r e n t   p r o c e s s \ n " ) ; 
 
   } 
 
 } 
 
 gbL~g:N
 
 T h i s   i s   c h i l d   p r o c e s s 
 
 T h i s   i s   c h i l d   p r o c e s s 
 
 T h i s   i s   p a r e n t   p r o c e s s 
 
 T h i s   i s   p a r e n t   p r o c e s s 
 
 f o r k (We-N/f RS va` N*Nۏz(WЏL-NYgO(uNf o r k 1\NuNS N*NۏzN/fۏz1\ RS N0S_MRۏz:N6rۏzǏf o r k ( ) ONu N*NP[ۏz0[N6rۏzf o r k QpeԏVP[z^vۏzS[NP[z^f o r k QpeRԏVُ1\/f N*NQpeԏV$N!kv,g(0
 
 e x e c 
 
 (WL i n u x -NSO(ue x e c QpeeS+TY*NQpee x e c l 0e x e c l p 0e x e c l e 0e x e c v 0e x e c v e Te x e c v p 	(uN/TR N*Nc[_TeN
Tvۏz0e x e c QpeevyrpSOs(Wgۏz Ne(uNe x e c {|Qpeck(WgbLvz^1\r^cN|~bNxkfbcbevz^1ue x e c {|QpegbL	vNxv^NS	gvpenckTXhk_N^_evpenckNXhkRMFO/fۏzStSOYu0_N1\/fe x e c gbLv~g:N|~:Nck(WgbLv؏/fSHQvۏzFO/fۏz[^vz^fbcN0
 
 f o r k QpeSNR^ N*NP[ۏzS_MRۏz
N{kYgbN(Wf o r k vP[ۏz-N(ue x e c Qpee1\SN[se6rۏzvNxgbLS/TR N*Nevc[ۏzُ_}Y0f o r k Te x e c v-dM]Y0W㉳QNz^/TRS Nz^vgbLFO]N~~ЏLvwNbvOP[
 
 c h a r   c o m m a n d [ M A X _ C M D _ L E N ] ; 
 
 v o i d   m a i n ( ) 
 
 { 
 
   i n t   r t n ;   / *   P[ۏzvԏVpe<P  * / 
 
   w h i l e   ( 1 ) 
 
   { 
 
         / *   N~zSgbLv}TN  * / 
 
         p r i n t f ( " > " ) ; 
 
         f g e t s ( c o m m a n d ,   M A X _ C M D _ L E N ,   s t d i n ) ; 
 
         c o m m a n d [ s t r l e n ( c o m m a n d )   -   1 ]   =   0 ; 
 
         i f   ( f o r k ( )   = =   0 ) 
 
         { 
 
             / *   P[ۏzgbLdk}TN  * / 
 
             e x e c l p ( c o m m a n d ,   c o m m a n d ) ; 
 
             / *   Yge x e c QpeԏVhfl	gck8^gbL}TNSbpSOo`* / 
 
             p e r r o r ( c o m m a n d ) ; 
 
             e x i t ( e r r o r n o ) ; 
 
         } 
 
         e l s e 
 
         { 
 
             / *   6rۏzI{_P[ۏz~_gv^SbpSP[ۏzvԏV<P  * / 
 
             w a i t ( & r t n ) ; 
 
             p r i n t f ( "   c h i l d   p r o c e s s   r e t u r n   % d \ n " ,   r t n ) ; 
 
         } 
 
   } 
 
 } 
 
 ُ*NQpe[sN N*Ns h e l l vR[S(u7beQvۏz
TTSpev^/TR[^vۏz0
 
 c l o n e 
 
 c l o n e /fL i n u x 2 . 0 NTMbwQYveR[f o r k f:_S:Nf o r k /fc l o n e [sv NR	SNO_R^vP[ۏzqQN6rۏzvDnv^NO(udkQpe_{(WыQ8henc l o n e _ a c t u a l l y _ w o r k s _ o k 	y0
 
 c l o n e QpevSW:N
 
 i n t   c l o n e ( i n t   ( * f n ) ( v o i d   * ) ,   v o i d   * c h i l d _ s t a c k ,   i n t   f l a g s ,   v o i d   * a r g ) ; 
 
 dkQpeԏVR^ۏzvP I D Qpe-Nvf l a g s h_(uNnR^P[ۏzevvsQ	y0
 
 egwNbvOP[
 
 i n t   v a r i a b l e ,   f d ; 
 
   
 
 i n t   d o _ s o m e t h i n g ( )   { 
 
       v a r i a b l e   =   4 2 ; 
 
       c l o s e ( f d ) ; 
 
       _ e x i t ( 0 ) ; 
 
 } 
 
   
 
 i n t   m a i n ( i n t   a r g c ,   c h a r   * a r g v [ ] )   { 
 
       v o i d   * * c h i l d _ s t a c k ; 
 
     c h a r   t e m p c h ; 
 
   
 
       v a r i a b l e   =   9 ; 
 
       f d   =   o p e n ( " t e s t . f i l e " ,   O _ R D O N L Y ) ; 
 
       c h i l d _ s t a c k   =   ( v o i d   * * )   m a l l o c ( 1 6 3 8 4 ) ; 
 
       p r i n t f ( " T h e   v a r i a b l e   w a s   % d \ n " ,   v a r i a b l e ) ; 
 
       
 
       c l o n e ( d o _ s o m e t h i n g ,   c h i l d _ s t a c k ,   C L O N E _ V M | C L O N E _ F I L E S ,   N U L L ) ; 
 
       s l e e p ( 1 ) ;       / *   ^eNOP[ۏz[bsQ핇eNd\O0O9eSϑ 0* / 
 
   
 
       p r i n t f ( " T h e   v a r i a b l e   i s   n o w   % d \ n " ,   v a r i a b l e ) ; 
 
       i f   ( r e a d ( f d ,   & t e m p c h ,   1 )   <   1 )   { 
 
             p e r r o r ( " F i l e   R e a d   E r r o r " ) ; 
 
             e x i t ( 1 ) ; 
 
       } 
 
       p r i n t f ( " W e   c o u l d   r e a d   f r o m   t h e   f i l e \ n " ) ; 
 
       r e t u r n   0 ; 
 
 } 
 
 ЏLQ
 
 T h e   v a r i a b l e   i s   n o w   4 2 
 
 F i l e   R e a d   E r r o r 
 
 z^vQ~gJTɋbNP[ۏz\eNsQv^\SϑO9e(uc l o n e e(u0RvC L O N E _ V M 0C L O N E _ F I L E S h_\O_SϑTeNc&{hqQN	6rۏzsS1\aɉ0RNُ1\/fc l o n e vyrp0
 
 s l e e p 
 
 Qpe(us l e e p SN(uegOۏzcwc[vypeQpevSW:N 0 0
 
 u n s i g n e d   i n t   s l e e p ( u n s i g n e d   i n t   s e c o n d s ) ; 
 
 Qpe(uO_ۏzcw N*Nc[veYgc[cwve0RN(uԏV0 YgQpe(uOS@bSbeRԏViRYOcwvepec[veQS]~cwve	0
 
 e x i t 
 
 |~(ue x i t vR/f~bk,gۏzvQQpeSW:N
 
 v o i d   _ e x i t ( i n t   s t a t u s ) ; 
 
 _ e x i t OzsS~bkSQ(uvۏz@b	g^\NۏzveNc&{sQ0Spes t a t u s \O:N Qvr`<PԏV6rۏz(W6rۏz-NǏ|~(uw a i t S_dk<P0
 
 w a i t 
 
 w a i t |~(uSb
 
 p i d _ t   w a i t ( i n t   * s t a t u s ) ; 
 
 p i d _ t   w a i t p i d ( p i d _ t   p i d ,   i n t   * s t a t u s ,   i n t   o p t i o n s ) ; 
 
 w a i t v\O(u:NSQ(uvۏzS	gP[ۏz1\aw w0R[N-Nv N*N~bk:Nbk  w a i t p i d I{_1uSpep i d c[vP[ۏz Q0
 
 L i n u x vۏzOI P C I n t e r P r o c e s s   C o m m u n i c a t i o n 	Oel	g{S0mo`R0qQNQX[0OSϑ0WYcSI{0WYcW[Ov^
N:NL i n u x @bN	g(W@b	gcONT C P / I P OShvd\O|~-NQNNcONs o c k e t @b	gُ7hd\O|~[WYcW[vzelQNN/f[hQ N7hv0{SR:N	g
T{STe
T{Se
T{SS(uNN^\ۏzKNvO	g
T{SRS(uNeN^\sQ|vۏzKNmo`R(uNЏLNT NS:ghV
NvۏzON{Sv<OqQNQX[8^1u N*NۏzR^vQYOۏz[ُWWQX[:SۏLQOSϑ/f N*NpehV[(uegU_[g*NDnYqQNQX[	vX[SrQ0
 
 Nb/f N*NO(uOSϑvOP[z^R^ N*Nyr[vI P C ~gvsQ.W[T N*NOSϑ^zdkOSϑv"}_O9e"}_cTvOSϑv<P gTndOSϑ
 
 # i n c l u d e   < s t d i o . h > 
 
 # i n c l u d e   < s y s / t y p e s . h > 
 
 # i n c l u d e   < s y s / s e m . h > 
 
 # i n c l u d e   < s y s / i p c . h > 
 
 v o i d   m a i n ( ) 
 
 { 
 
   k e y _ t   u n i q u e _ k e y ;   / *   [IN N*NI P C sQ.W[* / 
 
   i n t   i d ; 
 
   s t r u c t   s e m b u f   l o c k _ i t ; 
 
   u n i o n   s e m u n   o p t i o n s ; 
 
   i n t   i ; 
 
   
 
   u n i q u e _ k e y   =   f t o k ( " . " ,   ' a ' ) ;   / *   ubsQ.W[W[&{' a ' /f N*N:gyP[* / 
 
   / *   R^ N*NevOSϑƖT* / 
 
   i d   =   s e m g e t ( u n i q u e _ k e y ,   1 ,   I P C _ C R E A T   |   I P C _ E X C L   |   0 6 6 6 ) ; 
 
   p r i n t f ( " s e m a p h o r e   i d = % d \ n " ,   i d ) ; 
 
   o p t i o n s . v a l   =   1 ;   / * nSϑ<P* / 
 
   s e m c t l ( i d ,   0 ,   S E T V A L ,   o p t i o n s ) ;   / * n"}_0 vOSϑ* / 
 
   
 
   / * SbpSQOSϑv<P* / 
 
   i   =   s e m c t l ( i d ,   0 ,   G E T V A L ,   0 ) ; 
 
   p r i n t f ( " v a l u e   o f   s e m a p h o r e   a t   i n d e x   0   i s   % d \ n " ,   i ) ; 
 
   
 
   / * Nb͑enOSϑ* / 
 
   l o c k _ i t . s e m _ n u m   =   0 ;   / * nT*NOSϑ* / 
 
   l o c k _ i t . s e m _ o p   =   -   1 ;   / * [INd\O* / 
 
   l o c k _ i t . s e m _ f l g   =   I P C _ N O W A I T ;   / * d\Oe_* / 
 
   i f   ( s e m o p ( i d ,   & l o c k _ i t ,   1 )   = =   -   1 ) 
 
   { 
 
         p r i n t f ( " c a n   n o t   l o c k   s e m a p h o r e . \ n " ) ; 
 
         e x i t ( 1 ) ; 
 
   } 
 
   
 
   i   =   s e m c t l ( i d ,   0 ,   G E T V A L ,   0 ) ; 
 
   p r i n t f ( " v a l u e   o f   s e m a p h o r e   a t   i n d e x   0   i s   % d \ n " ,   i ) ; 
 
   
 
   / * ndOSϑ* / 
 
   s e m c t l ( i d ,   0 ,   I P C _ R M I D ,   0 ) ; 
 
 } 
 
 3 .           ~zc6R/ Oz
 
 L i n u x ,gS	gۏzvi_vQ@bv ~z ,g(
N(WQ8h̑N6q/fۏz0'Y[wSۏz/fDnRMvUSMOT Nۏz-NvY*N~zqQNۏzvDnY\O:NqQNQX[vhQ@\Sϑ	0L i n u x -N@bv ~z S/f(WR^veP KQ ( c l o n e ) N6rۏzvDnVdkc l o n e Qegvۏzhs:N ~z 0L i n u x -N gAmLv~z:g6R:NL i n u x T h r e a d s [[sN NyP o s i x   1 0 0 3 . 1 c    p t h r e a d  hQcS0
 
 ~zKNvOmSTekTNeNeSOv(ul:N
 
 p t h r e a d _ m u t e x _ t   m u t e x ; 
 
 p t h r e a d _ m u t e x _ i n i t ( & m u t e x ,   N U L L ) ;   / / 	c:wv^\'`RYSNeSOSϑm u t e x 
 
 p t h r e a d _ m u t e x _ l o c k ( & m u t e x ) ;   / /   ~NeSOSϑR
 
 &   / / 4NLuDn
 
 p h t r e a d _ m u t e x _ u n l o c k ( & m u t e x ) ;   / /   ~NeSOSϑ
 
 Tek1\/f~zI{_g*NNNvSu0S	gS_I{_vNNSu~zMb~~gbL&TR~zcwv^>e_YthV0S_Y*N~zOS\OevN\O(uvNR_{(W N[vagNNTek0L i n u x NvC  z	gYy~zTek:g6R gxQWv/fagNSϑ( c o n d i t i o n   v a r i a b l e ) 0(W4YeNs e m a p h o r e . h   -N[INvOSϑR[bNNeSOTagNSϑv\ň	cgqY~zz^-Nc6R:g6Rc6R[DnvTekcOz^NXTfeOv(ucS0NbvuN/ m9fNL i n u x ~zvc6RTO
 
 # i n c l u d e   < s t d i o . h > 
 
 # i n c l u d e   < p t h r e a d . h > 
 
 # d e f i n e   B U F F E R _ S I Z E   1 6   
 
 s t r u c t   p r o d c o n s 
 
 { 
 
   i n t   b u f f e r [ B U F F E R _ S I Z E ] ; 
 
   p t h r e a d _ m u t e x _ t   l o c k ; 
 
   i n t   r e a d p o s ,   w r i t e p o s ;   
 
   p t h r e a d _ c o n d _ t   n o t e m p t y ; 
 
   p t h r e a d _ c o n d _ t   n o t f u l l ; 
 
 } ; 
 
 / *   RYSQ:S~g  * / 
 
 v o i d   i n i t ( s t r u c t   p r o d c o n s   * b ) 
 
 { 
 
   p t h r e a d _ m u t e x _ i n i t ( & b - > l o c k ,   N U L L ) ; 
 
   p t h r e a d _ c o n d _ i n i t ( & b - > n o t e m p t y ,   N U L L ) ; 
 
   p t h r e a d _ c o n d _ i n i t ( & b - > n o t f u l l ,   N U L L ) ; 
 
   b - > r e a d p o s   =   0 ; 
 
   b - > w r i t e p o s   =   0 ; 
 
 } 
 
 / *   \NT>eeQQ:S, ُ̑/fX[eQ N*Ntepe* / 
 
 v o i d   p u t ( s t r u c t   p r o d c o n s   * b ,   i n t   d a t a ) 
 
 { 
 
   p t h r e a d _ m u t e x _ l o c k ( & b - > l o c k ) ; 
 
   / *   I{_Q:S*gn* / 
 
   i f   ( ( b - > w r i t e p o s   +   1 )   %   B U F F E R _ S I Z E   = =   b - > r e a d p o s ) 
 
   { 
 
         p t h r e a d _ c o n d _ w a i t ( & b - > n o t f u l l ,   & b - > l o c k ) ; 
 
   } 
 
   / *   Qpenc, v^yRc  * / 
 
   b - > b u f f e r [ b - > w r i t e p o s ]   =   d a t a ; 
 
   b - > w r i t e p o s + + ; 
 
   i f   ( b - > w r i t e p o s   >   =   B U F F E R _ S I Z E ) 
 
         b - > w r i t e p o s   =   0 ; 
 
   / *   nQ:S^zzvagNSϑ* / 
 
   p t h r e a d _ c o n d _ s i g n a l ( & b - > n o t e m p t y ) ; 
 
   p t h r e a d _ m u t e x _ u n l o c k ( & b - > l o c k ) ; 
 
 } 
 
   
 
 / *   NQ:S-NSQtepe* / 
 
 i n t   g e t ( s t r u c t   p r o d c o n s   * b ) 
 
 { 
 
   i n t   d a t a ; 
 
   p t h r e a d _ m u t e x _ l o c k ( & b - > l o c k ) ; 
 
   / *   I{_Q:S^zz* / 
 
   i f   ( b - > w r i t e p o s   = =   b - > r e a d p o s ) 
 
   { 
 
         p t h r e a d _ c o n d _ w a i t ( & b - > n o t e m p t y ,   & b - > l o c k ) ; 
 
   } 
 
   / *   penc, yRc* / 
 
   d a t a   =   b - > b u f f e r [ b - > r e a d p o s ] ; 
 
   b - > r e a d p o s + + ; 
 
   i f   ( b - > r e a d p o s   >   =   B U F F E R _ S I Z E ) 
 
         b - > r e a d p o s   =   0 ; 
 
   / *   nQ:S*gnvagNSϑ* / 
 
   p t h r e a d _ c o n d _ s i g n a l ( & b - > n o t f u l l ) ; 
 
   p t h r e a d _ m u t e x _ u n l o c k ( & b - > l o c k ) ; 
 
   r e t u r n   d a t a ; 
 
 } 
 
   
 
 / *   KmՋ: uN~z\1   0R1 0 0 0 0   vtepeeQQ:S, m9~
 
 zNQ:S-NStepe, $NSbpSOo`* / 
 
 # d e f i n e   O V E R   (   -   1 ) 
 
 s t r u c t   p r o d c o n s   b u f f e r ; 
 
 v o i d   * p r o d u c e r ( v o i d   * d a t a ) 
 
 { 
 
   i n t   n ; 
 
   f o r   ( n   =   0 ;   n   <   1 0 0 0 0 ;   n + + ) 
 
   { 
 
         p r i n t f ( " % d   - - - > \ n " ,   n ) ; 
 
         p u t ( & b u f f e r ,   n ) ; 
 
   }   p u t ( & b u f f e r ,   O V E R ) ; 
 
   r e t u r n   N U L L ; 
 
 } 
 
   
 
 v o i d   * c o n s u m e r ( v o i d   * d a t a ) 
 
 { 
 
   i n t   d ; 
 
   w h i l e   ( 1 ) 
 
   { 
 
         d   =   g e t ( & b u f f e r ) ; 
 
         i f   ( d   = =   O V E R ) 
 
             b r e a k ; 
 
         p r i n t f ( " - - - > % d   \ n " ,   d ) ; 
 
   } 
 
   r e t u r n   N U L L ; 
 
 } 
 
   
 
 i n t   m a i n ( v o i d ) 
 
 { 
 
   p t h r e a d _ t   t h _ a ,   t h _ b ; 
 
   v o i d   * r e t v a l ; 
 
   i n i t ( & b u f f e r ) ; 
 
   / *   R^uNTm9~z* / 
 
   p t h r e a d _ c r e a t e ( & t h _ a ,   N U L L ,   p r o d u c e r ,   0 ) ; 
 
   p t h r e a d _ c r e a t e ( & t h _ b ,   N U L L ,   c o n s u m e r ,   0 ) ; 
 
   / *   I{_$N*N~z~_g* / 
 
   p t h r e a d _ j o i n ( t h _ a ,   & r e t v a l ) ; 
 
   p t h r e a d _ j o i n ( t h _ b ,   & r e t v a l ) ; 
 
   r e t u r n   0 ; 
 
 } 
 
 4 . \~
 
 ,gz;N~QNL i n u x s^SNeN0ۏzc6RNO0~zc6RNOvz[O0dk N*N[tevmSlxNSt0B o o t l o a d e r 0d\O|~SeN|~y
i0qRz^ _SS^(uz^QvL]eQ_L i n u x |R1\hQ~_gN0
 
 
 
 C / C + + ~gSOv N*Nؚ~yr'`  c[bXTvMOpe
 
 [[NS  2 1 c n b a o @ 2 1 c n . c o m     s w e e k 
 
 (W'YYpe`QNbN N,ُ7h[IN~gSO
 
 s t r u c t   s t u d e n t 
 
 { 
 
               u n s i g n e d   i n t   s e x ;   
 
               u n s i g n e d   i n t   a g e ; 
 
 } ; 
 
 [N N,v^(uُ]~_EQR0W[spencNv \ň 0
 
 FO/f(W[E]z-N__x0Rُ7hv`Q1\/f(u N*NW,g{|WSϑ-Nv
NTvMOh:y
NTv+TIN0lY N*Nc p u Q萄vh_[X[hVGP:N1 6   b i t k*Nb i t SNh
NTv+TIN	gvh:y~g/f&T:N0 	gvh:y/f&TLuI{I{0ُ*NePbN(uNHNpenc~geghُ*N[X[hVbT
 
 T{Hh؏/f~gSO
 
 :N0RdkvvbN(u0R~gSOvؚ~yr'`1\/f(WW,gbXTSϑvTbmR
 
 :   pencMOpe
 
 ~bev~gSO
 
 s t r u c t   x x x 
 
 { 
 
               bXT1 {|WbXT1   :   bXT1 MOpe; 
 
               bXT2 {|WbXT2   :   bXT2 MOpe; 
 
               bXT3 {|WbXT3   :   bXT3 MOpe; 
 
 } ; 
 
 W,gvbXTSϑ1\ObRُ*Nl(WR~z-N_\(u0RFO/f(Wؚ~z^-N
Ne0W(u0R
 
 OY
 
 s t r u c t   s t u d e n t 
 
 { 
 
               u n s i g n e d   i n t   s e x   :   1 ;   
 
               u n s i g n e d   i n t   a g e   :   1 5 ; 
 
 } ; 
 
 
N~gSO-Nv$N*NbXTs e x Ta g e RwegS`S(uN N*Nu n s i g n e d   i n t vzzGPu n s i g n e d   i n t :N1 6 MO	0
 
 W,gbXTSϑbRTvelN6qTl	gbRv`Q/f N7hvOY
 
 s t r u c t   s t u d e n t   s w e e k ; 
 
 s w e e k . s e x   =   M A L E ; 
 
 s w e e k . a g e   =   2 0 ; 
 
 }6qbRW,gbXTSϑ(Wl
N/f_0R/ecvFO/fv^
NI{NbN``HNR1\`HNROYNbvbR>f6q/f
NTtv
 
 s t r u c t   s t u d e n t 
 
 { 
 
               u n s i g n e d   i n t   s e x   :   1 ;   
 
               u n s i g n e d   i n t   a g e   :   1 2 ; 
 
 } ; 
 
 ُ/fV:N1 + 1 2   =   1 3 
NQ~Tb N*NW,gbXT
N~Tbc h a r 0i n t bNUO{|Wُ>f6q/f
N WvQ v0
 
 (WbRW,gbXTSϑv`QNbNyr+RlapencvX[>ez^ُ؏NC P U /fB i g   e n d i a n ؏/fL i t t l e   e n d i a n egQ[0L i t t l e   e n d i a n TB i g   e n d i a n /fC P U X[>epencv$Ny
NTz^0[NteW0teWI{penc{|WB i g   e n d i a n :N,{ N*NW[/f gؚMOW[	cgqNNO0W@W0Rؚ0W@Wvz^X[>epencvؚMOW[0RNOMOW[	L i t t l e   e n d i a n RvS[:N,{ N*NW[/f gNOMOW[	cgqNNO0W@W0Rؚ0W@Wvz^X[>epencvNOMOW[0RؚMOW[	0
 
 bN[INI P S4Y~gSO:N
 
 s t r u c t   i p h d r   { 
 
 # i f   d e f i n e d ( _ _ L I T T L E _ E N D I A N _ B I T F I E L D ) 
 
               _ _ u 8               i h l : 4 , 
 
                             v e r s i o n : 4 ; 
 
 # e l i f   d e f i n e d   ( _ _ B I G _ E N D I A N _ B I T F I E L D ) 
 
               _ _ u 8               v e r s i o n : 4 , 
 
                         i h l : 4 ; 
 
 # e l s e 
 
 # e r r o r               " P l e a s e   f i x   < a s m / b y t e o r d e r . h > " 
 
 # e n d i f 
 
               _ _ u 8               t o s ; 
 
               _ _ u 1 6               t o t _ l e n ; 
 
               _ _ u 1 6               i d ; 
 
               _ _ u 1 6               f r a g _ o f f ; 
 
               _ _ u 8               t t l ; 
 
               _ _ u 8               p r o t o c o l ; 
 
               _ _ u 1 6               c h e c k ; 
 
               _ _ u 3 2               s a d d r ; 
 
               _ _ u 3 2               d a d d r ; 
 
               / * T h e   o p t i o n s   s t a r t   h e r e .   * / 
 
 } ; 
 
 (WL i t t l e   e n d i a n !j_Ni p h d r -N[IN
 
               _ _ u 8               i h l : 4 , 
 
                             v e r s i o n : 4 ; 
 
 vQX[>ee_:N
 
 ,{1 W[NO4 MO  i h l 
 
 ,{1 W[ؚ4 MO  v e r s i o n   I P vHr,gS	
 
 (WB i g   e n d i a n !j_N؏ُ7h[INRX[>ee_:N
 
 ,{1 W[NO4 MO  v e r s i o n   I P vHr,gS	
 
 ,{1 W[ؚ4 MO  i h l 
 
 ُN[EvI P OS/f
N9SMv@bN(WL i n u x Q8hnNx-NI P S4Y~gSOv[IN)R(uN[
 
 # i f   d e f i n e d ( _ _ L I T T L E _ E N D I A N _ B I T F I E L D ) 
 
 & 
 
 # e l i f   d e f i n e d   ( _ _ B I G _ E N D I A N _ B I T F I E L D ) 
 
 & 
 
 # e n d i f 
 
 eg:SR$Ny
NTv`Q0
 
 1udkbN;`~hQev;Np
 
 1 	              C / C + +  v~gSO/ec[vQ-NvW,gbXTSϑ	cMObR
 
 2 	              bRvMOpe^/fTNN;v^N6qSN~T:NW,gbXTSϑ
 
 yr+RlabRTvpencvX[>ez^ُ Np~TwQSOvC P U v~g0
 
 
 
 
 
 C / C + + -NvяcN0܏cT]c
 
   [[NS  e m a i l : 2 1 c n b a o @ 2 1 c n . c o m   s w e e k 
 
 (WbNvC / C + + f[`Num-N0(WbN'YvpSȃ8^S	gcvi__\,Tc؏	g܏0я0]KNRvNl,TǏNHNяc0܏cT]c0
 
 SNgt^ggvg N)Y`Oz6qw0Rُ7hvS
 
 c h a r   n e a r   * p ;   / * [IN N*NW[&{W я c* / 
 
 c h a r   f a r   * p ;   / * [IN N*NW[&{W ܏ c* / 
 
 c h a r   h u g e   * p ;   / * [IN N*NW[&{W ] c* / 
 
 [(W
NwSS-Nv n e a r  0 f a r  0 h u g e  /fNT̑QQegv/f*NNHNi_,geՋV[dkۏLT{dYNvV`0
 
               ُ NpHQN8 0 8 6 YthVSO|~gTGl
nnw0'Y[wS8 0 8 6 /f N*N1 6 MOYthV[[NV*Nk[X[hVN(uegOX[k0W@WC S C o d e   S e g m e n t 	Nxk[X[hVD S D a t a   S e g m e n t 	penck[X[hVS S S t a c k   S e g m e n t 	Xhk[X[hVE S E x t r a   S e g m e n t 	DRk[X[hV08 0 8 6 Ǒ(uk_,gk6 4 K VQ	vpencbcNe
N Sfk0W@WasT@wk0W@W[X[hV
N O9e	,gkVNYvpencbcNeR Sfk0W@WasT@wk0W@W[X[hV O9e	0
 
               Vdk(W1 6 MOYthVsXNYg,gkQ0W@Wv<P(u N*N1 6 MOvch:ykQOPy	1\SN0R,gkNY0W@Wv<PR (u1 6 MOvkQOPy+ 1 6 MOvk0W@W;`qQ3 2 MOvc0
 
               ُ7hbN1\wSN܏0яcv:S+R
 
                    яc/fS,gk0SS+T,gkOPyv0MO[:N1 6 MOvc
 
                    ܏c/f^,gk0S+TkOPyTk0W@Wv0MO[:N3 2 MOvc0
 
 яcS[6 4 k W[penckQv0W@WۏLX[SY
 
 c h a r   n e a r   * p ;   
 
 p = ( c h a r   n e a r   * ) 0 x f f f f ;   
 
 ܏c/f3 2 MOc[h:yk0W@WOPy0W@W܏cSNۏL荵k[@WSNte*NQX[v0W@W0Y[IN܏zcp cT0 x 1 0 0 0 kv0 x 2 S0W@WsS1 0 0 0 : 0 0 0 2 RSQ\O  
 
 c h a r   f a r   * p ;   
 
 p = ( c h a r   f a r   * ) 0 x 1 0 0 0 0 0 0 2 ;   
 
 dN܏cTяcY؏	g N*N]cvi_0
 
 T܏c N7h]c_N/f3 2 MOvcc_Nh:y:N1 6 MOk1 6 MOOPy_NSN[@WNUO0W@W0[T܏cv:S+R(WNۏLNĉ<hSYt0܏cl	gĉ<hSSX[(W$N*N܏c[EcTT N*Nirt0W@WFO/f[Nvk0W@WTOPy0W@W
N N7hY2 3 B 0 : 0 0 0 4 T2 3 A 1 : 0 0 F 4 cTT N*Nirt0W@W2 3 6 0 4 ]cǏyr[vOzOk!kd\O[bTvQOPyϑGW\N1 0 h sSS	g gNO4 MO	gpe<PvQYOpe<PۏMO0Rk0W@W
NSNُ7h1\SNMQF a r c(W6 4 K LueQNNaevV~vL:N0S_6q N!kd\O_{\N6 4 K 0NbvQpeSN\܏clbc:N]c
 
 v o i d   n o r m a l i z e ( v o i d   f a r   * *   p ) 
 
 { 
 
  0 0* p = ( v o i d   f a r   * ) ( ( ( l o n g ) * p & 0 x f f f f 0 0 0 f ) + ( ( ( l o n g ) * p & 0 x 0 0 0 0 f f f 0 0 < < 1 2 ) ) ; 
 
 } 
 
 N
NbvQpe-NbNQ N!kw0RNcKNcvO(uُ*NQpeO9ecv<PVdk_{ O~[vcvc\O:NSpe0
 
 0Ȓُ{:_v/fяc0܏c0]c/fk[@Wv1 6 b i t YthVvNirYgYthV/f1 6 MOvFO/f
NǑ(uk[@Wv݋_N
NX[(Wяc0܏c0]cvi_	S_MRnfP C @bO(uv3 2 b i t YthV8 0 3 8 6 N
N	 N,ЏL(WOb!j_Nvc/f3 2 MOvSs^n0W@W]~
NR܏0яcN0FO/f(WL]eQ_|~WN8 0 8 6 vYthVN6q	gk^lv^:WYA M D lQSvA M 1 8 6 E D 0A M 1 8 6 E R I{YthV _SُN|~vz^ebN؏/f	g__nZicv[@WV0
 
 Yg؏`f{_0Wt,ge㉄vQ[
NYQ)n`N NN_:gSt08 0 8 6 Glv^SC / C + + ؚ~zfNM|vvsQQ[0
 
 
 
 
 
 N$NS~xQՋC / C + + -NTTSOu n i o n 	vO(u
 
 [[NS  2 1 c n b a o   s w e e k @ 2 1 c n . c o m 
 
 Ջ NQ Nkz^$Re|~-NvC P U /fL i t t l e   e n d i a n ؏/fB i g   e n d i a n !j_
 
 Rg
 
 \O:N N*N{:gvsQNNvNbN^(W{:g~b-Nf[`NǏNHNSL i t t l e   e n d i a n TB i g   e n d i a n 0L i t t l e   e n d i a n TB i g   e n d i a n /fC P U X[>epencv$Ny
NTz^0[NteW0teWI{penc{|WB i g   e n d i a n :N,{ N*NW[/f gؚMOW[	cgqNNO0W@W0Rؚ0W@Wvz^X[>epencvؚMOW[0RNOMOW[	L i t t l e   e n d i a n RvS[:N,{ N*NW[/f gNOMOW[	cgqNNO0W@W0Rؚ0W@Wvz^X[>epencvNOMOW[0RؚMOW[	0
 
 OYGPNQX[0W@W0 x 0 0 0 0  _Y	gNNpenc
 
 0 x 0 0 0 0 	 0 x 0 0 0 1 	 0 x 0 0 0 2 	 0 x 0 0 0 3 
 
 0 x 1 2 	 0 x 3 4 	 0 x a b 	 0 x c d 
 
 YgbNSS N*N0W@W:N0 x 0 0 0 0 vV*NW[SϑW[^:Nb i g - e n d i a n RQ~g:N0 x 1 2 3 4 a b c d W[^MOl i t t l e - e n d i a n RQ~g:N0 x c d a b 3 4 1 2 0YgbN\0 x 1 2 3 4 a b c d QeQ0RN0 x 0 0 0 0  _YvQX[-NRL i t t l e   e n d i a n TB i g   e n d i a n !j_vX[>e~gYN
 
 0W@W	 0 x 0 0 0 0 	 0 x 0 0 0 1 	 0 x 0 0 0 2 	 0 x 0 0 0 3 
 
 b i g - e n d i a n 	 0 x 1 2 	 0 x 3 4 	 0 x a b 	 0 x c d 
 
 l i t t l e - e n d i a n 	 0 x c d 	 0 x a b 	 0 x 3 4 	 0 x 1 2 
 
  N,egx 8 6 |RC P U /fl i t t l e - e n d i a n vW[^P o w e r P C 8^/fB i g   e n d i a n ؏	gvC P U Ǐ~egnC P U ]\ONL i t t l e   e n d i a n ؏/fB i g   e n d i a n !j_0
 
 T{
 
 >f6qT{ُ*NvelS/f\ N*NW[C H A R / B Y T E {|W	vpencT N*NteWpencX[>eNT7hvQX[ _Y0W@WǏSteWpencRgC H A R / B Y T E penc(WteWpencvؚMO؏/fNOMOeg$ReC P U ]\ONL i t t l e   e n d i a n ؏/fB i g   e n d i a n !j_0_QYNvT{Hh
 
 t y p e d e f   u n s i g n e d   c h a r   B Y T E ;   
 
 i n t   m a i n ( i n t   a r g c ,   c h a r *   a r g v [ ] ) 
 
 { 
 
               u n s i g n e d   i n t   n u m , * p ; 
 
         p   =   & n u m ; 
 
               n u m   =   0 ; 
 
   
 
         * ( B Y T E   * ) p   =   0 x f f ; 
 
               
 
               i f ( n u m   = =   0 x f f ) 
 
               { 
 
                             p r i n t f ( " T h e   e n d i a n   o f   c p u   i s   l i t t l e \ n " ) ; 
 
               } 
 
               e l s e         / / n u m   = =   0 x f f 0 0 0 0 0 0 
 
               { 
 
                             p r i n t f ( " T h e   e n d i a n   o f   c p u   i s   b i g \ n " ) ; 
 
               } 
 
               r e t u r n   0 ; 
 
 } 
 
 dN
Nel( Ǐc{|W:_6Rlbcv^[teWpencW[K<P$ReK<PK~NؚMO؏/fNOMO) Y؏	gl	gf}YvRlbTbNwSu n i o n vbXT,g1\X[>e(WvTvQX[zzqQNQX[ck/fu n i o n S%c\O(u0ZP!.svSY	VdkbNSN\ N*NC H A R / B Y T E pencT N*NteWpencTe\O:N N*Nu n i o n vbXT_QYNT{Hh
 
 i n t   c h e c k C P U ( ) 
 
 { 
 
  0{ 
 
  0 0u n i o n   w 
 
  0 0{   
 
  0 0 0i n t   a ; 
 
  0 0 0c h a r   b ; 
 
  0 0}   c ; 
 
  0 0c . a   =   1 ; 
 
  0 0r e t u r n   ( c . b   = =   1 ) ; 
 
  0} 
 
 } 
 
 [sT7hvRbNegwwL i n u x d\O|~-NvsQvnNx/f`HNZPv
 
 s t a t i c   u n i o n   {   c h a r   c [ 4 ] ;   u n s i g n e d   l o n g   l ;   }   e n d i a n _ t e s t   =   {   {   ' l ' ,   ' ? ' ,   ' ? ' ,   ' b '   }   } ; 
 
 # d e f i n e   E N D I A N N E S S   ( ( c h a r ) e n d i a n _ t e s t . l ) 
 
 L i n u x vQ8h\ONNN(u N*Nu n i o n SϑT N*N{USv[[IN1\[sN N'YkNxT7hvR1uN
N NkNxbNSNm;RO0RL i n u x nNxv|YKNY
 
 ՋNGPQ~pA TQ~pB -NvOOSmSV{|bebe<h_:N be{|WW[k+ beQ[v~gSO V*NbeQ[v~gSO{|WR+R:NS T R U C T T Y P E 1 ~   S T R U C T T Y P E 4 Qz^N g{USve_~~ N*N~ Nvbepenc~g0
 
 Rg
 
 bev<h_:N be{|W+ beQ[v~gSO (Ww[vO-Nk!kSSV{|be-Nv NybNSN\V{|bev~gSO~~:N N*Nu n i o n qQN NkQX[FOk!k	gHevS/f Ny	6qTTbe{|WW[k~ N~~b N*Nbepenc~g0
 
 T{
 
 9hnc
NRgbN_6q0W_QYNT{Hh
 
 t y p e d e f   u n s i g n e d   c h a r   B Y T E ;   
 
   
 
 / / beQ[TTSO
 
 t y p e d e f   u n i o n   t a g P a c k e t C o n t e n t 
 
 { 
 
               S T R U C T T Y P E 1   p k t 1 ; 
 
               S T R U C T T Y P E 2   p k t 2 ; 
 
               S T R U C T T Y P E 3   p k t 1 ; 
 
               S T R U C T T Y P E 4   p k t 2 ; 
 
 } P a c k e t C o n t e n t ; 
 
   
 
 / / ~ Nvbepenc~g
 
 t y p e d e f   s t r u c t   t a g P a c k e t 
 
 { 
 
               B Y T E   p k t T y p e ; 
 
         P a c k e t C o n t e n t   p k t C o n t e n t ; 
 
 } P a c k e t ; 
 
 ;`~
 
 (WC / C + + z^vQ-NS_Y*NW,gpenc{|Wb
YTpenc~g`S(uT NGrQX[ebNO(uTTSOՋ N/fُ7hvO	S_Yy{|WY*N[aY*NNirSSvQ NebNYNO0WyvQ:N n 	1  	bN_NSNO(uTTSOegS%cvQYՋN/fُ7hvO	0
 
 
 
 
 
 
 
 meQEmQL i n u x YqRz
 
 [[NS  2 1 c n b a o @ 2 1 c n . c o m   y e s k y 
 
 1 . L i n u x Q8h!jWW
 
 L i n u x YqR^\NQ8hv NRL i n u x Q8hv N*N!jWWSNN$Nye_ыTR}
 
 1 	vcыۏL i n u x Q8hTL i n u x /TReR}
 
 2 	ыb N*NSR}T Rdv!jWWO(ui n s m o d R}m o d p r o b e Ti n s m o d }TN{|<OFOOVNvsQvMneN	r m m o d  Rd0ُye_c6RNQ8hv'Y\!jWW NeceQQ8h[1\TQ8hvQNR N7h0
 
 NbbN~Q N*NQ8h!jWWvOP[
 
 # i n c l u d e   < l i n u x / m o d u l e . h >   / / @b	g!jWW v4YeN
 
 # i n c l u d e   < l i n u x / i n i t . h >           / /   i n i t & e x i t vsQ[
 
 M O D U L E _ L I C E N S E ( " G P L " ) ; 
 
   
 
 s t a t i c   i n t   _ _ i n i t   h e l l o _ i n i t   ( v o i d ) 
 
 { 
 
   p r i n t k ( " H e l l o   m o d u l e   i n i t \ n " ) ; 
 
   r e t u r n   0 ; 
 
 } 
 
   
 
 s t a t i c   v o i d   _ _ e x i t   h e l l o _ e x i t   ( v o i d ) 
 
 { 
 
   p r i n t k ( " H e l l o   m o d u l e   e x i t \ n " ) ; 
 
 } 
 
   
 
 m o d u l e _ i n i t ( h e l l o _ i n i t ) ; 
 
 m o d u l e _ e x i t ( h e l l o _ e x i t ) ; 
 
 Rg
Nz^Ss N*NL i n u x Q8h!jWW S+T!jWWRYST!jWWxS}QpeMR(Wi n s m o d vePЏLT(Wr m m o d vePЏL0RYSNxS}Qpe_{(W[m o d u l e _ i n i t Tm o d u l e _ e x i t O(uMR[IN&TROQsы0
 
 z^-NvM O D U L E _ L I C E N S E ( " G P L " ) (uNXf!jWWvS0
 
 Ygb
Nz^ы:N N*NЏLeR}T Rdv!jWWRы}TN:N
 
 g c c    D _ _ K E R N E L _ _   - D M O D U L E    D L I N U X    I   / u s r / l o c a l / s r c / l i n u x 2 . 4 / i n c l u d e   - c    o   h e l l o . o   h e l l o . c 
 
 1udkSL i n u x Q8h!jWWvы ~g c c c:y D _ _ K E R N E L _ _   - D M O D U L E    D L I N U X Spe0- I 	yߍ@wL i n u x Q8hnNx-NI n c l u d e vU_v_0
 
 NR}TN\SR}h e l l o !jWW
 
 i n s m o d   . / h e l l o . o 
 
 NR}TN[bvSǏz
 
 r m m o d   h e l l o 
 
 Yg\vQvcыeQL i n u x Q8hR \nNxeNbeQL i n u x Q8hnNxvv^_̑v^O9eM a k e f i l e 0
 
 bN	g_eEQ NNL i n u x Q8hzv NNW,gwƋ
 
 QX[
 
 (WL i n u x Q8h!j_NbN
NO(u(u7b`vm a l l o c ( ) Tf r e e ( ) Qpe3uTʑ>eQX[0ۏLQ8hze g8^(uvQX[3uTʑ>eQpe:N(Wi n c l u d e / l i n u x / k e r n e l . h eN-NXfvk m a l l o c ( ) Tk f r e e ( ) vQSW:N
 
 v o i d   * k m a l l o c ( u n s i g n e d   i n t   l e n ,   i n t   p r i o r i t y ) ; 
 
 v o i d   k f r e e ( v o i d   * _ _ p t r ) ; 
 
 k m a l l o c vp r i o r i t y Spe8^n:NG F P _ K E R N E L Yg(W-Ne
gRz^̑3uQX[R(uG F P _ A T O M I C SpeV:NO(uG F P _ K E R N E L SpeSO_waw w
N(uN^ۏz
NNe-N(W-Ne-N/f
NAQaw wv	0
 
 1uNQ8h`T(u7b`O(u
NTvQX[[IN@bNNKN
Nvc[evQX[0^O(uL i n u x -Nv(u7bTQ8h`QX[NNQpeُNQpe(Wi n c l u d e / a s m / u a c c e s s . h -NXf	
 
 u n s i g n e d   l o n g   c o p y _ f r o m _ u s e r ( v o i d   * t o ,   c o n s t   v o i d   * f r o m ,   u n s i g n e d   l o n g   n ) ; 
 
 u n s i g n e d   l o n g   c o p y _ t o _ u s e r   ( v o i d   *   t o ,   v o i d   *   f r o m ,   u n s i g n e d   l o n g   l e n ) ; 
 
 c o p y _ f r o m _ u s e r 0c o p y _ t o _ u s e r QpeԏV
N
Y6RvW[peVdkYg[hQ
Y6RbRԏV<P:N0 0
 
 i n c l u d e / a s m / u a c c e s s . h -N[INvp u t _ u s e r Tg e t _ u s e r (uNQ8hzzT(u7bzzvUS<PNNYc h a r 0i n t 0l o n g 	0
 
 ُ̑~QvNN/fsQNQ8h-NQX[{tvvksQNL i n u x QX[{tvfY~wƋbNO(W,ge,{9 
0QX[NI / O d\O0ۏLfRmeQ0WN~0
 
 Q
 
 (WQ8hz-NbN
NO(u(u7b`C ^Qpe-Nvp r i n t f ( ) QpeQOo`SO(up r i n t k ( ) 0FO/fQ8h-Np r i n t k ( ) Qpevvvv^
N/f:NNT(u7bNAm[[E
N/fQ8hv Nye_:g6R(uegU_Ne_Oo`b~QfJTc:y0
 
 k*Np r i n t k O	g*NOHQ~Q8h NqQ	g8 *NOHQ~[N	g[^v[[IN0Yg*gc[OHQ~Q8hO	b؞vOHQ~D E F A U L T _ M E S S A G E _ L O G L E V E L 0YgOHQ~peW[ki n t   c o n s o l e _ l o g l e v e l Sϑ\v݋mo`1\OSbpS0Rc6RS
N0Ygs y s l o g d Tk l o g d [bۏz(WЏLv݋R
N{/f&TTc6RSQmo`ORۏ/ v a r / l o g / m e s s a g e s eN0k l o g d   SYtQ8hmo`s y s l o g d   YtvQN|~mo`kY^(uz^0
 
 !jWWSpe
 
 2 . 4 Q8hNi n c l u d e / l i n u x / m o d u l e . h -N[INv[M O D U L E _ P A R M ( v a r , t y p e )   (uNT!jWW O}TNLSpe0v a r :NcSSpe<PvSϑ
Tt y p e :NǑSYN<h_vW[&{2N[ m i n [ - m a x ] ] { b , h , i , l , s } 0m i n Sm a x (uNh:yS_Spe:Npe~{|WeAQeQvpe~CQ }v*NpeVb b y t e h s h o r t i i n t l l o n g s s t r i n g 0
 
 (Wň}Q8h!jWWe(u7bSNT!jWW O NNSpe
 
 i n s m o d   m o d n a m e   v a r = v a l u e 
 
 Yg(u7b*gc[Spev a r \O(u!jWWQ[INv:w<P0
 
 
 
 2 . W[&{YqRz^
 
 L i n u x NvYqRz^~~:N N~[b
NTNRvQpevƖTǏُNQpeO_W i n d o w s vYd\OrYeN N,0(W^(uz^weglxNYS/f N*NYeN^(uz^SNad\OnfeN N7h[lxNYۏLd\OYo p e n   ( ) 0c l o s e   ( ) 0r e a d   ( ) 0w r i t e   ( )   I{0
 
 L i n u x ;N\YR:NN{|W[&{YTWWY0W[&{Y/fcYSTc6epencNW[&{vb__ۏLWWYRNte*NpencQ:Svb__ۏL0W[&{YvqRv[k{US0
 
 NbbNegGP N*N^8^{USvZbW[&{Yُ*NY-NS	g N*N4 *NW[vhQ@\Sϑi n t   g l o b a l _ v a r ُ*NYv
TW[SZP g o b a l v a r  0[ g o b a l v a r  YvQI{d\OsS/f[vQ-NhQ@\Sϑg l o b a l _ v a r vd\O0
 
               qRz^/fQ8hv NRVdkbN ~vQmR!jWWRYSQpeQpe(ueg[b[@bcYvRYS]\Ov^(ur e g i s t e r _ c h r d e v ( )   QpelQW[&{Y
 
 s t a t i c   i n t   _ _ i n i t   g o b a l v a r _ i n i t ( v o i d ) 
 
 { 
 
   i f   ( r e g i s t e r _ c h r d e v ( M A J O R _ N U M ,   "   g o b a l v a r   " ,   & g o b a l v a r _ f o p s ) ) 
 
         { 
 
         / / & lQ1Y%
 
         } 
 
   e l s e 
 
         { 
 
         / / & lQbR
 
         } 
 
 } 
 
 vQ-Nr e g i s t e r _ c h r d e v Qpe-NvSpeM A J O R _ N U M :N;NYS,  g o b a l v a r  :NY
Tg o b a l v a r _ f o p s :NS+TW,gQpeeQSpv~gSO{|W:Nf i l e _ o p e r a t i o n s 0S_g o b a l v a r !jWWR}eg o b a l v a r _ i n i t gbL[\(uQ8hQper e g i s t e r _ c h r d e v bqRz^vW,geQSpcX[>e(WQ8hvW[&{Y0W@Wh-N(W(u7bۏz[勾YgbL|~(uecOeQS0W@W0
 
 N!jWWRYSQpe[^v1\/f!jWWxS}Qpe (ur e g i s t e r _ c h r d e v ( ) v SQpe   u n r e g i s t e r _ c h r d e v ( ) 
 
 s t a t i c   v o i d   _ _ e x i t   g o b a l v a r _ e x i t ( v o i d ) 
 
 { 
 
   i f   ( u n r e g i s t e r _ c h r d e v ( M A J O R _ N U M ,   "   g o b a l v a r   " ) ) 
 
         { 
 
         / / & xS}1Y%
 
         } 
 
   e l s e 
 
         { 
 
         / / & xS}bR
 
         } 
 
 } 
 
 @wQ8h
NeXRevRf i l e _ o p e r a t i o n s ~gSO]nS_eg'YFO/f'YYpevqRz^S/f)R(uNvQ-Nv NR0[NW[&{YegcOv;NeQS	go p e n   ( ) 0r e l e a s e   ( ) 0r e a d   ( ) 0w r i t e   ( ) 0i o c t l   ( ) 0l l s e e k ( ) 0p o l l ( ) I{0
 
 o p e n ( ) Qpe 0[YyrkeNۏLo p e n ( ) |~(ue\(uqRz^vo p e n   ( )   Qpe
 
 i n t   ( * o p e n ) ( s t r u c t   i n o d e   *   , s t r u c t   f i l e   * ) ; 
 
 vQ-NSpei n o d e :NYyrkeNvi n o d e   ( "}_~p)   ~gvcSpef i l e /fcTُ NYveN~gvc0o p e n ( ) v;NNR/fnx[lxNY(W1\~r`0!kYSvTl'`( !kYSSN(uM I N O R ( i n o d e - >   i   -   r d e v )   S_) 0c6RO(uYvۏzpe09hncgbL`QԏVr`x( 0 h:ybRpeh:yX[(W)   I{
 
 r e l e a s e ( ) Qpe 0S_ gT N*NSb _Yv(u7bۏzgbLc l o s e   ( ) |~(ueQ8h\(uqRz^vr e l e a s e   ( )   Qpe
 
 v o i d   ( * r e l e a s e )   ( s t r u c t   i n o d e   *   , s t r u c t   f i l e   * )   ; 
 
 r e l e a s e   Qpev;NNR/fnt*g~_gveQ/ Qd\O0ʑ>eDn0(u7bꁚ[INcNh_v
YMOI{0
 
 r e a d ( ) Qpe 0S_[YyrkeNۏLr e a d ( )   |~(ue\(uqRz^r e a d ( )   Qpe
 
 s s i z e _ t   ( * r e a d )   ( s t r u c t   f i l e   * ,   c h a r   * ,   s i z e _ t ,   l o f f _ t   * ) ; 
 
 (uegNY-NSpenc0S_QpecK:NN U L L   <Pe\[r e a d   |~(uQv^ԏV- E I N V A L  I n v a l i d   a r g u m e n t ^lSpe 	0QpeԏV^<Ph:ybRSvW[peԏV<P:N s i g n e d   s i z e  penc{|W8^1\/fvhs^S
NvV	gtepe{|W	0
 
 g l o b a l v a r _ r e a d Qpe-NQ8hzzN(u7bzzvQX[NN PR,{2 @bN~vQpe
 
 s t a t i c   s s i z e _ t   g l o b a l v a r _ r e a d ( s t r u c t   f i l e   * f i l p ,   c h a r   * b u f ,   s i z e _ t   l e n ,   l o f f _ t   * o f f ) 
 
 { 
 
   & 
 
   c o p y _ t o _ u s e r ( b u f ,   & g l o b a l _ v a r ,   s i z e o f ( i n t ) ) ; 
 
   & 
 
 } 
 
 w r i t e (   )   Qpe 0S_YyrkeNۏLw r i t e   ( )   |~(ue\(uqRz^vw r i t e   ( )   Qpe
 
 s s i z e _ t   ( * w r i t e )   ( s t r u c t   f i l e   * ,   c o n s t   c h a r   * ,   s i z e _ t ,   l o f f _ t   * ) ; 
 
 TYSpenc0Ygl	gُ*NQpew r i t e   |~(uOT(uz^ԏV N*N- E I N V A L 0YgԏV<P^Rh:ybRQeQvW[pe0
 
 g l o b a l v a r _ w r i t e Qpe-NQ8hzzN(u7bzzvQX[NN PR,{2 @bN~vQpe
 
 s t a t i c   s s i z e _ t   g l o b a l v a r _ w r i t e ( s t r u c t   f i l e   * f i l p ,   c o n s t   c h a r   * b u f ,   s i z e _ t   l e n ,   l o f f _ t 
 
   * o f f ) 
 
 { 
 
   & 
 
   c o p y _ f r o m _ u s e r ( & g l o b a l _ v a r ,   b u f ,   s i z e o f ( i n t ) ) ; 
 
   & 
 
 } 
 
 i o c t l ( )   Qpe 0Qpe/fyrkvc6RQpeSNǏ[TY Oc6ROo`bNYS_r`Oo`QpeSW:N
 
 i n t   ( * i o c t l )   ( s t r u c t   i n o d e   *   , s t r u c t   f i l e   *   , u n s i g n e d   i n t   , u n s i g n e d   l o n g ) ; 
 
 u n s i g n e d   i n t Spe:NYqRz^gbLv}TNvNx1u(u7bꁚ[INu n s i g n e d   l o n g Spe:Nv^v}TNcOSpe{|WSN/fteW0cI{0YgY
NcOi o c t l   eQSpR[NNUOQ8h*gHQ[INvBli o c t l   |~(u\ԏV- E N O T T Y  N o   s u c h   i o c t l   f o r d e v i c e 勾Yedki o c t l   }TN 	0Yg勾YelԏV N*N^<PHN<POԏV~(uz^Nh:y(ubR0
 
 l l s e e k ( ) QpeQpe(uegO9eeNvS_MRQMOnv^\eMOn\O:Nckv	ԏV<PԏVSW:N
 
 l o f f _ t   ( * l l s e e k )   ( s t r u c t   f i l e   * ,   l o f f _ t ,   i n t ) ; 
 
 p o l l ( ) Qpep o l l   el/fp o l l   Ts e l e c t   ُ$N*N|~(uvTz[s(uegg⋾Y/f&TSbSQb/f&TYNgyyrkr`SW:N
 
 u n s i g n e d   i n t   ( * p o l l )   ( s t r u c t   f i l e   * ,   s t r u c t   p o l l _ t a b l e _ s t r u c t   * ) ; 
 
 bN\(W Yv;^XN^;^Xd\O  N[QpeۏLfmeQvN~0
 
 Y g o b a l v a r  vqRz^vُNQpe^R+R}T
T:Ng o b a l v a r _ o p e n 0g o b a l v a r _   r e l e a s e 0g o b a l v a r _ r e a d 0g o b a l v a r _ w r i t e 0g o b a l v a r _ i o c t l VdkY g o b a l v a r  vW,geQSp~gSϑg o b a l v a r _ f o p s   K<PYN
 
 s t r u c t   f i l e _ o p e r a t i o n s   g o b a l v a r _ f o p s   =   { 
 
 r e a d :   g o b a l v a r _ r e a d , 
 
 w r i t e :   g o b a l v a r _ w r i t e , 
 
 } ; 
 
 
NNx-N[g o b a l v a r _ f o p s vRYSelv^
N/fhQC @b/ecv^\NG N U ibU\l0
 
 [tevg l o b a l v a r . c eNnNxYN
 
 # i n c l u d e   < l i n u x / m o d u l e . h > 
 
 # i n c l u d e   < l i n u x / i n i t . h > 
 
 # i n c l u d e   < l i n u x / f s . h > 
 
 # i n c l u d e   < a s m / u a c c e s s . h > 
 
   
 
 M O D U L E _ L I C E N S E ( " G P L " ) ; 
 
   
 
 # d e f i n e   M A J O R _ N U M   2 5 4       / / ;NYS
 
   
 
 s t a t i c   s s i z e _ t   g l o b a l v a r _ r e a d ( s t r u c t   f i l e   * ,   c h a r   * ,   s i z e _ t ,   l o f f _ t * ) ; 
 
 s t a t i c   s s i z e _ t   g l o b a l v a r _ w r i t e ( s t r u c t   f i l e   * ,   c o n s t   c h a r   * ,   s i z e _ t ,   l o f f _ t * ) ; 
 
   
 
 / / RYSW[&{YqRvf i l e _ o p e r a t i o n s ~gSO
 
 s t r u c t   f i l e _ o p e r a t i o n s   g l o b a l v a r _ f o p s   = 
 
 { 
 
   r e a d :   g l o b a l v a r _ r e a d ,   w r i t e :   g l o b a l v a r _ w r i t e , 
 
 } ; 
 
 s t a t i c   i n t   g l o b a l _ v a r   =   0 ;       / /  g l o b a l v a r  YvhQ@\Sϑ
 
   
 
 s t a t i c   i n t   _ _ i n i t   g l o b a l v a r _ i n i t ( v o i d ) 
 
 { 
 
   i n t   r e t ; 
 
   
 
   / / lQYqR
 
   r e t   =   r e g i s t e r _ c h r d e v ( M A J O R _ N U M ,   " g l o b a l v a r " ,   & g l o b a l v a r _ f o p s ) ; 
 
   i f   ( r e t ) 
 
   { 
 
         p r i n t k ( " g l o b a l v a r   r e g i s t e r   f a i l u r e " ) ; 
 
   } 
 
   e l s e 
 
   { 
 
         p r i n t k ( " g l o b a l v a r   r e g i s t e r   s u c c e s s " ) ; 
 
   } 
 
   r e t u r n   r e t ; 
 
 } 
 
   
 
 s t a t i c   v o i d   _ _ e x i t   g l o b a l v a r _ e x i t ( v o i d ) 
 
 { 
 
   i n t   r e t ; 
 
   
 
   / / l YqR
 
   r e t   =   u n r e g i s t e r _ c h r d e v ( M A J O R _ N U M ,   " g l o b a l v a r " ) ; 
 
   i f   ( r e t ) 
 
   { 
 
         p r i n t k ( " g l o b a l v a r   u n r e g i s t e r   f a i l u r e " ) ; 
 
   } 
 
   e l s e 
 
   { 
 
         p r i n t k ( " g l o b a l v a r   u n r e g i s t e r   s u c c e s s " ) ; 
 
   } 
 
 } 
 
   
 
 s t a t i c   s s i z e _ t   g l o b a l v a r _ r e a d ( s t r u c t   f i l e   * f i l p ,   c h a r   * b u f ,   s i z e _ t   l e n ,   l o f f _ t   * o f f ) 
 
 { 
 
   / / \g l o b a l _ v a r NQ8hzz
Y6R0R(u7bzz
 
   i f   ( c o p y _ t o _ u s e r ( b u f ,   & g l o b a l _ v a r ,   s i z e o f ( i n t ) ) ) 
 
   { 
 
         r e t u r n   -   E F A U L T ; 
 
   }   
 
   r e t u r n   s i z e o f ( i n t ) ; 
 
 } 
 
   
 
 s t a t i c   s s i z e _ t   g l o b a l v a r _ w r i t e ( s t r u c t   f i l e   * f i l p ,   c o n s t   c h a r   * b u f ,   s i z e _ t   l e n ,   l o f f _ t 
 
   * o f f ) 
 
 { 
 
   / / \(u7bzzvpenc
Y6R0RQ8hzzvg l o b a l _ v a r 
 
   i f   ( c o p y _ f r o m _ u s e r ( & g l o b a l _ v a r ,   b u f ,   s i z e o f ( i n t ) ) ) 
 
   { 
 
         r e t u r n   -   E F A U L T ; 
 
   }   
 
   r e t u r n   s i z e o f ( i n t ) ; 
 
 } 
 
   
 
 m o d u l e _ i n i t ( g l o b a l v a r _ i n i t ) ; 
 
 m o d u l e _ e x i t ( g l o b a l v a r _ e x i t ) ; 
 
 ЏL
 
 g c c    D _ _ K E R N E L _ _   - D M O D U L E    D L I N U X    I   / u s r / l o c a l / s r c / l i n u x 2 . 4 / i n c l u d e   - c    o   g l o b a l v a r . o   g l o b a l v a r . c 
 
 ыNxЏL
 
 i n m o d   g l o b a l v a r . o 
 
 R}g l o b a l v a r !jWWQЏL
 
 c a t   / p r o c / d e v i c e s 
 
 SsvQ-NYQN 2 5 4   g l o b a l v a r   NLYNV
 
               c@wbNSNЏL
 
 m k n o d   / d e v / g l o b a l v a r   c   2 5 4   0 
 
 R^Yp(u7bۏzǏ/ d e v / g l o b a l v a r ُ*N_1\SN0Rُ*NhQ@\SϑZbYN0bNQ N*N(u7b`vz^g l o b a l v a r t e s t . c eg
NY
 
 # i n c l u d e   < s y s / t y p e s . h > 
 
 # i n c l u d e   < s y s / s t a t . h > 
 
 # i n c l u d e   < s t d i o . h > 
 
 # i n c l u d e   < f c n t l . h > 
 
 m a i n ( ) 
 
 { 
 
   i n t   f d ,   n u m ; 
 
   / / Sb _ / d e v / g l o b a l v a r  
 
   f d   =   o p e n ( " / d e v / g l o b a l v a r " ,   O _ R D W R ,   S _ I R U S R   |   S _ I W U S R ) ; 
 
   i f   ( f d   ! =   - 1   ) 
 
   { 
 
     / / R!kg l o b a l v a r 
 
         r e a d ( f d ,   & n u m ,   s i z e o f ( i n t ) ) ; 
 
         p r i n t f ( " T h e   g l o b a l v a r   i s   % d \ n " ,   n u m ) ; 
 
   
 
     / / Qg l o b a l v a r 
 
         p r i n t f ( " P l e a s e   i n p u t   t h e   n u m   w r i t t e n   t o   g l o b a l v a r \ n " ) ; 
 
         s c a n f ( " % d " ,   & n u m ) ; 
 
         w r i t e ( f d ,   & n u m ,   s i z e o f ( i n t ) ) ; 
 
   
 
     / / Q!kg l o b a l v a r 
 
         r e a d ( f d ,   & n u m ,   s i z e o f ( i n t ) ) ; 
 
         p r i n t f ( " T h e   g l o b a l v a r   i s   % d \ n " ,   n u m ) ; 
 
   
 
         / / sQ / d e v / g l o b a l v a r  
 
         c l o s e ( f d ) ; 
 
   } 
 
   e l s e 
 
   { 
 
         p r i n t f ( " D e v i c e   o p e n   f a i l u r e \ n " ) ; 
 
   } 
 
 } 
 
 ы
NeN
 
 g c c    o   g l o b a l v a r t e s t . o   g l o b a l v a r t e s t . c 
 
 ЏL
 
 . / g l o b a l v a r t e s t . o 
 
 SNSs g l o b a l v a r  YSNcknxvQ0
 
 
 
 3 . YqR-Nvv^Sc6R
 
 (WqRz^-NS_Y*N~zTevTvDneqRz^-NvhQ@\Sϑ/f NyxQWvqQNDn	SO_S z` VdkbN_{[qQNDnۏLv^Sc6R0L i n u x Q8h-N㉳Qv^Sc6Rv g8^(uel/feNOSϑ~'YYpeeP\O:NNeO(u	0
 
 eNOSϑ {|<O
N{| {|<Ov/f[NR
Nvv<O'` 
N{| cN[N(W,g(T[s:gt
N[hQ
N N7h
N^\N N{|0
 
 e
NO_w(uaw wYge]~+RvgbLUSCQOc(u1\ Nv_sgw/f&TevOc]~ʑ>eN e 1\/f (WS0WSbl 0OSϑR_w(uaw w[bۏzNЏLR
NbQSd^_0ُ1\/f[Nv 
N{| 0
 
 FO/fe/fOSϑ؏/fe(WNUOe;R gYS	g N*NOcsS(WNUOe;R gYS	g N*NgbLUSCQ_0ُ1\/f[Nv {|<O 0
 
 tNeNOSϑv
Nyrp N, eTNOce^8^wv`Q[SN(WNUO
NNeO(uOSϑTNOcev`QOS(Wۏz
NNeO(u0YgObvqQNDnS(Wۏz
NNeRSNNOSϑegObqQNDnYg[qQNDnve^8^we_N/f}Yv	b0FO/fYgObvqQNDn (W-Ne
NNeSb^JSsS-NeYtSgTvJSsSo-Ne	1\_{O(ue0
 
 NOSϑvsQvA P I ;N	g
 
 [INOSϑ
 
 s t r u c t   s e m a p h o r e   s e m ;   
 
 RYSOSϑ
 
 v o i d   s e m a _ i n i t   ( s t r u c t   s e m a p h o r e   * s e m ,   i n t   v a l ) ; 
 
 QpeRYSOSϑv^nOSϑs e m v<P:Nv a l 
 
 v o i d   i n i t _ M U T E X   ( s t r u c t   s e m a p h o r e   * s e m ) ; 
 
 Qpe(uNRYS N*NNesS[bOSϑs e m v<Pn:N1 I{TNs e m a _ i n i t   ( s t r u c t   s e m a p h o r e   * s e m ,   1 ) 
 
 v o i d   i n i t _ M U T E X _ L O C K E D   ( s t r u c t   s e m a p h o r e   * s e m ) ; 
 
 Qpe_N(uNRYS N*NNeFO[bOSϑs e m v<Pn:N0 I{TNs e m a _ i n i t   ( s t r u c t   s e m a p h o r e   * s e m ,   0 ) 
 
 _OSϑ
 
 v o i d   d o w n ( s t r u c t   s e m a p h o r e   *   s e m ) ; 
 
 Qpe(uN_OSϑs e m [O[aw wVdk
N(W-Ne
NNeO(u
 
 i n t   d o w n _ i n t e r r u p t i b l e ( s t r u c t   s e m a p h o r e   *   s e m ) ;   
 
 QpeRNd o w n {|<O
NTKNY:Nd o w n 
NOSSbeFOd o w n _ i n t e r r u p t i b l e OSSbe
 
 i n t   d o w n _ t r y l o c k ( s t r u c t   s e m a p h o r e   *   s e m ) ; 
 
 Qpe\Ջ_OSϑs e m YgYz;R_[1\_OSϑv^ԏV0 &TRԏV^0 <P0[
NO[(uaw wSN(W-Ne
NNeO(u0
 
 ʑ>eOSϑ
 
 v o i d   u p ( s t r u c t   s e m a p h o r e   *   s e m ) ; 
 
 Qpeʑ>eOSϑs e m $UI{_0
 
 NevsQvA P I ;N	g
 
 [INe
 
 s p i n l o c k _ t   s p i n ; 
 
 RYSe
 
 s p i n _ l o c k _ i n i t ( l o c k ) 
 
 勏[(uNR`RYSel o c k 
 
 _e
 
 s p i n _ l o c k ( l o c k ) 
 
 勏[(uN_el o c k YgYzsS_[1\l
NԏV&TR[\e(W̑v0RevOcʑ>e
 
 s p i n _ t r y l o c k ( l o c k ) 
 
 勏[\Ջ_el o c k YgzsS_[_v^ԏVw&TRzsSԏVGP[E
N
NQ (WS0WSbl 
 
 ʑ>ee
 
 s p i n _ u n l o c k ( l o c k ) 
 
 勏[ʑ>eel o c k [Ns p i n _ t r y l o c k bs p i n _ l o c k M[O(u
 
 ddkKNY؏	g N~eO(uN-Ne`QNvA P I 0
 
 NbۏeQ[v^Sc6Rv[b0HQ(Wg l o b a l v a r vqRz^-NbNSNǏOSϑegc6R[i n t   g l o b a l _ v a r vv^SNb~QnNx
 
 # i n c l u d e   < l i n u x / m o d u l e . h > 
 
 # i n c l u d e   < l i n u x / i n i t . h > 
 
 # i n c l u d e   < l i n u x / f s . h > 
 
 # i n c l u d e   < a s m / u a c c e s s . h > 
 
 # i n c l u d e   < a s m / s e m a p h o r e . h > 
 
   
 
 M O D U L E _ L I C E N S E ( " G P L " ) ; 
 
   
 
 # d e f i n e   M A J O R _ N U M   2 5 4 
 
   
 
 s t a t i c   s s i z e _ t   g l o b a l v a r _ r e a d ( s t r u c t   f i l e   * ,   c h a r   * ,   s i z e _ t ,   l o f f _ t * ) ; 
 
 s t a t i c   s s i z e _ t   g l o b a l v a r _ w r i t e ( s t r u c t   f i l e   * ,   c o n s t   c h a r   * ,   s i z e _ t ,   l o f f _ t * ) ; 
 
   
 
 s t r u c t   f i l e _ o p e r a t i o n s   g l o b a l v a r _ f o p s   = 
 
 { 
 
   r e a d :   g l o b a l v a r _ r e a d ,   w r i t e :   g l o b a l v a r _ w r i t e , 
 
 } ; 
 
 s t a t i c   i n t   g l o b a l _ v a r   =   0 ; 
 
 s t a t i c   s t r u c t   s e m a p h o r e   s e m ; 
 
   
 
 s t a t i c   i n t   _ _ i n i t   g l o b a l v a r _ i n i t ( v o i d ) 
 
 { 
 
   i n t   r e t ; 
 
   r e t   =   r e g i s t e r _ c h r d e v ( M A J O R _ N U M ,   " g l o b a l v a r " ,   & g l o b a l v a r _ f o p s ) ; 
 
   i f   ( r e t ) 
 
   { 
 
         p r i n t k ( " g l o b a l v a r   r e g i s t e r   f a i l u r e " ) ; 
 
   } 
 
   e l s e 
 
   { 
 
         p r i n t k ( " g l o b a l v a r   r e g i s t e r   s u c c e s s " ) ; 
 
         i n i t _ M U T E X ( & s e m ) ; 
 
   } 
 
   r e t u r n   r e t ; 
 
 } 
 
   
 
 s t a t i c   v o i d   _ _ e x i t   g l o b a l v a r _ e x i t ( v o i d ) 
 
 { 
 
   i n t   r e t ; 
 
   r e t   =   u n r e g i s t e r _ c h r d e v ( M A J O R _ N U M ,   " g l o b a l v a r " ) ; 
 
   i f   ( r e t ) 
 
   { 
 
         p r i n t k ( " g l o b a l v a r   u n r e g i s t e r   f a i l u r e " ) ; 
 
   } 
 
   e l s e 
 
   { 
 
         p r i n t k ( " g l o b a l v a r   u n r e g i s t e r   s u c c e s s " ) ; 
 
   } 
 
 } 
 
   
 
 s t a t i c   s s i z e _ t   g l o b a l v a r _ r e a d ( s t r u c t   f i l e   * f i l p ,   c h a r   * b u f ,   s i z e _ t   l e n ,   l o f f _ t   * o f f ) 
 
 { 
 
   / / _OSϑ
 
   i f   ( d o w n _ i n t e r r u p t i b l e ( & s e m ) ) 
 
   { 
 
         r e t u r n   -   E R E S T A R T S Y S ; 
 
   } 
 
   
 
   / / \g l o b a l _ v a r NQ8hzz
Y6R0R(u7bzz
 
   i f   ( c o p y _ t o _ u s e r ( b u f ,   & g l o b a l _ v a r ,   s i z e o f ( i n t ) ) ) 
 
   { 
 
         u p ( & s e m ) ; 
 
         r e t u r n   -   E F A U L T ; 
 
   } 
 
   
 
   / / ʑ>eOSϑ
 
   u p ( & s e m ) ; 
 
   
 
   r e t u r n   s i z e o f ( i n t ) ; 
 
 } 
 
   
 
 s s i z e _ t   g l o b a l v a r _ w r i t e ( s t r u c t   f i l e   * f i l p ,   c o n s t   c h a r   * b u f ,   s i z e _ t   l e n ,   l o f f _ t 
 
   * o f f ) 
 
 { 
 
   / / _OSϑ
 
   i f   ( d o w n _ i n t e r r u p t i b l e ( & s e m ) ) 
 
   { 
 
         r e t u r n   -   E R E S T A R T S Y S ; 
 
   
 
   } 
 
   
 
   / / \(u7bzzvpenc
Y6R0RQ8hzzvg l o b a l _ v a r 
 
   i f   ( c o p y _ f r o m _ u s e r ( & g l o b a l _ v a r ,   b u f ,   s i z e o f ( i n t ) ) ) 
 
   { 
 
         u p ( & s e m ) ; 
 
         r e t u r n   -   E F A U L T ; 
 
   } 
 
   
 
   / / ʑ>eOSϑ
 
   u p ( & s e m ) ; 
 
   
 
   r e t u r n   s i z e o f ( i n t ) ; 
 
 } 
 
   
 
 m o d u l e _ i n i t ( g l o b a l v a r _ i n i t ) ; 
 
 m o d u l e _ e x i t ( g l o b a l v a r _ e x i t ) ; 
 
 cNegbN~g l o b a l v a r vqRz^XRo p e n ( ) Tr e l e a s e ( ) Qpev^(WvQ-NPReegOb[hQ@\Sϑi n t   g l o b a l v a r _ c o u n t U_Sb _Yvۏzpe	veg[sYS N*NۏzSb __{nxOg l o b a l v a r _ c o u n t  gYS:N1 	
 
 # i n c l u d e   < l i n u x / m o d u l e . h > 
 
 # i n c l u d e   < l i n u x / i n i t . h > 
 
 # i n c l u d e   < l i n u x / f s . h > 
 
 # i n c l u d e   < a s m / u a c c e s s . h > 
 
 # i n c l u d e   < a s m / s e m a p h o r e . h > 
 
   
 
 M O D U L E _ L I C E N S E ( " G P L " ) ; 
 
   
 
 # d e f i n e   M A J O R _ N U M   2 5 4 
 
   
 
 s t a t i c   s s i z e _ t   g l o b a l v a r _ r e a d ( s t r u c t   f i l e   * ,   c h a r   * ,   s i z e _ t ,   l o f f _ t * ) ; 
 
 s t a t i c   s s i z e _ t   g l o b a l v a r _ w r i t e ( s t r u c t   f i l e   * ,   c o n s t   c h a r   * ,   s i z e _ t ,   l o f f _ t * ) ; 
 
 s t a t i c   i n t   g l o b a l v a r _ o p e n ( s t r u c t   i n o d e   * i n o d e ,   s t r u c t   f i l e   * f i l p ) ; 
 
 s t a t i c   i n t   g l o b a l v a r _ r e l e a s e ( s t r u c t   i n o d e   * i n o d e ,   s t r u c t   f i l e   * f i l p ) ; 
 
   
 
 s t r u c t   f i l e _ o p e r a t i o n s   g l o b a l v a r _ f o p s   = 
 
 { 
 
   r e a d :   g l o b a l v a r _ r e a d ,   w r i t e :   g l o b a l v a r _ w r i t e ,   o p e n :   g l o b a l v a r _ o p e n ,   r e l e a s e : 
 
         g l o b a l v a r _ r e l e a s e , 
 
 } ; 
 
   
 
 s t a t i c   i n t   g l o b a l _ v a r   =   0 ; 
 
 s t a t i c   i n t   g l o b a l v a r _ c o u n t   =   0 ; 
 
 s t a t i c   s t r u c t   s e m a p h o r e   s e m ; 
 
 s t a t i c   s p i n l o c k _ t   s p i n   =   S P I N _ L O C K _ U N L O C K E D ; 
 
   
 
   
 
 s t a t i c   i n t   _ _ i n i t   g l o b a l v a r _ i n i t ( v o i d ) 
 
 { 
 
   i n t   r e t ; 
 
   r e t   =   r e g i s t e r _ c h r d e v ( M A J O R _ N U M ,   " g l o b a l v a r " ,   & g l o b a l v a r _ f o p s ) ; 
 
   i f   ( r e t ) 
 
   { 
 
         p r i n t k ( " g l o b a l v a r   r e g i s t e r   f a i l u r e " ) ; 
 
   } 
 
   e l s e 
 
   { 
 
         p r i n t k ( " g l o b a l v a r   r e g i s t e r   s u c c e s s " ) ; 
 
         i n i t _ M U T E X ( & s e m ) ; 
 
   } 
 
   r e t u r n   r e t ; 
 
 } 
 
   
 
 s t a t i c   v o i d   _ _ e x i t   g l o b a l v a r _ e x i t ( v o i d ) 
 
 { 
 
   i n t   r e t ; 
 
   r e t   =   u n r e g i s t e r _ c h r d e v ( M A J O R _ N U M ,   " g l o b a l v a r " ) ; 
 
   i f   ( r e t ) 
 
   { 
 
         p r i n t k ( " g l o b a l v a r   u n r e g i s t e r   f a i l u r e " ) ; 
 
   } 
 
   e l s e 
 
   { 
 
         p r i n t k ( " g l o b a l v a r   u n r e g i s t e r   s u c c e s s " ) ; 
 
   } 
 
 } 
 
   
 
 s t a t i c   i n t   g l o b a l v a r _ o p e n ( s t r u c t   i n o d e   * i n o d e ,   s t r u c t   f i l e   * f i l p ) 
 
 { 
 
   
 
   / / _	
 
   s p i n _ l o c k ( & s p i n ) ; 
 
   
 
   / / 4NLuDn
 
   i f   ( g l o b a l v a r _ c o u n t ) 
 
   { 
 
         s p i n _ u n l o c k ( & s p i n ) ; 
 
         r e t u r n   -   E B U S Y ; 
 
   } 
 
   g l o b a l v a r _ c o u n t + + ; 
 
   
 
   / / ʑ>e	
 
   s p i n _ u n l o c k ( & s p i n ) ; 
 
   
 
   r e t u r n   0 ; 
 
 } 
 
   
 
 s t a t i c   i n t   g l o b a l v a r _ r e l e a s e ( s t r u c t   i n o d e   * i n o d e ,   s t r u c t   f i l e   * f i l p ) 
 
 { 
 
   g l o b a l v a r _ c o u n t - - ; 
 
   r e t u r n   0 ; 
 
 } 
 
   
 
 s t a t i c   s s i z e _ t   g l o b a l v a r _ r e a d ( s t r u c t   f i l e   * f i l p ,   c h a r   * b u f ,   s i z e _ t   l e n ,   l o f f _ t 
 
   * o f f ) 
 
 { 
 
   i f   ( d o w n _ i n t e r r u p t i b l e ( & s e m ) ) 
 
   { 
 
         r e t u r n   -   E R E S T A R T S Y S ; 
 
   } 
 
   i f   ( c o p y _ t o _ u s e r ( b u f ,   & g l o b a l _ v a r ,   s i z e o f ( i n t ) ) ) 
 
   { 
 
         u p ( & s e m ) ; 
 
         r e t u r n   -   E F A U L T ; 
 
   } 
 
   u p ( & s e m ) ; 
 
   r e t u r n   s i z e o f ( i n t ) ; 
 
 } 
 
   
 
 s t a t i c   s s i z e _ t   g l o b a l v a r _ w r i t e ( s t r u c t   f i l e   * f i l p ,   c o n s t   c h a r   * b u f ,   s i z e _ t   l e n , 
 
   l o f f _ t   * o f f ) 
 
 { 
 
   i f   ( d o w n _ i n t e r r u p t i b l e ( & s e m ) ) 
 
   { 
 
         r e t u r n   -   E R E S T A R T S Y S ; 
 
   
 
   } 
 
   i f   ( c o p y _ f r o m _ u s e r ( & g l o b a l _ v a r ,   b u f ,   s i z e o f ( i n t ) ) ) 
 
   { 
 
         u p ( & s e m ) ; 
 
         r e t u r n   -   E F A U L T ; 
 
   } 
 
   u p ( & s e m ) ; 
 
   r e t u r n   s i z e o f ( i n t ) ; 
 
 } 
 
   
 
 m o d u l e _ i n i t ( g l o b a l v a r _ i n i t ) ; 
 
 m o d u l e _ e x i t ( g l o b a l v a r _ e x i t ) ; 
 
               :NN
NqRz^vHegbN/TR$N*NۏzR+RSb _/ d e v / g l o b a l v a r 0(W$N*N~z-N(u. / g l o b a l v a r t e s t . o KmՋz^S_ N*NۏzSb _/ d e v / g l o b a l v a r TSY N*Nۏz\Sb _1Y%Q d e v i c e   o p e n   f a i l u r e  YNV
 
 
 
 
 
 
 
 4 . Yv;^XN^;^Xd\O
 
 ;^Xd\O/fc(WgbLYd\Oe
N_DnRۏzcwv0RnSd\OvagNQۏLd\O0^;^Xd\Ovۏz(W
NۏLYd\Oev^
Ncw0cwvۏzۏeQs l e e p r`N^hVvЏLRypv0RI{_vagNn0
 
 (WL i n u x qRz^-NbNSNO(uI{_Rw a i t   q u e u e 	eg[s;^Xd\O0w a i t   q u e u e _e1\\O:N N*NW,gvRUSMOQs(WL i n u x Q8h̑N[NR:NW@xpenc~gNۏz^:g6R'}[~TY(uN[s8h_v_ekNNw:g6R0I{_RSN(uegTek[|~Dnv
N-N@bL i n u x OSϑ(WQ8h-N_N/f1uI{_Reg[sv0
 
 NbbN͑e[INY g l o b a l v a r  [SNY*NۏzSb _FO/fk!kS	gS_ N*NۏzQeQN N*NpencKNT,gۏzbvQ[ۏzMbSNSpenc&TR Nv;^X0
 
 # i n c l u d e   < l i n u x / m o d u l e . h > 
 
 # i n c l u d e   < l i n u x / i n i t . h > 
 
 # i n c l u d e   < l i n u x / f s . h > 
 
 # i n c l u d e   < a s m / u a c c e s s . h > 
 
 # i n c l u d e   < l i n u x / w a i t . h > 
 
 # i n c l u d e   < a s m / s e m a p h o r e . h > 
 
   
 
 M O D U L E _ L I C E N S E ( " G P L " ) ; 
 
   
 
 # d e f i n e   M A J O R _ N U M   2 5 4 
 
   
 
 s t a t i c   s s i z e _ t   g l o b a l v a r _ r e a d ( s t r u c t   f i l e   * ,   c h a r   * ,   s i z e _ t ,   l o f f _ t * ) ; 
 
 s t a t i c   s s i z e _ t   g l o b a l v a r _ w r i t e ( s t r u c t   f i l e   * ,   c o n s t   c h a r   * ,   s i z e _ t ,   l o f f _ t * ) ; 
 
   
 
 s t r u c t   f i l e _ o p e r a t i o n s   g l o b a l v a r _ f o p s   = 
 
 { 
 
   r e a d :   g l o b a l v a r _ r e a d ,   w r i t e :   g l o b a l v a r _ w r i t e , 
 
 } ; 
 
   
 
 s t a t i c   i n t   g l o b a l _ v a r   =   0 ; 
 
 s t a t i c   s t r u c t   s e m a p h o r e   s e m ; 
 
 s t a t i c   w a i t _ q u e u e _ h e a d _ t   o u t q ; 
 
 s t a t i c   i n t   f l a g   =   0 ; 
 
   
 
 s t a t i c   i n t   _ _ i n i t   g l o b a l v a r _ i n i t ( v o i d ) 
 
 { 
 
   i n t   r e t ; 
 
   r e t   =   r e g i s t e r _ c h r d e v ( M A J O R _ N U M ,   " g l o b a l v a r " ,   & g l o b a l v a r _ f o p s ) ; 
 
   i f   ( r e t ) 
 
   { 
 
         p r i n t k ( " g l o b a l v a r   r e g i s t e r   f a i l u r e " ) ; 
 
   } 
 
   e l s e 
 
   { 
 
         p r i n t k ( " g l o b a l v a r   r e g i s t e r   s u c c e s s " ) ; 
 
         i n i t _ M U T E X ( & s e m ) ; 
 
         i n i t _ w a i t q u e u e _ h e a d ( & o u t q ) ; 
 
   } 
 
   r e t u r n   r e t ; 
 
 } 
 
   
 
 s t a t i c   v o i d   _ _ e x i t   g l o b a l v a r _ e x i t ( v o i d ) 
 
 { 
 
   i n t   r e t ; 
 
   r e t   =   u n r e g i s t e r _ c h r d e v ( M A J O R _ N U M ,   " g l o b a l v a r " ) ; 
 
   i f   ( r e t ) 
 
   { 
 
         p r i n t k ( " g l o b a l v a r   u n r e g i s t e r   f a i l u r e " ) ; 
 
   } 
 
   e l s e 
 
   { 
 
         p r i n t k ( " g l o b a l v a r   u n r e g i s t e r   s u c c e s s " ) ; 
 
   } 
 
 } 
 
   
 
   
 
 s t a t i c   s s i z e _ t   g l o b a l v a r _ r e a d ( s t r u c t   f i l e   * f i l p ,   c h a r   * b u f ,   s i z e _ t   l e n ,   l o f f _ t 
 
   * o f f ) 
 
 { 
 
   / / I{_pencS_
 
   i f   ( w a i t _ e v e n t _ i n t e r r u p t i b l e ( o u t q ,   f l a g   ! =   0 ) ) 
 
   { 
 
         r e t u r n   -   E R E S T A R T S Y S ; 
 
   } 
 
   
 
   i f   ( d o w n _ i n t e r r u p t i b l e ( & s e m ) ) 
 
   { 
 
         r e t u r n   -   E R E S T A R T S Y S ; 
 
   } 
 
   
 
   f l a g   =   0 ; 
 
   i f   ( c o p y _ t o _ u s e r ( b u f ,   & g l o b a l _ v a r ,   s i z e o f ( i n t ) ) ) 
 
   { 
 
         u p ( & s e m ) ; 
 
         r e t u r n   -   E F A U L T ; 
 
   } 
 
   
 
   u p ( & s e m ) ; 
 
   
 
   r e t u r n   s i z e o f ( i n t ) ; 
 
 } 
 
   
 
 s t a t i c   s s i z e _ t   g l o b a l v a r _ w r i t e ( s t r u c t   f i l e   * f i l p ,   c o n s t   c h a r   * b u f ,   s i z e _ t   l e n , 
 
   l o f f _ t   * o f f ) 
 
 { 
 
   i f   ( d o w n _ i n t e r r u p t i b l e ( & s e m ) ) 
 
   { 
 
         r e t u r n   -   E R E S T A R T S Y S ; 
 
   } 
 
   i f   ( c o p y _ f r o m _ u s e r ( & g l o b a l _ v a r ,   b u f ,   s i z e o f ( i n t ) ) ) 
 
   { 
 
         u p ( & s e m ) ; 
 
         r e t u r n   -   E F A U L T ; 
 
   } 
 
   u p ( & s e m ) ; 
 
   f l a g   =   1 ; 
 
   / / wpencS_
 
   w a k e _ u p _ i n t e r r u p t i b l e ( & o u t q ) ; 
 
   
 
   r e t u r n   s i z e o f ( i n t ) ; 
 
 } 
 
   
 
 m o d u l e _ i n i t ( g l o b a l v a r _ i n i t ) ; 
 
 m o d u l e _ e x i t ( g l o b a l v a r _ e x i t ) ; 
 
 Q$N*N(u7b`vz^egKmՋ,{ N*N(uN;^X0W/ d e v / g l o b a l v a r S N*N(uNQ/ d e v / g l o b a l v a r 0S	gS_T N*N[/ d e v / g l o b a l v a r ۏLNeQKNTMRvr e a d MbԏV0
 
 vz^:N
 
 # i n c l u d e   < s y s / t y p e s . h > 
 
 # i n c l u d e   < s y s / s t a t . h > 
 
 # i n c l u d e   < s t d i o . h > 
 
 # i n c l u d e   < f c n t l . h > 
 
 m a i n ( ) 
 
 { 
 
   i n t   f d ,   n u m ; 
 
   
 
   f d   =   o p e n ( " / d e v / g l o b a l v a r " ,   O _ R D W R ,   S _ I R U S R   |   S _ I W U S R ) ; 
 
   i f   ( f d   ! =   -   1 ) 
 
   { 
 
         w h i l e   ( 1 ) 
 
         { 
 
             r e a d ( f d ,   & n u m ,   s i z e o f ( i n t ) ) ;   / / z^\;^X(WdkSd^	g[g l o b a l v a r veQ
 
             p r i n t f ( " T h e   g l o b a l v a r   i s   % d \ n " ,   n u m ) ; 
 
   
 
             / / YgeQ/f0 R Q
 
             i f   ( n u m   = =   0 ) 
 
             { 
 
                 c l o s e ( f d ) ; 
 
                 b r e a k ; 
 
             } 
 
         } 
 
   } 
 
   e l s e 
 
   { 
 
         p r i n t f ( " d e v i c e   o p e n   f a i l u r e \ n " ) ; 
 
   } 
 
 } 
 
 Qvz^:N
 
 # i n c l u d e   < s y s / t y p e s . h > 
 
 # i n c l u d e   < s y s / s t a t . h > 
 
 # i n c l u d e   < s t d i o . h > 
 
 # i n c l u d e   < f c n t l . h > 
 
 m a i n ( ) 
 
 { 
 
   i n t   f d ,   n u m ; 
 
   
 
   f d   =   o p e n ( " / d e v / g l o b a l v a r " ,   O _ R D W R ,   S _ I R U S R   |   S _ I W U S R ) ; 
 
   i f   ( f d   ! =   -   1 ) 
 
   { 
 
         w h i l e   ( 1 ) 
 
         { 
 
             p r i n t f ( " P l e a s e   i n p u t   t h e   g l o b a l v a r : \ n " ) ; 
 
             s c a n f ( " % d " ,   & n u m ) ; 
 
             w r i t e ( f d ,   & n u m ,   s i z e o f ( i n t ) ) ; 
 
   
 
             / / YgeQ0  Q
 
             i f   ( n u m   = =   0 ) 
 
             { 
 
                 c l o s e ( f d ) ; 
 
                 b r e a k ; 
 
             } 
 
         } 
 
   } 
 
   e l s e 
 
   { 
 
         p r i n t f ( " d e v i c e   o p e n   f a i l u r e \ n " ) ; 
 
   } 
 
 } 
 
 Sb _$N*N~zR+RЏL
N$N*N^(uz^SsS_(W,{N*N~z-Nl	geQpence,{ N*N~zl	gQ;^X	kS_bN(W,{N*N~z-N~g l o b a l v a r eQ N*N<P,{ N*N~z1\OQُ*N<PYNV
 
 sQN
NOzbNeEQ NpYg\qRz^-Nvr e a d Qpe9e:N
 
 s t a t i c   s s i z e _ t   g l o b a l v a r _ r e a d ( s t r u c t   f i l e   * f i l p ,   c h a r   * b u f ,   s i z e _ t   l e n ,   l o f f _ t 
 
   * o f f ) 
 
 { 
 
   / / SOSϑS;^X
 
   i f   ( d o w n _ i n t e r r u p t i b l e ( & s e m ) ) 
 
   { 
 
         r e t u r n   -   E R E S T A R T S Y S ; 
 
   } 
 
   
 
   / / I{_pencS_S;^X
 
   i f   ( w a i t _ e v e n t _ i n t e r r u p t i b l e ( o u t q ,   f l a g   ! =   0 ) ) 
 
   { 
 
         r e t u r n   -   E R E S T A R T S Y S ; 
 
   } 
 
   f l a g   =   0 ; 
 
   
 
   / / 4NLuDn
 
   i f   ( c o p y _ t o _ u s e r ( b u f ,   & g l o b a l _ v a r ,   s i z e o f ( i n t ) ) ) 
 
   { 
 
         u p ( & s e m ) ; 
 
         r e t u r n   -   E F A U L T ; 
 
   } 
 
   
 
   / / ʑ>eOSϑ
 
   u p ( & s e m ) ; 
 
   
 
   r e t u r n   s i z e o f ( i n t ) ; 
 
 } 
 
 sSNbcw a i t _ e v e n t _ i n t e r r u p t i b l e ( o u t q ,   f l a g   ! =   0 ) Td o w n _ i n t e r r u p t i b l e ( & s e m ) vz^ُ*NqRz^\S_
NSЏL0[E
NS_$N*NS;^XvNNTeQsesS$N*Nw a i t _ e v e n t bd o w n Fd(W NwveP\S_^8^qSi{kvS'`_'Yُ*NePbNyr+RYua[NvQsz^0S_6qbN^=\S0WMQُy`QvSu
 
 + ؏	g N*NNY;^XN^;^Xo`o`vsQvsSs e l e c t Tp o l l s e l e c t Tp o l l v,g( N7hMR(WB S D   U n i x -N_eQT(WS y s t e m   V -N_eQ0p o l l Ts e l e c t (uNg⋾Yvr`NO(u7bz^w/f&T[YۏL^;^Xv[N YqRz^-Nvp o l l Qpe/ec0
 
 qRz^-Np o l l Qpe-N g;N(u0Rv N*NA P I /fp o l l _ w a i t vQSWYN
 
 v o i d   p o l l _ w a i t ( s t r u c t   f i l e   * f i l p ,   w a i t _ q u e u e _ h e a t _ t   * q u e u e ,   p o l l _ t a b l e   *   w a i t ) ; 
 
 p o l l _ w a i t Qpe@bZPv]\O/fbS_MRۏzmR0Rw a i t Spec[vI{_Rhp o l l _ t a b l e 	-N0NbbN~g l o b a l v a r vqRmR N*Np o l l Qpe
 
 s t a t i c   u n s i g n e d   i n t   g l o b a l v a r _ p o l l ( s t r u c t   f i l e   * f i l p ,   p o l l _ t a b l e   * w a i t ) 
 
 { 
 
   u n s i g n e d   i n t   m a s k   =   0 ; 
 
   
 
   p o l l _ w a i t ( f i l p ,   & o u t q ,   w a i t ) ; 
 
   
 
   / / penc/f&TS_
 
   i f   ( f l a g   ! =   0 ) 
 
   { 
 
         m a s k   | =   P O L L I N   |   P O L L R D N O R M ;   / / h:ypencS_
 
   } 
 
   
 
   r e t u r n   m a s k ; 
 
 } 
 
  fv/fp o l l _ w a i t Qpev^
N;^Xz^-Np o l l _ w a i t ( f i l p ,   & o u t q ,   w a i t ) ُS݋va`v^
N/f NvI{_o u t q OSϑS_wckv;^XR\O/f
NB\vs e l e c t / p o l l Qpe-N[bv0s e l e c t / p o l l O(W N*N_s-N[k*N v,TvY(u[N]vp o l l /ecQpeNO_S_MRۏzReQT*NYvI{_Rh0S_MRl	gNUOv,TvY1\~RQ8hۏL^(us c h e d u l e 	Qc p u ۏeQ;^Xr`s c h e d u l e ԏVe\Q!k_shKm/f&T	gd\OSNۏLYdkS
Y&TR	gNa N*NY1\~s e l e c t / p o l l zsSԏV0
 
 bNQ N*N(u7b`^(uz^egKmՋ9eQTvqR0z^-N(u0RB S D   U n i x -N_eQvs e l e c t QpevQSW:N
 
 i n t   s e l e c t ( i n t   n u m f d s ,   f d _ s e t   * r e a d f d s ,   f d _ s e t   * w r i t e f d s ,   f d _ s e t   * e x c e p t f d s ,   s t r u c t   t i m e v a l   * t i m e o u t ) ; 
 
 vQ-Nr e a d f d s 0w r i t e f d s 0e x c e p t f d s R+R/fs e l e c t ( ) vƉv0QT_8^YtveNc&{ƖTn u m f d s v<P/f hgvSx gؚveNc&{R1 0t i m e o u t Spe/f N*NcTs t r u c t   t i m e v a l {|Wvc[SNOs e l e c t ( ) (WI{_t i m e o u t eT傡l	geNc&{QY}YRԏV0s t r u c t   t i m e v a l penc~g:N  
 
 s t r u c t   t i m e v a l   
 
 {   
 
  0 0i n t   t v _ s e c ;   / *   s e c o n d s   * /   
 
  0 0i n t   t v _ u s e c ;   / *   m i c r o s e c o n d s   * /   
 
 } ; 
 
 ddkKNYbN؏\O(uNRA P I 
 
 F D _ Z E R O ( f d _ s e t   * s e t )   nd N*NeNc&{Ɩ  
 
 F D _ S E T ( i n t   f d , f d _ s e t   * s e t )   \ N*NeNc&{ReQeNc&{Ɩ-N  
 
 F D _ C L R ( i n t   f d , f d _ s e t   * s e t )   \ N*NeNc&{NeNc&{Ɩ-Nnd  
 
 F D _ I S S E T ( i n t   f d , f d _ s e t   * s e t )   $ReeNc&{/f&TnMO0
 
 Nbv(u7b`KmՋz^I{_/ d e v / g l o b a l v a r SFO/fnN5 yvI{_e傅Ǐ5 yN6ql	gpencSRQ N o   d a t a   w i t h i n   5   s e c o n d s  
 
 # i n c l u d e   < s y s / t y p e s . h > 
 
 # i n c l u d e   < s y s / s t a t . h > 
 
 # i n c l u d e   < s t d i o . h > 
 
 # i n c l u d e   < f c n t l . h > 
 
 # i n c l u d e   < s y s / t i m e . h > 
 
 # i n c l u d e   < s y s / t y p e s . h > 
 
 # i n c l u d e   < u n i s t d . h > 
 
   
 
 m a i n ( ) 
 
 { 
 
   i n t   f d ,   n u m ; 
 
   f d _ s e t   r f d s ; 
 
   s t r u c t   t i m e v a l   t v ; 
 
   
 
   f d   =   o p e n ( " / d e v / g l o b a l v a r " ,   O _ R D W R ,   S _ I R U S R   |   S _ I W U S R ) ; 
 
   i f   ( f d   ! =   -   1 ) 
 
   { 
 
         w h i l e   ( 1 ) 
 
         { 
 
             / / gwg l o b a l v a r /f&T	geQ
 
             F D _ Z E R O ( & r f d s ) ; 
 
             F D _ S E T ( f d ,   & r f d s ) ; 
 
             / / nee:N5 s 
 
             t v . t v _ s e c   =   5 ; 
 
             t v . t v _ u s e c   =   0 ; 
 
             s e l e c t ( f d   +   1 ,   & r f d s ,   N U L L ,   N U L L ,   & t v ) ; 
 
   
 
             / / penc/f&TS_
 
             i f   ( F D _ I S S E T ( f d ,   & r f d s ) ) 
 
             { 
 
                 r e a d ( f d ,   & n u m ,   s i z e o f ( i n t ) ) ; 
 
                 p r i n t f ( " T h e   g l o b a l v a r   i s   % d \ n " ,   n u m ) ; 
 
   
 
                 / / eQ:N0  Q
 
                 i f   ( n u m   = =   0 ) 
 
                 { 
 
                     c l o s e ( f d ) ; 
 
                     b r e a k ; 
 
                 } 
 
             } 
 
             e l s e 
 
                 p r i n t f ( " N o   d a t a   w i t h i n   5   s e c o n d s . \ n " ) ; 
 
         } 
 
   } 
 
   e l s e 
 
   { 
 
         p r i n t f ( " d e v i c e   o p e n   f a i l u r e \ n " ) ; 
 
   } 
 
 } 
 
  _$N*N~zR+RЏLz^ N*N[g l o b a l v a r ۏLQ N*N(u
Nz^[g l o b a l v a r ۏL0S_bN(WQ~z~g l o b a l v a r eQ N*N<PT~zzsS1\Q<PS_bNޏ~5 yl	geQe N o   d a t a   w i t h i n   5   s e c o n d s  (W~zQ.   
 
 
 
 
 
 