Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!THINK.COM!taylor From: taylor@THINK.COM Newsgroups: gnu.utils.bug Subject: ns32k displacement offsets in gas Message-ID: <8905050408.AA01499@odin.think.com> Date: 5 May 89 04:08:56 GMT Sender: daemon@tut.cis.ohio-state.edu Distribution: gnu Organization: GNUs Not Usenet Lines: 28 The displacement offset boundaries in ns32k.c are slightly wrong. In function convert_iif(), there's the `if' statement: if (-0x40000000<=expP.X_add_number && exprP.X_add_number<=0x3fffffff) { the limits should be -0x1f000000 and 0x1fffffff. That is, the `if' statement should be: if (-0x1f000000<=expP.X_add_number && exprP.X_add_number<=0x1fffffff) { And similarly in md_number_to_disp, in the `if' statement: if (val < -0x20000000 || vaxl >= 0x20000000) as_warn("Double word displacement out of range"); the lower limit should be -0x1f000000 not -0x20000000. Note: The reason the lower limit is -0x1f000000 and not -0x20000000 is that, according to Nat'l Semi's data sheet on the ns32532, ``the pattern 11100000 for the most significant byte of the displacement is reserved by National for future enhancements''. David -- David Taylor taylor@think.com, ...!think!taylor