Я не уверен, что подразумевается под 16-битными или 32-битными приложениями. Является ли это 16-битным приложением, для которого не требуется более 2 ^ 16 байт памяти? Относится ли этот 16-бит к максимальному размеру приложения?
что подразумевается под 32-битным приложением?
Ответы (3)
Ответы на распространенные вопросы
Будет ли 64-разрядный ЦП запускать стандартную (32-разрядную) программу в 64-разрядной версии ОС? Да, будет. 64-битные системы обратно совместимы с 32-битными аналогами.
Будет ли 64-разрядная ОС запускать стандартное приложение на 64-разрядном процессоре? Опять же, будет. Это из-за обратной совместимости.
Могу ли я запустить W2K и WXP на 64-разрядном процессоре и использовать старое программное обеспечение? Да, 32-разрядная ОС (W2K и WXP) будет работать на 64-разрядном процессоре. Кроме того, вы должны иметь возможность запускать старое программное обеспечение на 64-битной ОС.
Это означает, что приложение было скомпилировано для процессора с 16-битной или 32-битной адресацией памяти. То же самое касается 64-битных приложений.
Число относится к максимальному объему памяти, который может адресовать приложение.
См. википедию — 16-bit, 32-bit, 64-разрядная (и более).
Число (32 или 16 ассемблерной директивы режима адреса (пример "[use16]" и "[use32]")) не относится к максимальному объему памяти, который может адресовать приложение!
Потому что с 80386+ также можно использовать префиксы размера операнда и размера адреса в сочетании с 16-битным PM для адресации до 4 ГБ оперативной памяти.
(Максимальный объем памяти, который может использовать наше приложение, относится к записям сегмента размера сегмента внутри селектора GDT/LDT или к размеру по умолчанию для сегмента 64 КБ.)
Единственная разница между 32-битным и 16-битным режимом адреса заключается в значении и использовании этих префиксов размера операнда и размера адреса.
[use16]
Поэтому, если мы хотим использовать в 16-битном режиме адресации 32-битные операнды/адреса, мы должны добавить эти префиксы к нашему коду операции. Без этих префиксов мы можем использовать только 16 бит.
[use32]
В 32-битном адресном режиме мы обнаружили диаметрально противоположную ситуацию, поэтому, если мы хотим использовать 32-битные операнды/адреса, мы должны исключить эти префиксы из нашего кода операции, и только если мы хотим использовать 16 операндов/адресов, тогда у нас есть чтобы добавить эти префиксы к нашему коду операции.
Если мы будем использовать эти директивы размеров выше (или аналогичные обозначения) осторожно, то наш ассемблер выполнит эту работу.
Префикс размера операнда в 16-битном режиме
Кортик