home *** CD-ROM | disk | FTP | other *** search
/ NetNews Offline 2 / NetNews Offline Volume 2.iso / news / comp / sys / amiga / programmer / 7720 < prev    next >
Encoding:
Internet Message Format  |  1996-08-05  |  2.4 KB

  1. Path: newsfeed.tip.net!usenet
  2. From: mikael.berglund@amiga.pp.se (Mikael Berglund)
  3. Newsgroups: comp.sys.amiga.programmer
  4. Subject: Bug in SAS/C 6.56?
  5. Date: 21 Apr 1996 11:29:16 GMT
  6. Organization: Uniplus Internet Access
  7. Message-ID: <2092.6684T1168T988@amiga.pp.se>
  8. NNTP-Posting-Host: a711011.dial.tip.net
  9. X-Newsreader: THOR 2.22 (Amiga;TCP/IP) *UNREGISTERED*
  10.  
  11. I have a function in a shared library and the setup before the call is like
  12. this:
  13.  
  14.    183:     if ( ( _failure = Skip2Project( _sfh, filename, _tfh,
  15.               _fnbuffer, project, 0, NULL ) ) == FALSE )
  16.  0x7EF425E <ProcessProject+0xF6>:    MOVEM.L   A2-A3,-(A7)
  17.  0x7EF4262 <ProcessProject+0xFA>:    MOVE.L    A3,D0
  18.  0x7EF4264 <ProcessProject+0xFC>:    MOVEA.L   A2,A3
  19.  ; ***** WATCH THIS! (LINE BELOW) *****
  20.  0x7EF4266 <ProcessProject+0xFE>:    MOVEA.L   D6,A0
  21.  0x7EF4268 <ProcessProject+0x...:    MOVEA.L   A5,A1
  22.  0x7EF426A <ProcessProject+0x...:    MOVEA.L   D5,A2
  23.  0x7EF426C <ProcessProject+0x...:    MOVEQ     #00,D1
  24.  0x7EF426E <ProcessProject+0x...:    MOVEQ     #00,D2
  25.  0x7EF4270 <ProcessProject+0x...:    MOVEA.L   002C(A7),A6
  26.  0x7EF4274 <ProcessProject+0x...:    BSR.W     0x7EF4350 <Skip2Project>
  27.  
  28. As one can see, the register A0 is now properly set with the value of D6
  29. (which have been verified to hold the right value)
  30.  
  31.    224: BOOL _ asm Skip2Project(
  32.    225:   AREG_A0 BPTR    sfh,
  33.    226:   AREG_A1 STRPTR  sfn,
  34.    227:   AREG_A2 BPTR    tfh,
  35.    228:   AREG_A3 STRPTR  tfn,
  36.    229:   AREG_D0 XPMLP  *project,
  37.    230:   AREG_D1 ULONG   mode,
  38.    231:   AREG_D2 STRPTR  buffer )
  39.  0x7EF4350 <Skip2Project>:           SUBA.W    #0010,A7
  40.  0x7EF4354 <Skip2Project+0x4>:       MOVEM.L   D2-D7/A2-A3/A5-A6,-(A7)
  41.  ; **** WHY? (LINE BELOW) ****
  42.  0x7EF4358 <Skip2Project+0x8>:       EXG       D2,A0
  43.  0x7EF435A <Skip2Project+0xA>:       MOVE.L    D1,D5
  44.  0x7EF435C <Skip2Project+0xC>:       MOVE.L    A0,D6
  45.  0x7EF435E <Skip2Project+0xE>:       MOVE.L    D0,D7
  46.  0x7EF4360 <Skip2Project+0x10>:      MOVEA.L   A1,A5
  47.  0x7EF4362 <Skip2Project+0x12>:      MOVE.L    D2,002C(A7)
  48.  0x7EF4366 <Skip2Project+0x16>:      MOVE.L    A6,0030(A7)
  49.  
  50.  <USER CODE CONTINUES>
  51.  
  52. The value of A0 is now something else and naturally the code fails.
  53. Am i stretching the usage of registers so the compiler makes a mistake?
  54. One solution would be, which i will try, is to use a quickly set up
  55. structure to hold the necessary data which takes down the need for
  56. registers.
  57.  
  58. --
  59.   Regards TMB    PGP public key available
  60.  
  61.