Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!kadorken From: kadorken@watmath.UUCP Newsgroups: comp.sys.intel Subject: 386 instruction encoding query Message-ID: <4979@watmath.UUCP> Date: Tue, 10-Feb-87 16:34:23 EST Article-I.D.: watmath.4979 Posted: Tue Feb 10 16:34:23 1987 Date-Received: Wed, 11-Feb-87 07:07:59 EST Distribution: na Organization: U of Waterloo, Ontario Lines: 16 The 386 programmers reference manual has for the full encoding of the "jo" instruction the following bit pattern: 0x0F 0x80 . The bit encoding for pushing a segment register (long form; 3-bit segment register name) is: 0x0F 10 seg3 000 where seg3 is one of {es, cs, ss, ds, fs or gs}. Thus the two byte opcode 0x0F 0x80 could be interpreted as being either a "jo" instruction or the long form instruction "push es". (the 3-bit encoding for es is 000). Executing this instruction results in a jump, not a push. However, other encodings (using the other 3 bit segment register names) do result in a value being pushed on the stack. Is the above behaviour just a fluke on our processor or will all future '386 processors behave this way?