Subject: Re: gcc assembler issues
To: Bob Lantz <port-pmax@netbsd.org>
From: Collin Baillie <sanac@optushome.com.au>
List: port-pmax
Date: 07/01/2002 21:35:34
> If I'm not mistaken, the mips jump range is 256 MB. Your function is
> larger than 256 MB??? How much memory do you have in your pmax, anyway?
> ;-)

I only have 80MB. But I've got more coming to bring it up to 120 :) If I
could find enough of the 32MB boards, I'd like to take it to 480. That would
rock!

I have 256MB of swap :)

Umm I haven't written this code :) It's actually the 'LDMud' driver package
by Lars Düning. It's his updated version of the original LPMud driver.

The file in question here is interpret.c, which is some 20,000 lines long. I
have no idea where I would even begin changing this code. Nor do I really
know sufficient about MIPS assembly to start playing with the code. :( (Now
I wish I those Thursday afternoon lectures which I mostly failed to learn
anything from, due to immense back pain at the time, had stuck in my head!)

I was kind of hoping that I'd get a "Yeah, just move the labelled code so
it's above the code calling it and it should assemble ok" answer. :( When I
did move it, it seemd to be ok. Does this sound like it might be something
that could work? I mean, all these things are appearing in the .s file,
calling a jump to $L3655 and $L3655 is "defined" 100,000 lines below the
call.

Could it simply be that the assembler is thinking "But, I've never heard of
$L3655, how can you jump there? Go away and don't come back until you know
what you're talking aout!" (and dramatically snubbing the poor jump call,
giving it emotinal issues that even the best shrink would have difficulties
combatting)??

I wish I hadn't deleted my original .s file. It had all the code with the
first $Lxxx that was defined below the calls. I moved it up, and the
original errors were replaced by a bunch of different errors and upon
checking, the same case was to be seen. Labelled code appearing after a call
to said code. (Hence I thought it may be just that the assembler hadn't
heard of the code that should be in $L3655)

Maybe I'm showing my ignorance. Is $L3655 actually a registry/memory
address? Or is it (as I assume) a label? If it's just a label, I don't see
the connection with 256MB function limits etc, and it should merely be a
case of moving the labelled section so that it was above all calls to it,
and it should be fine.

Sorry if I sound like a complete moron.

Collin