petersen@uicsrd.csrd.uiuc.edu (05/04/88)
I was trying out the PD assembler A68k on fish disk 110, and ran into a bug in it. I tracked it down to expressions of the form "add.l 8(a3),d3" which were incorrectly be changed into "addq.l 8(a3),d3" and confusing the assembler. So........ Here is the fix for A68k: CodeGen.c around line 119 NEW----------------------------------------------------------------- if ((Src.Mode == Imm) /* Immediate instructions */ && ((Src.Hunk == ABSHUNK) && (Src.Defn <= LineCount) ------^ && ((EA611 IN AdrModeB) && (Dest.Mode == DReg) /* MOVE */ && (Src.Value >= -128) && (Src.Value <= 127)) || ((EA05y IN AdrModeB) /* ADD/SUB */ && (Src.Value > 0) && (Src.Value <= 8)))) { ------^ strcat (OpCode, "Q"); /* Make it ADDQ/SUBQ/MOVEQ */ Instructions (OpLoc); } ***NOTE the added parenthesis around the expression following the (Src.Mode == Imm). This optimization is ONLY to be performed if the instructions mode is "Imm". ------------ University of Illinois, Urbana-Champaign Center for Supercomputing Research and Development UUCP: {ihnp4,uunet,convex}!uiucuxc!uicsrd!petersen ARPANET: petersen%uicsrd@uxc.cso.uiuc.edu BITNET: petersen@uicsrd.csrd.uiuc.edu