$ od -c -N 50000 [eris]<LispCore>CML>DOC>ARRAY-MICROCODE.TEDIT!3 0000000 \r A s c h e m e f o r m i 0000020 c r o c o d e d a r r a y s 0000040 b a s e d o n C M L A R R A 0000060 Y . C o m m e n t s i n v 0000100 i t e d . T h e h o p e 0000120 i s t h a t w e c a n c 0000140 o n v e r t m o s t o f t 0000160 h e s y s t e m t o u s e 0000200 t h i s a t s o m e p o 0000220 i n t . \r \r T h i s i s a 0000240 m e l d i n g o f t w o m 0000260 e s s a g e s a n d s o m e 0000300 c u r r e n t i d e a s . 0000320 I f t h e r e a r e i n 0000340 c o n s i s t e n c i e s i n 0000360 t h e t e x t p l e a s e 0000400 l e t m e k n o w . \r \r E 0000420 d i t e d : 2 5 M a r c h 0000440 1 9 8 6 b y p e d e r s e n 0000460 . p a . \r E d i t e d : 2 6 0000500 M a r c h 1 9 8 6 b y p e 0000520 d e r s e n . p a . \r - - - - \r 0000540 \r A n y a r r a y c o n s i 0000560 s t s o f a " r a n k v 0000600 e c t o r " p o i n t e r , 0000620 a n d a s t o r a g e b a 0000640 s e p o i n t e r . \r \r A r r 0000660 a y : \r \t - - 3 2 b i t s 0000700 - - \r \t r a n k v e c t o r \r 0000720 \t s t o r a g e b a s e \r \t . . 0000740 . \r \r T h e r e m a y b e 0000760 a d d i t i o n a l i n f o r 0001000 m a t i o n a f t e r t h e 0001020 b a s e b u t i t i s 0001040 o n l y o f i n t e r e s t 0001060 t o l i s p a r r a y c 0001100 o d e . T h i s o t h e r 0001120 i n f o r m a t i o n w o u 0001140 l d b e u s e d t o s e 0001160 t u p \r \r T h e r a n k v 0001200 e c t o r i s a v a r i a 0001220 b l e l e n g t h d a t a 0001240 s t r u c t u r e w h i c h 0001260 p r e s e n t s a v i e w 0001300 o f t h e a r r a y ' s s 0001320 t o r a g e . I t c o n t 0001340 a i n s a e l e m e n t t y 0001360 p e d e s c r i p t e r , t 0001400 h e r a n k o f t h e a 0001420 r r a y , a n d t h e n t 0001440 r i p l e s , o n e f o r 0001460 e a c h d i m e n s i o n o 0001500 f t h e a r r a y , d e s 0001520 c r i b i n g t h e e x t e 0001540 n t o f e a c h d i m e n 0001560 s i o n . \r \r R a n k v e c t 0001600 o r : \r \t w o r d ( 1 6 b i 0001620 t s ) c o n t a i n i n g e 0001640 l e m e n t - d e s c r i p t o 0001660 r \r \t w o r d c o n t a i n i 0001700 n g t h e r a n k ( # o 0001720 f i n d i c e s o r d i m 0001740 e n s i o n s ) \r \t ( F r o m 0001760 h e r e o n e n t r i e s 0002000 a r e d o u b l e w o r d s 0002020 o r 3 2 b i t s ) \r \t f i 0002040 r s t i n d e x o f f s e t 0002060 \r \t f i r s t i n d e x m a 0002100 x ( o r f i l l p o i n t 0002120 e r ) \r \t f i r s t i n d e x 0002140 b l o c k w i d t h ( s i 0002160 z e o f s t o r a g e i n 0002200 t h i s d i m e n s i o n ) 0002220 \r \t s e c o n d i n d e x o 0002240 f f s e t \r \t . . . \r \r [ O n l 0002260 y 1 d i m e n s i o n a l 0002300 a r r a y s c a n h a v e 0002320 " r e a l " f i l l p o i n 0002340 t e r s . ] \r \r \r T h e e l e 0002360 m e n t - d e s c r i p t o r 0002400 f i e l d c o n t a i n s a 0002420 n 8 b i t w i d e f i e 0002440 l d i n t h e l o w b y 0002460 t e . T h e l o w e r 4 0002500 b i t s i n d i c a t e e 0002520 l e m e n t - s i z e , t h e 0002540 u p p e r 4 i n d i c a t 0002560 e e l e m e n t - k i n d : 0002600 s i g n , u n s i g n e d , 0002620 f l o a t o r p o i n t e r 0002640 . \r \r C u r r e n t l y a l l 0002660 o c a t e d t a g s a r e : 0002700 \r \r e l e m e n t - s i z e f 0002720 i e l d ( 4 b i t s ) : \r 0 0002740 \t b i t \r 1 \t 2 b i t \r 2 \t 4 0002760 b i t \r 3 \t 8 b i t \r 4 \t 1 0003000 6 b i t \r 5 \t 2 4 b i t \r 6 0003020 \t 3 2 b i t \r 7 \t 6 4 b i t 0003040 \r \r e l e m e n t - k i n d f 0003060 i e l d ( 4 b i t s ) : \r 0 0003100 \t u n s i g n e d \r 1 \t s i g n 0003120 e d \r 2 \t p o i n t e r \r 3 \t f 0003140 l o a t \r 4 \t c h a r a c t e r 0003160 \r \r N o t a l l c o m b i n 0003200 a t i o n s a r e v a l i d 0003220 , m o s t a r e n o t m 0003240 i c r o c o d e d . \r \r T h e 0003260 c o m p i l e r w i l l o 0003300 p e n u p t w o a r r a y 0003320 a c c e s s c a s e s i n 0003340 t o c a l l s t o m i c r 0003360 o c o d e : a r r a y s o f 0003400 r a n k 1 a n d r a n k 0003420 2 . T h e s e w i l l 0003440 b e c o n v e r t e d i n t 0003460 o a c a l l t o t h e 0003500 A R R A Y I N D E X 1 o r A 0003520 R R A Y I N D E X 2 o p c o d 0003540 e , f o l l o w e d b y a 0003560 c a l l t o A R R A Y R E 0003600 F o r A R R A Y S E T F : \r 0003620 \r \t ( A R E F F O O 1 2 ) 0003640 \r \r b e c o m e s : \r \r \t p u s 0003660 h F O O \r \t p u s h x \r \t p 0003700 u s h y \r \t A R R A Y I N D E 0003720 X 2 \r \t \t ; l e a v e s o f 0003740 f s e t o n s t a c k i n 0003760 e l e m e n t u n i t s \r \t 0004000 A R R A Y R E F \r \r S i m i l a 0004020 r l y f o r A R R A Y I N D 0004040 E X 1 . \r \r A R R A Y I N D E X 0004060 2 c o m p u t e s t h e ( 0004100 u n b o x e d ! ) q u a n t i 0004120 t y \r x + x o f f 0004140 s e t + x w i d t h * ( y + 0004160 y o f f s e t ) , c h e c k i 0004200 n g i f \r \t x w a s g r e 0004220 a t e r t h a n x l i m i 0004240 t o r y g r e a t e r t 0004260 h a n y l i m i t . \r \t ( a 0004300 n d t h a t x + x o f f s e 0004320 t > = 0 a n d y + y o f 0004340 f s e t > = 0 ) . \r \t I t 0004360 l e a v e s F O O a t s t 0004400 a c k - 1 a n d t h e ( 0004420 u n b o x e d ) b a s e o f 0004440 f s e t \r \t a t t o p o f 0004460 s t a c k . \r \r A R R A Y I N D 0004500 E X 1 w o u l d c o m p u t 0004520 e t h e s i m i l a r v a 0004540 l u e \r \t x + x o f f s e t , 0004560 a f t e r c h e c k i n g i 0004600 f x < x l i m i t . \r \t T h e 0004620 s a m e b e h a v i o r . \r 0004640 \r W e w o u l d h a v e a 0004660 c o u p l e o f o p c o d 0004700 e s f o r d e a l i n g w 0004720 i t h a r r a y e l e m e n 0004740 t s : \r \r A R R A Y R E F ( t 0004760 y p e d a r r a y , u n b o x 0005000 e d - i n d e x ) \r \t d i s p a 0005020 t c h o n a r r a y ' s e 0005040 l e m e n t t y p e , a n d 0005060 f e t c h r e l a t i v e 0005100 e n t r y \r A R R A Y S E T F ( 0005120 t y p e d a r r a y , u n b o 0005140 x e d - i n d e x , v a l u e ) 0005160 \r \t d i s p a t c h o n a r 0005200 r a y ' s e l e m e n t t y 0005220 p e , a n d s t o r e r e 0005240 l a t i v e e n t r y \r \r U B 0005260 A R E F ( a r r a y , u n b 0005300 o x e d - i n d e x ) \r \t i f 0005320 a r r a y ' s e l e m e n t 0005340 t y p e i s 3 2 - b i t f 0005360 l o a t i n g , p e r f o r m 0005400 \r \t A R R A Y R E F a s i f 0005420 i t w e r e 3 2 - b i t 0005440 u n b o x e d . \r U B A S E T ( 0005460 a r r a y , u n b o x e d - i 0005500 n d e x , v a l u e ) \r \t s i 0005520 m i l a r . \r \r A R R A Y R E F 0005540 i s i t s o w n o p c o 0005560 d e . A l l t h e o t h e 0005600 r s a r e s u b - c a s e s 0005620 o f M I S C o p c o d e s 0005640 , e . g . , d o n ' t g e 0005660 t t h e i r o w n m i c r 0005700 o c o d e . \r \r I N C F a n d 0005720 D E C F a n d P U S H w 0005740 i l l c o m p i l e a n d 0005760 m a c r o e x p a n d i n s 0006000 u c h a w a y t h a t t 0006020 h e a r r a y i n d e x o 0006040 p e r a t i o n i s c o m p 0006060 u t e d o n l y o n c e . \r 0006100 \r R o n a n d L a r r y \r 023 0006120 E n d o f m e s s a g e 023 \0 0006140 \0 \0 \0 \0 004 \0 002 \0 030 \0 \n T I M E S 0006160 R O M A N \0 \n \0 \0 \0 \0 \0 \0 001 \0 \0 0006200 030 \0 \n T I M E S R O M A N \0 \f \0 0006220 \0 \0 \0 \0 \0 \0 \0 \0 \0 \f O \0 \0 \0 \0 002 0006240 \0 \0 \0 020 \0 \0 \0 \0 001 \0 \0 \f _ \0 002 z 0006260 272 0006261