Re: A92: Line 1111 Emulator and 32k limit?


[Prev][Next][Index][Thread]

Re: A92: Line 1111 Emulator and 32k limit?





>l was getting an error as a result of 32768 bytes being between a library
>call and the end of a program (is this right?).

Sounds like you've hit the nail on the head.  Relative jumps (i.e. jump 
back this far, jump forward that far) are limited in scope.  I didn't 
remember it being a 32K limit on the 68000, but this is definitely a 
possibility (I know MIPS machines are limited to 32K in either direction 
for indirect RAM references, so it's not unheard of).
You're coding in C, I believe, so you don't really have control over what 
jump instruction you're using (correct me if I'm wrong of course).  What 
I'd try is going into the assembler code (get GCC to just compile, not 
assemble or link) and changing it from a relative jump to an absolute jump, 
which takes an absolute 32-bit memory address and overcomes the limitations 
you're facing.
Unfortunately, I can't tell you off the top of my head what a 68K absolute 
jump mnemonic looks like.  *grin*
--Cliff Biffle

Optimist: This glass is half full.
Pessimist: This glass is half empty.
Cynic: They drank my water.  Figures.
Engineer: The glass should be -half- this size!
Psychoanalyst: The glass is affected by feelings of inadequacy.




References: