taylor@THINK.COM (05/08/89)
When compiled for the ns32k, gas doesn't recognize an operand of `some_label(pc)' as meaning that it should access the label via pc-relative memory space addressing. Instead it ignores the `(pc)' and assembles the operand using absolute addressing. The fix is easy. In ns32k.c, in the function `addr_mode', add the lines: if (!strncmp(&str[strl-4],"(pc",3)) { mode=27; } right after the lines that read: if (!strncmp(&str[strl-4],"(sb",3)) { mode=26; } David -- David Taylor taylor@think.com, ...!think!taylor
taylor@THINK.COM (05/11/89)
[I mailed this on Sunday, but it doesn't seem to have made it out. My apologies if this is a repeat. -- David] When compiled for the ns32k, gas doesn't recognize an operand of `some_label(pc)' as meaning that it should access the label via pc-relative memory space addressing. Instead it ignores the `(pc)' and assembles the operand using absolute addressing. The fix is easy. In ns32k.c, in the function `addr_mode', add the lines: if (!strncmp(&str[strl-4],"(pc",3)) { mode=27; } right after the lines that read: if (!strncmp(&str[strl-4],"(sb",3)) { mode=26; } David -- David Taylor taylor@think.com, ...!think!taylor