По поводу версий Windows
3511
16
Скажите пожалуйста,
какие версии Windows относятся к 32-битным, а какие к 16-битным?

Заранее благодарен.
m52
win95-16bit
всё что выше - 32bit
neor
да ну... сдается мне, что вы не в теме... :ухмылка:

DOS/Win 3.x — 16
Win 95/98/ME — 16/32
Win NT/2000/XP — 32
dep
Windows NT/2000/XP/2003/LH также имеет поддержку 16-битных приложений, если я не ошибаюсь.
Lost__Shadow
ну и что, что имеют? Ядро то 32bit.
m52
Начиная с 95 - 32-битные.
mdv
А какая версия Windows точно не поддерживает 32-битные приложения?
PN
А если поставить вопрос шире.

В чем принципиально отличие 16-битных приложений от 32-битных.

А то тут пишут, "ядро то 32 разрядное", ну вот что это значит?
CoolUser
Принципиальное отличие - в адресации.
В 32-разрядных приложениях плоское адресное пространство, в 16-разрядных адрес получается из сегмента и смещения, хитрым образом накладываемых друг на друга.
CoolUser
отличие 16-битных приложений от 32-битных
Если смотреть в начало, то разрядность определяется процессором. А именно разрядностью инструкций. Все современные процессоры поддерживают 32-разрядные инструкции и 16-разрядные. По моему начиная с 386-ых, если не вру.

Дальше проблема стоит в том, поддерживает (или точнее использует) ли система возможности 32-ух разрядов процессора, т.е. какое ядро. Утверждается, что начиная с 95-х виндов система 32-разрядная. Хотя существовали примочки для Win3.x (т.н. Win32), а также что WIn95 не до конца 32-разрядная.

Преимущества не только в адресации. А например, сильно в операциях умножения и, особенно, деления. Если кто-то когда нибудь программировал на микропроцессоре на ассемблере - поймет.
Юра
Адресация - епархия ОС, а умножение/деление - приложения. Еще под DOS можно было откомпилировать программу так, чтобы она использовала арифметические возможности 386 процессора. Так что арифметика - дело важное, но от ОС не зависящее.
Anomander
Еще под DOS можно было откомпилировать программу так, чтобы она использовала арифметические возможности 386 процессора.
Ну это скорее всего требовали особенного софта. Но не буду спорить.

В начале обсуждения, говорилось о поддержке ситемой 32-разрядных приложений. Т.е. все таки 32-разрядное приложение не запустишь под 16-разрядной системой, даже если процессор поддерживает 32-р инструкции.

Т.е. приложения используют не только возможности адресации системы. Как мне кажется. Может и арифметику тоже. Потому как у разных типов процессоров могут быть различные инструкции, или нет?! Например, AMD использует точно такую же систему команд как Intel?

Похоже мы забрели немного далеко...
Юра
Все дело в том что Винды, начиная с 95, 16-тиразрядные приложения запускают в "виртуальной машине", т.е. как бы создают им свое собственное адресное пространство.
craxx
угу... это NT и выше запускают в "виртуальной машине" как вы говорите... а 95/98/ME нет.. иначе бы крах одного приложения не валил бы всю систему... как это бывает под этими системами... в них очень причудливо "переплетены" 16 и 32 разрядные части... из соображеений совместимости со старым ПО...
dep
Ну Досовские приложения и 95-я запускает в виртуальной машине. А вот с приложениями Win 3.11 немного посложнее.
Юра
>> у разных типов процессоров могут быть различные инструкции, или нет?!
Ну те инструкции, которые существовали в процессоре модели Х, будут поддерживаться в модели Х + 1. Так называемая "обратная совместимость". Потому линейку х86 и называют так, что любой её представитель поддерживает команды 8086.
(надеюсь, я вопрос то правильно понЕл? Или под "разными типами" имелось в виду другое?)

>> AMD использует точно такую же систему команд как Intel?
Ну... как бы да, если не считать дополнитеьлных наборов инструкций: MMX, 3DNow!, SSE и SSE2. Но приложению от этого толку будет мало, если оно под них не оптимизировано.