% Section 2.2.3, Exo.8 % Author Chan Vinh VONG % Draft Version 2012 March 21st % Refined 2012 April 6th % % The structure for one Node is: % % >|<-----OCTA----->|< % +----------------+ % (BA+0) | LINK | % +----------------+ % (BA+8) | INFO | % +----------------+ % % One Node has thus a size of 16 bytes. % % Here's a graphical representation of one cycle of the loop as per % algorithm described in Ex7 p.546 in V1e3: % % Q P % [ ] [ ]->[ ] % % Q R P % [ ] [ ]->[ ] % % R P Q % [ ] [ ]->[ ] % % R Q P % [ ] [P]->[ ] % % R Q P % [ ]<-[R] [ ] % dLINK IS 8*0 dINFO IS 8*1 dNODE IS 8*2 % Calling Sequence: % $1 <- LOC(FIRST) % PUSHJ $0,REVERT % PREFIX REVERT: first IS $0 P IS $1 Q IS $2 R IS $3 % rA in the MIX version :REVERT LDO P,first 1*(u+v) % P XOR Q,Q,Q 1*(1v) % Q set at NULL BZ P,2F 1*(1v) % if the list is empty, jump 1H LDA R,Q n*(u+v) % R <- Q LDA Q,P n*(u+v) % Q <- P LDO P,Q,:dLINK n*(u+v) % P <- LINK(Q) STO R,Q,:dLINK n*(u+v) % LINK(Q) <- R PBNZ P,1B n*(1v) % Is P not NULL? 2H STO Q,first 1*(u+v) % FIRST <- Q POP 0,0 % Total (4n+2)u + (5n+4)v PREFIX :