[comp.sys.amiga.programmer] SAS C 5.10 BUG

dave@csis.dit.csiro.au (David Campbell) (01/18/91)

/* SAS 5.10 BUG */

void hey_wake_up()
{
	int func1(),func2(),func3(),func4(),func5();
	do_job(func1,func2,func3,func4,func5);
}

/*

**** Take a look at this, its pushing func1 5 times, not pushing
**** the others at all!!!


Lattice AMIGA 68000-68020 OBJ Module Disassembler V5.00
Copyright ) 1988 Lattice Inc.  All Rights Reserved.


Amiga Object File Loader V1.00
68000 Instruction Set

EXTERNAL DEFINITIONS

_hey_wake_up 0000-00

SECTION 00 "junk.c" 00000024 BYTES
       | 0000  BF EC  00 00-XX.2              CMPA.L    __base(A4),A7
       | 0004  65 00  00 00-XX.1              BCS.W     __xcovf
       | 0008  41 F9  00 00 00 00-XX          LEA       _func1,A0
       | 000E  2F 08                          MOVE.L    A0,-(A7) ;ouch!!!
       | 0010  2F 08                          MOVE.L    A0,-(A7)
       | 0012  2F 08                          MOVE.L    A0,-(A7)
       | 0014  2F 08                          MOVE.L    A0,-(A7)
       | 0016  2F 08                          MOVE.L    A0,-(A7)
       | 0018  4E BA  00 00-XX.1              JSR       _do_job(PC)
       | 001C  4F EF 00 14                    LEA       0014(A7),A7
       | 0020  4E 75                          RTS


	Dave Campbell
	dave@csis.dit.csiro.au

*/

lrg7030@uxa.cso.uiuc.edu (Loren J. Rittle) (01/19/91)

I tried your example, the one that shows an SAS/C v5.10 bug.
Well, you must have a different version of 5.10 than me, because
lc <every set of options I tried> test.c
omd test.o
gave the following output:

Amiga Object File Loader V1.00
68000 Instruction Set         
                              
EXTERNAL DEFINITIONS          
                              
_hey_wake_up 0000-00

SECTION 00 "test.c" 00000030 BYTES
       | 0000  BFEC  0000-XX.2                CMPA.L    __base(A4),A7
       | 0004  6500  0000-XX.1                BCS.W     __xcovf
       | 0008  4879  0000 0000-XX             PEA       _func5
       | 000E  4879  0000 0000-XX             PEA       _func4
       | 0014  4879  0000 0000-XX             PEA       _func3
       | 001A  4879  0000 0000-XX             PEA       _func2
       | 0020  4879  0000 0000-XX             PEA       _func1
       | 0026  4EBA  0000-XX.1                JSR       _do_job(PC)
       | 002A  4FEF 0014                      LEA       0014(A7),A7
       | 002E  4E75                           RTS

Also, my header said:
Lattice AMIGA 68000-68020 OBJ Module Disassembler V5.04.039 
Copyright ) 1988, 1989 Lattice Inc.  All Rights Reserved.
Yours said:
Lattice AMIGA 68000-68020 OBJ Module Disassembler V5.00
Copyright ) 1988 Lattice Inc.  All Rights Reserved.
And the output format was slightly different. I think
you have an old version of something! (OMD at least)

Loren J. Rittle

--
``In short, this is the absolute coolest computer device ever invented!''
                   -Tom Denbo speaking about The VideoToaster by NewTek
``your pathetic architectures won't support it'' - Kent Paul Dolan
``Think about NewTek's VideoToaster!  Now think about the Amiga!''
Loren J. Rittle lrg7030@uxa.cso.uiuc.edu