Thread View: net.micro.atari
4 messages
4 total messages
Started by Eric Terrell
Wed, 04 Dec 1985 19:18
ERROR MESSAGES AND HIPPO-C
Author: Eric Terrell
Date: Wed, 04 Dec 1985 19:18
Date: Wed, 04 Dec 1985 19:18
10 lines
928 bytes
928 bytes
Does anyone know what to do about the "out of registers" error message in the HIPPO-C compiler? Also, is it possible to start up with the original disk and then change to a copy of the disk? With my single-drive system I am currently unable to use the compiler unless I use the original disk (yuk!) Thanks, Eric Terrell
Re: ERROR MESSAGES AND HIPPO-C
Author: oconnor
Date: Sat, 07 Dec 1985 03:58
Date: Sat, 07 Dec 1985 03:58
51 lines
2170 bytes
2170 bytes
The "out of registers" error is a result of poor compiler design. When generating subroutine calls the Hippo C compiler generates code that moves each argument into a data register before moving it onto the stack. Unfortunately it does not reuse the data register, so that when you have a call with more arguments than available registers the compiler will halt with the error "out of registers". Of the 8 data registers in the 68K only six can be used this way (a Hippo issue, not hardware). So a call to the VDI routine "v_ellpie()" which has 7 arguments will not compile (even though it is "supported" by Hippo). For example, if a program contained the following subroutine call: v_ellpie( handle, x, y, xradius, yradius, begang, endang ) ; where all the arguments are automatic variables contained in "main", the Hippo compiler generates the following assembly language: move.w -200(a6),d2 ext.l d2 move.w -198(a6),d3 ext.l d3 move.w -196(a6),d4 ext.l d4 move.w -194(a6),d5 ext.l d5 move.w -192(a6),d6 ext.l d6 move.w -190(a6),d7 whereupon it would halt with the "out of registers" error message. If there were enough registers, it would have continued with: ext.l d7 move.w -188(a6),d8 ext.l d8 move.l d2,-(sp) move.l d3,-(sp) move.l d4,-(sp) move.l d5,-(sp) move.l d6,-(sp) move.l d7,-(sp) move.l d8,-(sp) jsr _v_ellpie Because of this and their copy-protection I do not recommend this compiler to anyone. Mike O'Connor oconnor@umd5.arpa oconnor@umd5.UUCP
Re: ERROR MESSAGES AND HIPPO-C
Author: Tim Smith
Date: Tue, 10 Dec 1985 01:44
Date: Tue, 10 Dec 1985 01:44
24 lines
1908 bytes
1908 bytes
In article <8512061148.AA25696@ucbvax.berkeley.edu> terrell@OHIO-STATE.CSNET (Eric Terrell) writes: > >Also, is it possible to start up with the original disk and then change >to a copy of the disk? With my single-drive system I am currently >unable to use the compiler unless I use the original disk (yuk!) > I haven't seen Hippo-C on the ST, but if it is like the Mac version, then I believe only the linker checks the copy protection. So you will have to use the original disk every time you link. But you should be able to use the compiler from a copy of the original disk. This is still "yuk!", but at least it's not as bad a "yuk!". Also, call Hippo and see if they will sell you an unprotected disk. They were doing that for the Mac ( it was $25 for the unprotected disk ). Can the ST handle single sided disks? If it can, it would be interesting to see if a bit copier on the Mac, like Copy II Mac, could duplicate Atari disks on a Mac. Copy II can handle Hippo-C on the Mac, so maybe it would work for the ST? ( or do they have Copy II ST yet? ) -- Tim Smith sdcrdcf!ism780c!tim || ima!ism780!tim || ihnp4!cithep!tim ^ ^-- Not ISM780C, ignore the header!
Re: ERROR MESSAGES AND HIPPO-C
Author: Michael Jenkin
Date: Tue, 10 Dec 1985 16:03
Date: Tue, 10 Dec 1985 16:03
45 lines
2335 bytes
2335 bytes
In article <8512061148.AA25696@ucbvax.berkeley.edu> terrell@OHIO-STATE.CSNET (Eric Terrell) writes:
>Does anyone know what to do about the "out of registers" error message
>in the HIPPO-C compiler?
>
Yes. It will occur whenever a subroutine call requires too many
registers to hold all the intermediate results before putting them
on the stack. Someone's register reclemation algorithm could
use a little fine tuning. In particular, constructs like
a = foo(bar[i].left, bar[i].right, ... );
will get the error. However, it can be recoded as
t1 = bar[i].left;
t2 = bar[i].right;
...
a = foo(t1, t2, ... );
What a hack eh?
>Also, is it possible to start up with the original disk and then change
>to a copy of the disk? With my single-drive system I am currently
>unable to use the compiler unless I use the original disk (yuk!)
Oh yes.. There is documentation on how to do this supplied with the
compiler, but..
(a) initialize a new disk
(b) copy everything but hos.tos to this new disk. DO NOT
USE A SECTOR COPY.
(c) To run, boot on HOS.TOS on the supplied disk, eject it
and insert your copy. You should do a 'ls' to get the
new disk directory information set up properly.
NOTE: If you have a one drive system, go an borrow a 2 drive one for
step (b). There are 40 or so files that have to be copied, 3 disk
swaps per file = 120 disk swaps.
They suggest that you do not use a sector copy. I would assume that
their protection mechanism either (i) will cause the sector copy to
abort, or (ii) foul up the protection on their disk.
--
--
Michael Jenkin University of Toronto
USENET: {decvax,ihnp4,allegra}!utcsri!utai!jenkin
CSNET: jenkin@Toronto
BELL: 416-978-7321
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads