There is an awful lot of misinformation being spread on this thread. The 16 vs. 32 bit distinction on Intel x86 processors is as follows: 80x86 processors up to the '286 are 16 bit only - they have 16 bit wide accumulators and index registers, and a limit of 64K per addressable segment. The 386 and higher processors have split personalities; they are effectively two processors in one. The distinction comes about only when running in protected mode, and is made by distinguishing two types of segments - 16 bit segments operate just like a 286, 32 bit segments operate like a quite different processor; in 32 bit segments the available register set is different (all 32 bit not 16 bit) and the set of addressing modes is *totally* different (note; it is possible to have 32 bit instructions in a 16 big segment or vice versa, by use of override prefixes). In a 32 bit O/S like NT or Linux, the operating system code runs in 32 bit segments, and uses "flat" model code, where a linear 32 bit address space is used. In a 16 bit O/S like Win3.1, the O/S code mostly runs in 16 bit segments, using segmented addressing. Win95 is a hybrid; some 32 bit code, quite a lot of 16 bit code. When it comes to applications under Windows, there is not only the distinction between 16 and 32 bit code, but also the distinction between the Win16 API and the Win32 API. While the Win32 API is superficially a superset of Win16, there are major extensions, and fundamental differences that, amongst other things, make it possible for Win32 programs to be pre-emptively task-switched, whereas Win16 programs in the same virtual machine can only be co-operatively task switched. Win95 and WinNT both support both the Win16 and Win32 API, but only Win32 applications task switch cleanly (all Win16 apps in NT are treated together as one Win32 task, and within that task the Win16 apps do not pre-emptively task switch - though it is possible to have additional Win16 (aka Windows On Windows or WOW) virtual machines running, but it's very memory hungry). Win On Sun, Aug 03, 1997 at 02:52:27AM -0400, Mike wrote: > > Sorry - no such thing as a true 32 bit operating system - what is the > collective definition of a 16 or 32 bit operating system ANYWAY ??? A 32 bit O/S is one that runs natively on a 32 bit processor. NT fits this definition. Win3.1 does not, Win95 might do. > It may not load a 16bit dll 'app' BUT I would be willing to bet it is > riddled with 16 bit code since its more efficient to selectively use > 16 bit instructions when its just a complete waste of resources to try Wrong! On an x86 processor in 32 bit mode, 16 bit addressing (i.e. using a 16 bit index register or even loading a 16 bit register) is very inefficient, due to the prefix byte required to force 16 bit addressing. In this mode, 32 bit addressing is much more efficient. And 32 bit mode is more efficient than 16 bit mode since the flat model eliminates the very costly segment register loads required by the 16 bit segmented model used in 16 bit mode. Any memory intensive 32 bit code will run much faster than 16 bit code that has to address more than 64K memory. Cheers, Clyde -- Clyde Smith-Stubbs |HI-TECH Software, |Email: clyde@htsoft.com Ph: +61 7 3354 2411|P.O. Box 103, Alderley,|WWW: http://www.htsoft.com/ Fax: +61 7 3354 2422|QLD, 4051, AUSTRALIA. |PGP: finger clyde@htsoft.com --------------------------------------------------------------------------- ANSI C for the PIC! Now shipping! See www.htsoft.com for more info.