This is the mail archive of the crossgcc@cygnus.com mailing list for the crossgcc project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
On Sat, Jan 30, 1999 at 01:29:12PM +0100, Richard Apeltauer wrote: > > GLOBL short_test, entry > > > > text > > entry: move.l short_test.w,d0 > > bra entry > > You are explicitly using the adressing mode "Absolute Short" by > adding the ".w" to your operand. In this mode the address range > goes from 0...$7FFF and $FFFF8000... $FFFFFFFF. > or in other words from -32768 ... 32767. > > That's no bug - it's a (Motorola) addressing feature! I know, and the code I have to maintain heavily depends on that. However, as soon as a variable which I address using .w is placed above $7fff, the produced code is not correct - it is *not* possible to access eg. $8100 using a short access, so I would like to get a warning / error so that I can change this, instead of having to track down why my code does not work anymore in some obscure way (there are hardware registers at $FFFF8xxx-$FFFFFFFF, but no RAM). > As said - no linker Problem - use absolute addressing without the > .w suffix for an access above $7FFF. I can't always avoid that - inserting extra buffers somewhere else may move those variables that are addressed short to a too high address, so that short addressing is not possible - in that case,I consider this a bug, since the linker produces code that is not correct anymore - the code accesses $FFFF8100 instead of my variable, which is at $00008100. cu Michael -- Michael Schwingen, Ahornstrasse 36, 52074 Aachen _______________________________________________ New CrossGCC FAQ: http://www.objsw.com/CrossGCC _______________________________________________ To remove yourself from the crossgcc list, send mail to crossgcc-request@cygnus.com with the text 'unsubscribe' (without the quotes) in the body of the message.