bug in VAX 4bsd assembler
utzoo!utcsrgv!mendell
utzoo!utcsrgv!mendell
Tue Mar 22 16:16:29 AEST 1983
as produces wrong code for instructions with an immeadiate
float literal of 0d0.0. For example:
movd $0d0.0,r0
is assembled as:
movd $0d0.5,r0
The problem is that as thinks that $0d0.0 is a short literal double, but it
isn't (See your nearest vax manual)
The fix is one line in as.h:
*** /usr/src/cmd/as/as.h Wed Nov 5 23:13:32 1980
--- as.h Tue Mar 22 13:05:55 1983
***************
*** 327,332
*/
#define slitflt(xp) \
( (xp->doub_LSW == 0) \
&& ( (xp->doub_MSW & LITFLTMASK) \
== xp->doub_MSW) )
/*
--- 327,333 -----
*/
#define slitflt(xp) \
( (xp->doub_LSW == 0) \
+ && (xp->doub_MSW != 0) \
&& ( (xp->doub_MSW & LITFLTMASK) \
== xp->doub_MSW) )
/*
Mark Mendell
..!decvax!utzoo!utcsrgv!mendell
More information about the Comp.bugs.4bsd.ucb-fixes
mailing list