Path: utzoo!utgpu!jarvis.csri.toronto.edu!cs.utexas.edu!samsung!think!bbn!drilex!dricejb From: dricejb@drilex.UUCP (Craig Jackson drilex1) Newsgroups: comp.arch Subject: Re: PUSH on i8088/i80x86 Message-ID: <7341@drilex.UUCP> Date: 11 Jan 90 15:05:42 GMT References: <182DAVISTD@MSU> <5524@bd.sei.cmu.edu> <10190@microsoft.UUCP> <5550@bd.sei.cmu.edu> Organization: DRI/McGraw-Hill, Lexington, MA Lines: 60 In article <5550@bd.sei.cmu.edu> firth@sei.cmu.edu (Robert Firth) writes: >In article <5524@bd.sei.cmu.edu>, firth@sei.cmu.edu I wrote: > >> Well, I just checked my manuals for the 8086, 8088, 80286 and 80386. >> As best I can determine, all of them agree on this > ..... >> . There is no difference among the 80xxx processors in the semantics >> of the PUSH instruction > >In article <10190@microsoft.UUCP> gordonl@microsoft.UUCP (Gordon LETWIN) writes: (Someone well-known to be familiar with the 80x8x architecture.) > >>This is totally wrong. It's a fact that the handling of "push sp" differs >>between some of these processors. I forget which does what and am too >>lazy to look it up, but this is *fer sure* listed in a difference table >>that Intel has somewhere. And I've seen it used as part of a "identify >>processor" subroutine. > >It may well, indeed, be totally wrong. However, given that I went to >the trouble actually to extract the documents, reread them, and post to >the net their citations, including title, date, and order number, it >seems to me that it would be a matter of simple courtesy, both to me >and to the net, if you would take the same trouble before issuing a >public contradiction. Our opinions, even our FER SURE opinions, are >pretty useless otherwise. I have here in my hand a document, entitled "iAPX 286 Programmer's Reference Manual Including the iAPX 286 Numeric Supplement", dated 1984, published by the intel Corporation. It contains an chapter, Appendix D, entitled "iAPX 86/88 Software Compatibility Considerations". Item number 8 in that chapter is labelled "Do not Rely on the Value Written by PUSH SP." The first sentence reads: "The iAPX 286 will push a different value on the stack for PUSH SP than the iAPX 86/88." It goes on to give some sample code which gives the same answer in both architechtures. It is reproduced here in the interest of satisfying inews' line counter. PUSH BP MOV BP,SP XCHG BP,[BP] I hope we can all put this issue to bed now. I also hope that inews will now accept this article. -- Craig Jackson dricejb@drilex.dri.mgh.com {bbn,axiom,redsox,atexnet,ka3ovk}!drilex!{dricej,dricejb}