Text File

Aucbvax.6857 fa.info-vax utzoo!decvax!ucbvax!info-vax Thu Apr 22 09:30:57 1982 unix cc and float registers >From dove@mit-dspg@mit-mc Thu Apr 22 09:22:29 1982 The following results were obtained from mit-vax (berkeley 4.1 I think). The adb files were taken from a.out. The only compiler switch was -O.

---junkc.c--- main() { register double z=0, x=1; register int i=100000;

while(i-->0) { z += x; z += x; z += x; z += x; z += x; z += x; z += x; z += x; z += x; z += x; } } ---junkc.adb---- _main: _main: 800 3e: subl2 $10,sp 41: movd _environ+4,-8(fp) 49: movd _environ+c,-10(fp) 51: movl $186a0,r11 58: brb 8c 5a: addd2 -10(fp),-8(fp) 5f: addd2 -10(fp),-8(fp) 64: addd2 -10(fp),-8(fp) 69: addd2 -10(fp),-8(fp) 6e: addd2 -10(fp),-8(fp) 73: addd2 -10(fp),-8(fp) 78: addd2 -10(fp),-8(fp) 7d: addd2 -10(fp),-8(fp) 82: addd2 -10(fp),-8(fp) 87: addd2 -10(fp),-8(fp) 8c: movl r11,r0 8f: decl r11 91: tstl r0 93: bgtr 5a 95: ret 96: halt 97: halt _exit:

---junkp.p--- program junkp (input, output); var z, x :real; i : integer;

begin z := 0; x := 1; i := 100000;

while i>0 do begin z := z+x; z := z+x; z := z+x; z := z+x; z := z+x; z := z+x; z := z+x; z := z+x; z := z+x; z := z+x; i := i-1 end end.

---junkp.adb--- _program: _program: 0 66: subl2 $10,sp 69: moval _UNWIND,(fp) 70: moval __disply+8,-4(fp) 78: movq __disply+8,-c(fp) 80: movq ap,__disply+8 87: clrq _z 8d: cvtld $1,_x 94: movl $186a0,_i 9f: brb _program+b2 a1: addd2 _x,_z ac: addd2 _x,_z b7: addd2 _x,_z c2: addd2 _x,_z cd: addd2 _x,_z d8: addd2 _x,_z e3: addd2 _x,_z ee: addd2 _x,_z f9: addd2 _x,_z _program+a0: addd2 _x,_z _program+ab: subl2 $1,_i _program+b2: tstl _i _program+b8: bgtr a1 _program+ba: movq -c(fp),__disply+8 _program+c2: ret _program+c3:

As you can see, registers don't get used for floating point. Here is an equivalent program with ints instead of doubles, and it does the right thing: ---junkci.c--- main() { register int z=0, x=1; register int i;

for(i=0; i<100000; 51: 43: RET 5A: 3E: UNDERSTAND 60: +="x;" 45: C I++) 4E: Z 54: INCL R9,$186A0 5D: { } 63: 6C: FLOATS!) (WHEN MOVL 48: 65: 57: R9 R10,R11 6E: 45 6F: </PRE R11 $1,R10 BLSS ---JUNKCI.ADB--- _EXIT: CMPL CLRL WILL 40: COMMENTS? ADDL2 E00 HALT 4B: _MAIN:> <HR> This Usenet Oldnews Archive article may be copied and distributed freely, provided: <P> 1. There is no money collected for the text(s) of the articles. <BR> 2. The following notice remains appended to each copy: <P> <EM>The Usenet Oldnews Archive: Compilation Copyright&copy 1981, 1996 <BR> Bruce Jones, Henry Spencer, David Wiseman.</EM> <P> <HR> Goto <A HREF="82.04.22_ucbvax.6860_fa.info-vax.html">NEXT</A> article in FA.info-vax Newsgroup <BR>Return to <A HREF="FA.info-vax-index.html">FA.info-vax index</A> <BR>Return to the <A HREF="../index.html">Usenet Oldnews Archive index</A> </HTML>

----------------------------------------------------------------- gopher://quux.org/ conversion by John Goerzen <jgoerzen@complete.org> of http://communication.ucsd.edu/A-News/

This Usenet Oldnews Archive article may be copied and distributed freely, provided:

1. There is no money collected for the text(s) of the articles.

2. The following notice remains appended to each copy:

The Usenet Oldnews Archive: Compilation Copyright (C) 1981, 1996 Bruce Jones, Henry Spencer, David Wiseman.