[comp.sys.ibm.pc] Subtle and critical bug in Turbo Assembler 1.0

geoff@eagle_snax.UUCP ( R.H. coast near the top) (11/17/88)

The good news about Turbo Assembler is its speed - 6:25 to build
PC-NFS, compared to 8:03 under MASM 5.0.

The bad news is a nasty little bug. It turns out that if you assemble
a statement such as

        cmp     ax, es:word ptr [di].symbol

the "es" segment prefix is lost and it is assembled as though
you had written

        cmp     ax, word ptr [di].symbol

If you modify the code to read

        cmp     ax, word ptr es:[di].symbol

everything is fine.

Just out of curiosity, I checked to see how many lines of this form
we have in PC-NFS (or at least in PC-NFS.SYS). For those with
a taste for the macabre, the egrep command was

        egrep -i "[cdes]s:.*(word|byte|dword).*ptr.*\[..\]" *.asm

There were 21 hits.

I've talked to Borland; somebody reported the same bug earlier
today.

THE VERDICT: Don't Use Turbo Assembler (yet), unless you're prepared to
find and fix any lines of this form in your source.

Geoff

-- 
Geoff Arnold, Sun Microsystems Inc.   +------------------------------------+ 
PC Distributed Systems(home of PC-NFS)|Someone, somewhere, wants an RFC822 |
UUCP: {hplabs,decwrl...}!sun!garnold  |message from YOU.                   |
ARPA: garnold@sun.com                 +------------------------------------+