[net.sources.mac] Assembly-language Sieve source / object

jer@peora.UUCP (J. Eric Roskos) (03/02/85)

Following is my assembly-language SIEVE benchmark.  See net.micro.mac
for a commentary/description.

;Byte Sieve Benchmark - page 284, Jan '83 Issue
;Hand-compiled from the Pascal version (Listing 1) by J. Eric Roskos

	  PEA   '10 Iterations.'
	  _DrawString

	  move #9,d4            ; initialize D4 = iter-1
	  move #0,dumpno(a5)
itloop:
	  move #0,d3            ; count := 0
	  move.l flags(a5),a0   ; for i := 0 to size do
	  move #SIZE,d0
clrloop:
	  move.b #1,(a0)+       ; flags[i] := true
	  dbf   d0,clrloop      ; (next i)

	  move #0,d0            ; for i := 0 to size do
	  move.l flags(a5),a0   ; get base address for flags array into a0
mloop:
	  tst.b 0(a0,d0)        ; if flags[i] then begin
	  beq   noflg
	  move  d0,d1           ; prime := i + i + 3;
	  add   d0,d1
	  add   #3,d1
	  move  d0,d2           ; k := i + prime
	  add   d1,d2
zloop:
	  cmpi  #SIZE,d2        ; while k <= size do begin
	  bgt   zlend
	  move.b #0,0(a0,d2)    ; flags[k] := false
	  add   d1,d2           ; k := k + prime
	  bra   zloop
zlend:
	  add   #1,d3           ; count := count + 1
noflg:
	  add   #1,d0           ; (next i)
	  cmp   #SIZE,d0
	  ble   mloop

	  dbf   d4,itloop       ; (next iter)

	  bsr   prd3            ; print count in d3
	  pea   ' primes.'
	  _drawstring

	EXIT:
	  RTS

---------
(This file must be converted with BinHex 4.0)

:"A0TCACP!%&38%a+49)!N!N(!+0L!*!%!3#3!`8!N!-%!*!%2J#3maJ!N!-S!!!
#h!#3!`J!N!-J!!!r2!!"UI!!!!+`!*!$!8MRrrj"qJ!Q))iK6`!%)!eCJ#m!U'k
T%Q%!!"T"qJ!1,&!ZD!!%60prrdje!*!)U4*#Td+R5(S"kNKk!Hj3jcmm!!![22q
3"&$R3UHT%bYIrB![,If!U(0#TkMB+erp5+K32c`!"6mm!"QSNcmm!!'SKcmm!!L
SL5!m!!!IrU%H+dMp0%T!C`!!#NKk!DZSK%je5(S"a+L%2c`!"6mm!#fSNdKk!I+
SK$Jm!!NlI!!!r6Jf2!!!)'hp0$!m(ri3r!!"8FMrqM!m!!!JEIdd5M!!!'F!!#!
b!0*!9N%d!04"$%)IrQi!!!`4[!!!)!$83@$Z8N053!a!(rj[dP(-rl4K!!$%5(S
"++L%6R8-33!)CJ!!'$mm!!!r2!"!U)e%E`!!2c`!!+L86R8-33!0CJ!!#%kk!$C
1G3a"!!TQ!!!)6VS!&%je2`'SJdjeB3!!('%!!!41G8Kk!-Jr2!!!2ccrm5mYr8L
Sldje2c`!"6mm!2USNdje-$%b-c3e0MFi18&#3d4&4P0#%LS!!1KC!S%!N!-24rV
ri")c%!"K!2pZ%LS!!!+"!*!$$dIkrmS5-a!!B3$r@$)m!#"K!2p38NT4b[r'6R8
b!q"Ck&N#J3#3!`p(q[qL%M-3!'%!rc!b!q"C!S%!N!-24rVrM")c%!"K!2mD-J2
S@3+"!*!$$dIkrhB5-a!!B3$r"$)$!S%!N!-24rVrBK)c%!"K!2l`6R8!+J!&!6B
"q`96D@9fC3JJF(*TE@9c,L"1Eb"bEfpY)'pZ)'KPBA!JCQpb)'CXB@Gc)'&bFQ&
j,Me"Fh0PE@*XH5eXB@jRG@&RC5"#@94&)&0TCACP,#"LH5"&FQPM)&*[FfY[Fb!
SDQ9b3("PEh*K,P993e!T$M%`)%PdCA*KG'P[ER-Z!#!m!!!##Q%!$r"+3'B!!#K
$qJ%1-hcrp`!B)dJ!($0m!!N!'M0m!JJ!)#"*5N"Q!*!$!3#3!`8!N!-%!*!%2J#
3mJ%!N!-&!*!$"!#3"$i!N!NF!$i!!%024%8!!3!+!!$rrb!!N!J"rrmJ!!!F!*!
%rrKK!!$H#)!!$c0!!!4K!!%1)S"-h`F(6R9)jq$J3Hd!4L*)B3!"1M)m!!mJ'@%
!!24BL&(*rrB`+3!%B3!!L&5))"&K!!$H60m("dje51G!J#)))!J)J!!!)%"K!!"
5#!%!!'B!!!6JL%cI!3)#3!$r6R9Kf&+)6R9)jq!!*!Jb!!*"!2pK!!"Q5%!)!J!
!CJ!!$1&*!N!!rf!!!!B#32m!J%&)3'%!!(a-h`!(6R9K!#G`CJ!!#'%!!$4)3%K
!3N")3%je,`%b!'%!!#*)3$!")Kp)3'!!!%c"5@(5`8P1G@(-9)K1G@(`9)P1G@%
!*c*R!!!851H!J&4)B3!R*'B!!""-h`%"B3!!-'%!*U41G6i!60m"!8K!-!G1G@(
1@)K1G@%!!@4)3'%!*`T)3&5)B3!R!P@)6R9)jhri,`KK!2f@%$`!9f%!rHSJ(f%
!rIKK!2ibB3$q,NcI(rj1G8MRrhjK!2eb%$`!8Q%!rFCK!2i8)%"-hhlr6R9)jhr
i,`N[#'%!r9)32!"@B3$pTL!IB3$pY#!IB3$pVMYm%!!!MQ%!rH)lI!$)!)j-har
q6R8[!"!m!&"K!2ek)"p1G5m!1$X: