maxxpr==100. .insrt timer skipit: pop p,a jrst skptst movctl: move a,d jrst insret ; Zero xper ,"SETZ A,",|setz a,| xper ,"MOVEI A,0",|movei a,0| xper ,"TDC A,A",|tdc a,a| xper ,"TDZ A,A",|tdz a,a| xper ,"TLC A,",|tlc a,| ; Add one xper ,"MOVEI A,1(A)",|movei a,1(a)| xper ,"ADDI A,1",|addi a,1| xper ,"AOJ A,",|aoj a,| xper ,"AOS A",|aos a| ; Subtract one xper ,"SUBI A,1",|subi A,1| xper ,"SOJ A,",|soj a,| xper ,"SOS A",|sos a| xper ,"MOVEI A,-1(A)",|movei a,-1(a)| ; Random moves xper ,"MOVE A,B",|move a,b| xper ,"MOVE A,70",|move a,70| xper ,"HRRI A,0",|hrri a,| xper ,"HRRZI A,0",|hrrzi a,| xper ,"HRRZ A,A",|hrrz a,a| xper ,"HRRZ A,70",|hrrz a,70| xper ,"HRR A,70",|hrr a,70| xper ,"HLL A,70",|hll a,70| xper ,"HRL A,70",|hrl a,70| xper ,"MOVEI A,(B)",|movei a,(b)| xper ,"MOVSI A,(B)",|movsi a,(b)| xper ,"MOVNS A",|movns a| xper ,"MOVNI A,(A)",|movni a,(a)| xper ,"MOVN A,A",|movn a,a| xper ,"HRRM A,70",|hrrm a,70| xper ,"MOVEM A,70",|movem a,70| ; Simulation of DFKFB xper xcmov,"Control for AC setup",|jrst movctl| xper xcpshj,"Control for PUSHJ",|jrst pshctl| xper xcidpb,"Control for IDPB",|jrst dpbctl| xper xcidx,"Control for indexing/indirect (movei)",|movei| xper ,"Indexing (movei (a))",|movei (a)|,xcidx xper ,"Indirect (movei @a)",|movei @a|,xcidx xper ,"Indirect (movei @70)",|movei @70|,xcidx xper ,"Indexing & indirect (movei @([70]))",|movei @(a)|,xcidx,[movei a,70 ? popj p,] xper ,"MOVEI ",|movei| xper ,"MOVE A,A",|move a,a| xper ,"MOVE A,70",|move a,70| xper ,"HRR A,70",|hrr a,70| xper ,"SETOM 0",|setom| xper xcjrst,"JRST",|jrst insret| xper ,"JSR ",|jsr [0 ? jrst insret]|,xcjrst xper ,"PUSHJ",|jrst pshtst|,xcpshj pshctl: movei a,junk jrst insret pshtst: movei a,junk pushj a,.+1 jrst insret xper ,"ADD A,70",|add a,70| ;xper ,"DIV something",|div a,c| xper ,"FSC A,0 (1)",|jrst fs0tst|,xcmov,[movei d,1 ? popj p,] fs0tst: move a,d ? fsc a, ? jrst insret xper ,"FSC A,233 (1)",|jrst fsctst|,xcmov,[movei d,1 ? popj p,] fsctst: move a,d ? fsc a,233 ? jrst insret xper ,"FAD (1 right shift)",|jrst tfad1|,xcmov,[movsi d,400 ? ret] tfad1: move a,d ? fad a,tfad1v ? jrst insret tfad1v: 400,,0 xper ,"FAD (8 shift right-3 left)",|jrst tfad2|,xcmov,[movsi d,200400 ? ret] tfad2: move a,d ? fad a,tfad2v ? jrst insret tfad2v: 210040,,0 xper ,"MUL (18 add/sub - 36 shifts)",|mul a,tmulv|,0,[movei a,1 ? ret] tmulv: 525252 xper ,"FMP (14 add/sub - 27 shifts)",|jrst tfmp|,xcmov,[movsi d,201400 ? ret] tfmp: move a,d ? fmp a,tfmpv ? jrst insret tfmpv: 200525,,240000 xper ,"FIX A,B (1.0)",|fix a,b|,0,[ move a,cpu.xf trne a,%cpuka+%cpu6 ; KA doesn't have jrst skipit movsi b,(1.0) popj p,] xper ,"FLTR A,B (1)",|fltr a,b|,0,[ move a,cpu.xf trne a,%cpuka+%cpu6 ; KA doesn't have jrst skipit movei b,1 popj p,] xper ,"DMOVE A,70",|dmove a,70|,0,[move a,cpu.xf trnn a,%cpuka+%cpu6 ; Skip test if a KA popj p, ? pop p,a ? jrst skptst] ; ... xper ,"MOVEM A,70",|movem a,70| xper xclsh,"LSH A, 1",|lsh a,1| xper ,"Shifting, per bit",|lsh a,2|,xclsh xper ,"LSH A, 35.",|lsh a,35.| xper ,"LSH A,-35.",|lsh a,-35.| xper ,"LSHC A, 71.",|lshc a,71.| xper ,"LSHC A,-71.",|lshc a,-71.| xper ,"IBP 70",|ibp 70|,,[move a,[440700,,] ? movem a,70 ? popj p,] xper ,"ILDB 70",|ildb 70|,,[movei a,440700 ? hrlzm a,70 ? popj p,] xper ,"IDPB 70",|jrst dpbtst|,xcidpb,[movei a, 440700 ? hrlzm a,70 ? popj p,] dpbctl: movei a,junk hrrm a,70 jrst insret dpbtst: movei a,junk hrrm a,70 idpb 70 jrst insret xper ,"JFCL",|jfcl| xper ,"CAI",|cai| xper ,"JUMP",|jump| xper ,"CAM",|cam| xper ,"EQV A,A",|eqv a,a| xper ,"EQV A,70",|eqv a,70| xper ,"SETOB 0,0",|setob| xper ,"AOS 70",|aos 70| xper ,"EXCH A,B",|exch a,b| xper ,"EXCH A,70",|exch a,70| xper ,"XCT 70",|xct 70|,xcjrst,[move a,[jrst insret] ? movem a,70 ? popj p,] ; ... end go comment | This output is from DM:SYS1;TS SPEEDY, running on ML. Extra info added in brackets from perusal of binary. speedy^K! PDP-10 INSTRUCTION TIMING TEST 60 HZ. 1 - MOVEI TAKES 2.24 USEC. 2 - INDEXING TAKES 296 NSEC. 3 - INDEXING AND INDIRECT TAKES 958 NSEC. 4 - JSR TAKES 4.27 USEC. 5 - JRST TAKES 2.24 USEC. 6 - MOVE FROM AC TAKES 2.73 USEC. 7 - MOVE FROM MEMORY TAKES 3.86 USEC. 8 - HRR FROM MEMORY TAKES 4.02 USEC. 9 - ADD FROM MEMORY TAKES 4.21 USEC. 10 - SETOM 0 TAKES 2.75 USEC. 11 - PUSHJ TAKES 4.98 USEC. 12 - SHIFTING TAKES 153 NSEC. 13 - FSC AN INTEGER ONE TAKES 7.32 USEC. [movei 1 ? fsc] 14 - FAD (1 RIGHT SHIFT) TAKES 6.27 USEC. [movsi 400 ? fad [400,,0]] 15 - FAD (8 SHIFT RIGHT-3 LEFT) TAKES 8.21 USEC. [movsi 200400 ? fad [210040,,0]] 16 - MUL (18 ADD/SUB - 36 SHIFTS) TAKES 12.44 USEC. [mul [525252]] 17 - FMP (14 ADD/SUB - 27 SHIFTS) TAKES 12.23 USEC. [movsi 201400 ? fmp [200525,,240000]] 18 - RELOCATION TAKES 0 NSEC. 19 - REPEATED I/O INSTRUCTIONS TAKE 77.01 USEC. 20 - SHIFT AND ADD TAKES 281 NSEC. [???? mul [1252,,525252]] TEST COMPLETED :KILL | Comment | There is also a KL-10 timing test, DFKFB. 14 - MUL (9 ADD/SUB - 18 shifts) takes 2.44 usec. 15 - DIV takes 5.50 usec. |