$ od -c -N 50000 [phylum]<CTamarin>Doc>Notes>loops.tedit!1 0000000 P R O P O S E D T A M A R I N 0000020 O P C O D E S F O R C O M 0000040 M O N L O O P S \r \r \r P e r m 0000060 u t a t i o n V e c t o r \r \r 0000100 \t T h i s i s a v e c t o 0000120 r u s e d t o r e l o c a 0000140 t e s l o t n u m b e r s 0000160 o f i n s t a n c e s . T 0000200 h e r e a r e t w o b a s 0000220 i c t y p e s o f p e r m 0000240 u t a t i o n v e c t o r s : 0000260 s i m p l e a n d c o m p 0000300 l e x . S i m p l e p e r 0000320 m u t a t i o n v e c t o r s 0000340 w i l l c o n t a i n t h 0000360 e r e l o c a t i o n n u m 0000400 b e r s f o r o n e c l a 0000420 s s , s o t h e r e l o c 0000440 a t i o n p r o c e s s w i 0000460 l l b e p e r f o r m e d 0000500 b y r e a d i n g t h e n 0000520 t h i t e m i n t h e p 0000540 e r m u t a t i o n v e c t o 0000560 r t o g e t t h e o f f 0000600 s e t i n t o t h e s l o 0000620 t a r e a o f t h e n t 0000640 h s l o t . \r \r \t C o m p l e 0000660 x p e r m u t a t i o n v e 0000700 c t o r s c o n t a i n p o 0000720 i n t e r s t o t h e p e 0000740 r m u t a t i o n v e c t o r 0000760 s f o r e a c h c l a s s 0001000 u s e d i n a m e t h o 0001020 d . E a s h c l a s s i 0001040 s a s s i g n e d a n i n 0001060 d e x i n t o t h e c o m 0001100 p l e x p e r m u t a t i o n 0001120 v e c t o r t o f i n d 0001140 a p o i n t e r t o t h e 0001160 s i m p l e p e r m u t a t 0001200 i o n v e c t o r f o r t 0001220 h a t c l a s s . \r \r \r - 0001240 W h y n o t c o m b i n e 0001260 t h e c o m p l e x P V ' s 0001300 i n t o o n e P V w h e 0001320 r e e a c h c l a s s h a 0001340 s a n o f f s e t i n t o 0001360 t h e P V ? T h i s w 0001400 o u l d s i m p l i f y t h 0001420 e t h e s l o t a c c e s 0001440 s s i n c e t h e c l a s 0001460 s o f f s e t c a n b e 0001500 a d d e d t o s l o t o f 0001520 f s e t & t h e s i m p l 0001540 e s l o t a c c e s s m e 0001560 t h o d u s e d . ( O r 0001600 d o y o u n o t k n o w 0001620 t h e # s l o t s a c l 0001640 a s s w i l l u s e a t 0001660 c o m p i l e t i m e t h u 0001700 s n o t b e i n g a b l e 0001720 t o a s s i g n a n o f 0001740 f s e t ? ) \r \r W r a p p e r s 0001760 \r \r \t W h e n w r a p p e r s 0002000 a r e m e n t i o n e d w 0002020 h a t i s m e a n t i s 0002040 t h e p o i n t e r t o t 0002060 h e w r a p p e r l o c a t 0002100 i o n , n o t w h a t i s 0002120 i n t h e w r a p p e r 0002140 i t s e l f . \r \r \r T h e f o 0002160 l l o w i n g p r o p o s e d 0002200 o p c o d e s m a k e t h 0002220 e f o l l o w i n g a s s u 0002240 m p t i o n s : \r \r - T h 0002260 e r e i s a f i x e d c 0002300 e l l r e s e r v e d f o r 0002320 t h e p e r m u t a t i o n 0002340 v e c t o r ( P V ) \r - 0002360 N o r m a l f u n c t i o n 0002400 c a l l s a l w a y s N i 0002420 l t h e P V \r - T h 0002440 e r e e x i s t s a t y p 0002460 e t a b l e i n d e x e d 0002500 b y t h e 8 t a g & s 0002520 u b t y p e b i t s w h i c 0002540 h r e t u r n s a w r a p 0002560 p e r f o r e a c h t y p 0002600 e . \r \r I . \t S l o t A c c e 0002620 s s \r \r \t a . S i m p l e 0002640 P V ( o n l y o n e c l a 0002660 s s ) \r \r \t T h i s o p c o d 0002700 e i s u s e d t o a c c 0002720 e s s d a t a c o n t a i n 0002740 e d i n t h e s l o t s 0002760 o f a n i n s t a n c e . 0003000 T h e o p e r a n d s f o 0003020 r t h e o p c o d e a r e 0003040 : \r \t \r \t T o s \t - P t r t 0003060 o t h e i n s t a n c e \r \t 0003100 I B u f N \t - S l o t n u m 0003120 b e r t o a c c e s s \r \t P 0003140 V \t - P t r t o P e r m u 0003160 t a t i o n v e c t o r i n 0003200 t h e r e s e r v e d c e 0003220 l l \r \r T h e s e m a n t i c 0003240 s o f t h e o p c o d e 0003260 a r e t o r e t r e i v e 0003300 t h e v a l u e o f t h e 0003320 d e s i r e d s l o t f r 0003340 o m a n i n s t a n c e . 0003360 T h e p e r m u t a t i o n 0003400 v e c t o r m u s t b e 0003420 a c c e s s e d t o f i n d 0003440 t h e c o r r e c t o f f 0003460 s e t i n t o t h e i n s 0003500 t a n c e s l o t s o f t 0003520 h e d e s i r e d i t e m . 0003540 T h e r e s u l t i n g 0003560 s l o t v a l u e i s t h 0003600 e n p l a c e d a t T o s 0003620 . T h e s t e p s t h e 0003640 o p c o d e m u s t t a k 0003660 e a r e : \r \r \t - A r g _ 0003700 R e a d M e m o r y [ P V + 0003720 I B u f N ] \t T h i s g e 0003740 t s s l o t d i s p l a c e 0003760 m e n t \r \r \t - T e m p _ 0004000 R e a d M e m o r y [ T o s + 0004020 n ] \t \t T h i s g e t s a 0004040 d d r e s s o f s l o t s \r 0004060 \r \t - T o s _ R e a d M e 0004100 m o r y [ T e m p + A r g ] 0004120 \t \t T h i s r e a d s t h e 0004140 s l o t \r \t \r T h i s o p c 0004160 o d e m u s t U f n i f 0004200 t h e P V e n t r y i s 0004220 N i l , s o t h a t t h e 0004240 P V c a n b e r e b u i 0004260 l t a n d d e p o s i t e d 0004300 i n t h e s p e c i a l 0004320 l o c a t i o n . \r \r - I f 0004340 t h e s l o t a d d r e s s 0004360 i s c a c h e d i n t h 0004400 e s t a c k f r a m e t h 0004420 e e x t r a m e m o r y r 0004440 e f e r e n c e c a n b e 0004460 a v o i d e d , b u t a m 0004500 i c r o i n s t r u c t i o n 0004520 t o a c c e s s t h e c a 0004540 c h e l o c a t i o n m a y 0004560 s t i l l b e n e c e s s 0004600 a r y , u n l e s s t h e 0004620 s l o t a d d r e s s w a s 0004640 i n a f i x e d c a c h 0004660 e l o c a t i o n . \r \r \t b . 0004700 C o m p l e x P V ( s e 0004720 v e r a l c l a s s e s ) \r \r 0004740 \t T h i s o p e r a t i o n 0004760 r e q u i r e s s e v e r a l 0005000 o p c o d e s . T h e y 0005020 a r e u s e d t o a c c e 0005040 s s d a t a c o n t a i n e 0005060 d i n t h e s l o t s o 0005100 f a n i n s t a n c e w h 0005120 e n t h e r e i s m o r e 0005140 t h a n o n e c l a s s 0005160 i n p u t t o a m e t h 0005200 o d . T h e y a r e s p 0005220 l i t i n t o t w o o p c 0005240 o d e s s o t h a t t h e 0005260 t w o I B u f N c o n s t 0005300 a n t s c a n b e p a r t 0005320 o f e a c h o p c o d e 0005340 t h u s g i v i n g t h e 0005360 m i c r o c o d e f a s t e r 0005400 a c c e s s t o t h e m . 0005420 T h e f i r s t o p c o 0005440 d e m u s t d e t e r m i n 0005460 e t h e c o r r e c t P V 0005500 e n t r y . T h e o p e 0005520 r a n d s f o r t h i s o 0005540 p c o d e a r e : \r \r \t T o s 0005560 \t - p t r t o t h e i n 0005600 s t a n c e \r \t I B u f N \t - 0005620 P o s i t i o n o f d e s i 0005640 r e d P V \r \t P V \t - P t r 0005660 t o P e r m u t a t i o n 0005700 v e c t o r i n t h e r e 0005720 s e r v e d c e l l \r \r \t - 0005740 T o s + 1 _ R e a d M e m o 0005760 r y [ P V + I B u f N ] \t G 0006000 e t P V f o r d e s i r e 0006020 d c l a s s \r \r w i t h t h 0006040 e r e s u l t i n g P V b 0006060 e i n g p u s h e d o n t o 0006100 t h e s t a c k . T h i 0006120 s o p c o d e m u s t U f 0006140 n i f t h e P V e n t r 0006160 y i s N i l , s o t h a 0006200 t t h e P V e n t r y c 0006220 a n b e r e b u i l t . \r 0006240 \r - W h a t i s n e e d e 0006260 d t o r e b u i l d t h e 0006300 P V ? I f i s i s a 0006320 c o m p l e x P V t h e n 0006340 m o r e t h a n a n i n 0006360 s t a n c e s h o u l d b e 0006400 r e q u i r e d ( i . e . 0006420 a l l t h e c l a s s e s 0006440 u s e d i n t h e m e t h 0006460 o d ) . \r \r T h e n e x t 0006500 o p c o d e a c c e s s e s 0006520 a s l o t b a s e d o n 0006540 t h e P V a t T o s . I 0006560 t s o p e r a n d s a r e : 0006600 \r \r \t T o s - 1 \t - p t r t 0006620 o t h e i n s t a n c e \r \t 0006640 T o s \t - p t r t o t h e 0006660 P V \r \t I B u f N \t - S l o 0006700 t n u m b e r t o a c c e 0006720 s s \r \r w i t h t h e P V 0006740 b e i n g p o p p e d f r o 0006760 m t h e s t a c k a n d 0007000 t h e n t h e s l o t p l 0007020 a c e d a t t h e n e w 0007040 T o s . T h e s t e p s 0007060 f o r t h i s o p c o d e 0007100 w o u l d b e : \r \r \t - A 0007120 r g _ R e a d M e m o r y [ 0007140 T o s + I B u f N ] \r \r \t - 0007160 T e m p _ R e a d M e m o 0007200 r y [ T o s - 1 + n ] \r \r \t 0007220 - T o s _ T o s - 1 \r 0007240 \r \t - T o s _ R e a d M e 0007260 m o r y [ T e m p + A r g ] 0007300 \r \r \r I I . \t M e t h o d C a 0007320 l l \r \r \t A m e t h o d c a 0007340 l l p e r f o r m s a m e 0007360 t h o d l o o k u p b a s e 0007400 d o n t h e c l a s s o 0007420 r c l a s s e s o f o n e 0007440 o r m o r e o f t h e 0007460 p a r a m e t e r s . T h e 0007500 s i m p l e m e t h o d c 0007520 a l l w i l l p e r f o r m 0007540 t h e l o o k u p o n l y 0007560 f o r o n e c l a s s , 0007600 w h e n i t i s t h e f 0007620 i r s t p a r a m e t e r . 0007640 A m e t h o d c a l l i 0007660 s i n v o k e d t h r o u g 0007700 h t h e n o r m a l f u n 0007720 c t i o n c a l l m e c h a 0007740 n i s m w i t h t h e d e 0007760 f i n i t i o n c e l l o f 0010000 t h e c a l l e d i t e m 0010020 b e i n g a s p e c i a l 0010040 m e t h o d s u b t y p e . 0010060 T h e m i c r o c o d e w 0010100 i l l t h e n h a v e t o 0010120 p e r f o r m t h e f o l 0010140 l o w i n g : \r \r \t F i r s t 0010160 t h e w r a p p e r f o r 0010200 t h e 1 s t p a r a m e t e 0010220 r m u s t b e f o u n d . 0010240 T h i s w i l l b e p 0010260 e r f o r m e d b y i n d e 0010300 x i n g i n t o a t y p e 0010320 t a b l e b a s e d o n 0010340 t h e t y p e b i t s o f 0010360 t h e p a r a m e t e r , 0010400 u n l e s s t h e p a r a m 0010420 e t e r i s a n i n s t a 0010440 n c e , i n w h i c h c a 0010460 s e t h e a c t u a l w r 0010500 a p p e r f o r t h e i n 0010520 s t a n c e w i l l b e u 0010540 s e d . \r \r \t O n c e t h 0010560 e w r a p p e r i s f o u 0010600 n d t h e m e t h o d l o 0010620 o k u p i s p e r f o r m e 0010640 d . T h i s o c c u r s 0010660 b y t a k i n g t h e w r 0010700 a p p e r a n d c o m a p r 0010720 i n g i t w i t h t h e 0010740 w r a p p e r s i n t h e 0010760 l o o k u p t a b l e o f 0011000 t h e m e t h o d s . I t 0011020 w i l l e i t h e r b e 0011040 a s i m p l e h a s h t a 0011060 b l e o f a b o u t 1 6 0011100 e n t i e s , o r a s t r 0011120 a i g h t l i n e a r s e a 0011140 r c h t h r o u g h a t a 0011160 b l e . T h e t a b l e 0011200 w i l l b e f o u n d t h 0011220 r o u g h a n e n t r y i 0011240 n t h e m e t h o d o b j 0011260 e c t . \r \r \t I f a m a t c 0011300 h i s f o u n d t h e c 0011320 o r r e s p o n d i n g f u n 0011340 c t i o n i s i n v o k e d 0011360 w i t h a n o r m a l f 0011400 u n c t i o n c a l l , w i 0011420 t h t h e e x c e p t i o n 0011440 t h a t t h e p e r m u t 0011460 a t i o n v e c t o r f o r 0011500 t h e m e t h o d i s s 0011520 e t t o t h e P V i n 0011540 d i c a t e d i n t h e f 0011560 u n c t i o n h e a d e r o 0011600 f t h e m e t h o d . \r \r \t 0011620 T h e m e t h o d U f n r 0011640 o u t i n e i s i n v o k e 0011660 d i f a m a t c h i s 0011700 n o t f o u n d f o r t h 0011720 e w r a p p e r , w h e r e 0011740 o t h e r m e t h o d s m 0011760 a y b e s e a r c h e d . \r 0012000 \r \r - I f m o r e t h a n 0012020 o n e c l a s s i s d e 0012040 s i r e d , c o u l d w e 0012060 x o r t h e w r a p p e r s 0012100 & u s e t h a t f o r 0012120 a h a s h l o o k u p , t 0012140 h e n c o m p a r e e a c h 0012160 w r a p p e r ? O r h a 0012200 v e a t r e e s t r u c t 0012220 u r e d l o o k u p w h e r 0012240 e t h e 1 s t p a r a m e 0012260 t e r m a t c h p o i n t s 0012300 o f f t o t h e 2 n d 0012320 p a r a m e t e r l o o k u p 0012340 t a b l e . . . t i l l 0012360 l a s t m a t c h p o i n t 0012400 s o f f t o t h e m e t 0012420 h o d . \r \r \r \r I I I . \t C l a 0012440 s s L o o k u p \r \r \t A n o t 0012460 h e r o p c o d e i s d e 0012500 s i r e d t o r e t u r n 0012520 t h e c l a s s ( w r a p p 0012540 e r ) o f a n o b j e c t 0012560 . T h i s o p c o d e 0012600 r e t u r n s t h e w r a p 0012620 p e r o f a n y o b j e c 0012640 t . T h e t y p e b i t 0012660 s a r e u s e d t o i n 0012700 d e x i n t o t h e t y p 0012720 e t a b l e a n d t h e 0012740 i n d e x e d v a l u e i s 0012760 r e t u r n e d . I f t 0013000 h e v a l u e i s 1 , t 0013020 h e n t h e w r a p p e r 0013040 s h o u l d b e f o u n d 0013060 a t a n o f f s e t o f 0013100 o n e f r o m t h e l o c 0013120 a t i o n p o i n t e d t o 0013140 b y T o s . I f t h e 0013160 t y p e t a b l e v a l u e 0013200 i s N I i l , t h e o p 0013220 c o d e w i l l t r a p . 0013240 T h e c o d e s t e p s 0013260 w o u l d b e s o m e t h i 0013300 n g l i k e : \r \r \r \t - T e 0013320 m p _ R e a d M e m o r y [ 0013340 T y p e T a b l e + T o s 0013360 t y p e b i t s ] \r \r \t - T 0013400 e m p = 0 \r \r \t - Y e s : 0013420 T o s _ R e a d M e m o r 0013440 y [ T o s + 1 ] \r \r \t - N 0013460 o : T e m p 1 = N i l \r 0013500 \r \t \t - Y e s : T r a p \r \r 0013520 \t \t - N o : T o s _ T e 0013540 m p 1 \r \r \r \0 \0 \0 \0 \0 004 \0 002 \0 023 0013560 \0 005 G A C H A \0 \n \0 \0 \0 \0 \0 \0 001 0013600 \0 \0 ? \0 1 ( D E F A U L T F O N 0013620 T 1 ( G A C H A 1 0 ) ( 0013640 G A C H A 8 ) ( T E R M I N 0013660 A L 8 ) ) \0 \n \0 \0 \0 \0 \0 \0 \0 \0 0013700 \0 \0 002 236 \0 \0 \0 \0 002 \0 \0 001 I \0 \0 \0 0013720 \0 001 \0 \0 004 366 \0 \0 \0 \0 002 \0 \0 \0 337 \0 0013740 \0 \0 \0 001 \0 \0 002 347 \0 \0 \0 \0 002 \0 \0 \0 0013760 221 \0 \0 \0 \0 001 \0 \0 006 320 \0 \0 \0 \0 002 \0 0014000 \0 001 017 \0 \0 \0 \0 001 \0 \0 002 S \0 \0 \0 \0 0014020 002 \0 \0 027 f \0 \t z 272 0014031