[comp.os.minix] C68/ACK interworking

HBO043%DJUKFA11.BITNET@cunyvm.cuny.edu (Christoph van Wuellen) (06/06/90)

The question if c68 and ACK-compiled stuff can be intermixed reached me
and this is perhaps of general interest, so I post the answer.

1.) The calling conventions are the same
2.) The compiler scratch registers are the same: th
    (The MINIX version of) c68 uses d0-d1/a0-a2 as scratch registers

Conclusion: No problem to mix C68 and ACK-generated code in any way.

Of course, the objects are compatible since the C68 output is processed
by the ACK assembler etc.

C.v.W.

HBO043%DJUKFA11.BITNET@cunyvm.cuny.edu (Christoph van Wuellen) (06/08/90)

An additional statement must be made:
The floating-point format is different, AND c68 uses sizeof(float)==siz
==sizeof(double)==4, so the storage layout of structures etc. may be
affected.

The C68/ACK interworking is OK when no floating point stuff is around.

C.v.W.

archer%segin4.segin.fr@prime.com (Vincent Archer) (06/09/90)

Christoph van Wuellen <HBO043%DJUKFA11.BITNET@cunyvm.cuny.edu> writes:
> The floating-point format is different, AND c68 uses sizeof(float)==
> ==sizeof(double)==4, so the storage layout of structures etc. may be
> affected.
>
> The C68/ACK interworking is OK when no floating point stuff is around.
It doesn't matter, since the ACK compiler doesn't understand anything
about floating point anyway (on the ST). If you put 0.0 in a source, it
will echo "dummy floating constant". If you try to do an operation involving
floats, the library function (lib/atari/_ffp.s) does a call to exit(), without
any explanation. :-(

So do not speak of floating compatibility, Chris, there's nothing to be
compatible with. :-)


Btw: The crc list for 1.5.10 ST says that .s stuff is found in lib/atari.
     However, the LIBORDER picks its .o files from lib/M68000! Since this
     .s stuff is really motorola dependant, not machine-dependant, the
     LIBORDER approach is better. You'll have to correct the lib/Makefile
     however... That's for 2.0 :-)

Btw2: I tried to recompile Felix Croes ld(1) package (posted last December)
      but it fails miserably to understand anything about archives, does
      not generate correct symbol tables, and so on. I lack the time to fix
      it, is there a correct version for 1.5?

Btw3: I'm starved for a lint(1) C-Syntax checker for Minix. Is there one
      (I don't think so)? Would one be useful (yes, no more int malloc() :-)?
      Do I need to write one myself? (In other word, does somebody else intend
      to write or port one)

Btw4: There's no btw4 :-)


    Vincent


Vincent Archer                   | Email:archer%segin4.segin.fr@prime.com
"People that are good at finding excuses are never good at anything else"

croes@fwi.uva.nl (Felix A. Croes) (06/09/90)

In article <21525@nigel.udel.EDU> archer%segin4.segin.fr@prime.com (Vincent Archer) writes:
>Btw2: I tried to recompile Felix Croes ld(1) package (posted last December)
>      but it fails miserably to understand anything about archives, does
>      not generate correct symbol tables, and so on. I lack the time to fix
>      it, is there a correct version for 1.5?

The updated version, which unfortunately did not make it into the official 1.5
distribution, was posted in January.

--

Felix Croes    (croes@fwi.uva.nl)

HBO043%DJUKFA11.BITNET@cunyvm.cuny.edu (Christoph van Wuellen) (06/11/90)

Oh well, the ACK Compilers knows everything about floating point it
is supposed to, it is the code generator which cannot generate floating
point constants and it is the library which lacks the floating point
routines.
It is not that much to incorporate floating point into ACK, as several
postings show.
C.v.W.