From owner-freebsd-hackers Sun Sep 1 08:31:20 1996 Return-Path: owner-hackers Received: (from root@localhost) by freefall.freebsd.org (8.7.5/8.7.3) id IAA00399 for hackers-outgoing; Sun, 1 Sep 1996 08:31:20 -0700 (PDT) Received: from godzilla.zeta.org.au (godzilla.zeta.org.au [203.2.228.19]) by freefall.freebsd.org (8.7.5/8.7.3) with SMTP id IAA00394 for ; Sun, 1 Sep 1996 08:31:15 -0700 (PDT) Received: (from bde@localhost) by godzilla.zeta.org.au (8.6.12/8.6.9) id BAA10132; Mon, 2 Sep 1996 01:22:52 +1000 Date: Mon, 2 Sep 1996 01:22:52 +1000 From: Bruce Evans Message-Id: <199609011522.BAA10132@godzilla.zeta.org.au> To: freebsd-hackers@freebsd.org, staff@kyklopen.ping.dk Subject: Re: movsbw question Sender: owner-hackers@freebsd.org X-Loop: FreeBSD.org Precedence: bulk >The pgcc uses the movsbw instruction with a 32 bit oprand and according >to my old i486 assembler book the instraction takes a "r32" oprand but >"as" says it take a reg16 operand. Now what is right? Neither :-). It takes a r/m8 operand and converts it to a r16 result. An Intel assembler book would spell the instruction movsx. The FreeBSD version of gas doesn't really understand this instruction. It generates a superfluous second operand size override for movsbw %al,%bx It emits bytes 0x66, 0x66, 0x0f, 0xbe, 0xd8. This is fixed in GNU assembler version 2.6 (i486-linux), using BFD version 2.6.0.2 Bruce