🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.lang.misc
Article #1863

Re: Aggressive optimization

#1863
From: Cliff H. Wallach
Date: Tue, 30 Oct 1990 23:39
96 lines
2355 bytes
In article <TED.90Oct26124614@kythera.nmsu.edu> ted@nmsu.edu (Ted Dunning) writes:

  <text deleted>

-if you compile the following code on a sun3 with -O4,
-
-int a[100];
-
-foo()
-{
-    int i;
-    int sum;
-    int max;
-
-    sum = 0;
-    max = a[0];
-    for (i=0;i<100;i++) {
-	sum += a[i];
-	if (max < a[i]) max = a[i];
-    }
-    printf("%d %d\n", sum, max);
-}
-    
-you get the following code:
-
-	.text
-	.globl	_foo
-_foo:
-|#PROLOGUE# 0
-	link	a6,#-20
-	moveml	#8432,sp@
-|#PROLOGUE# 1
-	moveq	#0,d5
-	movl	_a,d4
-	moveq	#0,d6
-	movl	#_a,a5

	movl d4,a5  is more efficient


-L77003:
-	movl	a5@,d7
-	addl	d7,d5
-	cmpl	d7,d4
-	jge	L77005
-	movl	d7,d4
-L77005:
-	addql	#1,d6		<--- increment i
-	addqw	#4,a5		<--- increment a magic pointer
-	moveq	#100,d7
-	cmpl	d7,d6
-	jlt	L77003
-	movl	d4,sp@-
-	movl	d5,sp@-
-	pea	L25
-	jbsr	_printf
-|#PROLOGUE# 2
-	moveml	a6@(-20),#8432
-	unlk	a6
-|#PROLOGUE# 3
-	rts
---
-I don't think the stories are "apocryphal".  I did it :-)  .. jthomas@nmsu.edu



Compiler generated code is still far from hand assembled code.  While
I have much more experience with intel than 68k,  I can see several simple
improvements.  I have not assembled this code.

	<some random prologue>

	moveq	#0,d1			; sum =0
	lea	_a,a0			; a0 = &a[0]
	lea	100(a0),a1		; a1 = &a[100]

	move.l	(a0)+,d2		; max = a[0]

l100:
	cmp.l	a1,a0			; (a dbra may be faster)
	bge	l101

	move.l	(a0)+,d0		; load a[i++]
	add	d0,d1			; sum += a[i]
	cmp	d2,d0			; if (max < a[i])
	blt	l100
	move	d0,d2			;   max = a[i];
	bra	l100

l101:
	<jsr printf ...>
	<some random epilogue>


Can a compiler convert an array reference to a pointer reference?
Can it restructure code to minimize jumps?
Technical Details
Message-ID: <4950@avocado5.UUCP>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!uunet!motcid!wallach
References: <65697@lanl.gov> <PCG.90Oct16160125@teachc.cs.aber.ac.uk> <1458@exodus.Eng.Sun.COM> <13405:Oct1800:22:5690@kramden.acf.nyu.edu> <2301@wn1.sci.kun.nl> <TED.90Oct26124614@kythera.nmsu.edu>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!uunet!motcid!wallach
From: wallach@motcid.UUCP (Cliff H. Wallach)
Newsgroups: comp.lang.misc
Subject: Re: Aggressive optimization
Message-ID: <4950@avocado5.UUCP>
Date: 30 Oct 90 23:39:12 GMT
References: <65697@lanl.gov> <PCG.90Oct16160125@teachc.cs.aber.ac.uk> <1458@exodus.Eng.Sun.COM> <13405:Oct1800:22:5690@kramden.acf.nyu.edu> <2301@wn1.sci.kun.nl> <TED.90Oct26124614@kythera.nmsu.edu>
Organization: Motorola Inc. - Cellular Infrastructure Div., Arlington Heights, IL 60004
Lines: 96