[net.lang.c] 68000 C compiler enquiry - esp. Tektronix info.

bob@varian.UUCP (Bob Palin) (05/30/84)

[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

bob@varian.UUCP (Bob Palin) (05/31/84)

[]
	I have discovered that my request of last night on 68000 C
	compilers was not accurate.  In fact the problem is with all
	static variables being put into ROM whether initialised or not.
	This happens because the compilers treat uninitialised statics
	as zero initialised.  My example still stands, however, as the
	desired habit of a compiler.  My apologies to anyone who replied
	before I could get this out.

	Bob Palin	zehntel!varian!bob  	(415) 945-2278
	Varian Instruments, 2400 Mitchell Drive, Walnut Creek, Ca 94598