taylor@THINK.COM (05/05/89)
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