terrell@OHIO-STATE.CSNET (Eric Terrell) (12/04/85)
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
oconnor@umd5.UUCP (12/07/85)
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
tim@ISM780C.UUCP (Tim Smith) (12/10/85)
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!
jenkin@utai.UUCP (Michael Jenkin) (12/10/85)
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