68000 C compiler enquiry - esp. Tektronix info.
Bob Palin
bob at varian.UUCP
Wed May 30 11:00:19 AEST 1984
[bug biter]
I am currently looking for a C cross compiler for a 68000 to run
under 4.1bsd on a VAX 11/780. As you may guess there are a
number of these around and I have several, however, they all
have some problem or other. The major stumbling block is
getting the compilers to place the data classes in the data
segments I want them to. I am not doing anything strange ( as
far as I know ) for a mixed RAM/ROM system, I just want my
initialised variables to go in ROM and the uninitialised ones to
go in RAM.
This request is handled by only one compiler/ linker suite that
I currently know of, the Intermetrics compiler. They do it by
using A5 as a pointer to the beginning of static data and the
appropriate addressing mode to access any static variable.
Their package then allows you to place the ROM/RAM boundary
anywhere after this location, this is however a rather
restrictive method since the ROM/RAM boundary will change every
time a new variable is added. There are ways around that of
course but they require too many contortions in a large
multi-person project. I know Intermetrics are on the net and if
they have any further hints I'd be glad to hear from them.
The second compiler I have is one from BBN which is apparently
unsupported by them. This does not put initialised data in ROM
which is a problem.
The third compiler, which I do not have but have tested, is the
Tektronix LANDS C compiler. This performs exactly as the BBN
compiler with respect to data types.
Of the three by far the most attractive to me is the Tektronix,
due to it's excellent debugging features and interaction between
compiler/linker, Vax and emulator - full symbolic debugging
while running in real time in the emulator. However the ROM/RAM
problem and it's limited maximum number of defines (800) are
drawbacks as I have to port a bunch of C from a Z80 system. The
Z80 compiler was a locally modified version of the Vandata C
compiler. ( The modifications were made to overcome this
problem, so much for portability !! )
SO.. does anybody have any ideas ?
Here is an example of what I need:
/* desired placement */
unsigned butter; /* global public RAM symbol */
static unsigned bread; /* file public RAM symbol */
unsigned jam = 6; /* global public ROM symbol */
static unsigned honey = 3; /* file public ROM symbol */
func()
{
unsigned burrito; /* automatic ( stack RAM ) */
unsigned gaucamole = 2; /* initialised auto ( stack RAM ) */
static unsigned taco; /* static ( fixed RAM ) */
static unsigned enchilada = 5; /* static ( fixed ROM ) */
}
Thanks to anybody who can help !!
Bob Palin zehntel!varian!bob (415) 945-2278
Varian Instruments, 2400 Mitchell Drive, Walnut Creek, Ca 94598
More information about the Comp.lang.c
mailing list