Alexander Gerasiov wrote:

Max Dmitrichenko wrote:
VNS> какие ключи указать при компиляция, что-бы программа была
VNS> скомпилирована подl x86_32, но при этом использовались все возвможности
VNS> Athlon64?

Сам-то понял, что сказал?
Видимо оратору хочется что-то на подобии того, как в real mode x86 процессора,
можно использовать 32-битные регистры. Только у него теперь Athlon и он хочет
из 32-битного режима юзать 64-битные расширения. Честно сказать, у меня ещё не
дошли глаза, чтобы почитать архитектуру этого добра, поэтому не знаю возможно
ли такое или нет. Но если там есть префиксы смены разрядности команды, то можно.
Но мне кажется там режим процессора переключается как-то глобально. Если не
прав, то поправьте меня.
Насколько я помню, в отличии от IA64, как раз префиксы для 64х разрядов.
И, вроде как, это возможно.


Насколько я понимаю это невозможно. В real mode x86 не была реализована многозадачность и защищённые режим. В защищённом режиме IA32 при переключение задачи сбрасывается карта регистров текущего процесса в TSS в котором в 32 разарядной OS хранит только 32 разрядные регистры. А учитывая что в x86-64 есть ещё 8 дополнительныx регистров общего назначение, то при смене задачи они сохранятся в TSS не будут. Вполне возможно, что при переключение в истинно 32 разрядном режиме те регистры вообще обнуляются. В любом случае при 32 разрядно OS если и получится откомпилить (насколько это возможно я не могу сказать) то если и сможет работать то только ровно 1 такое приложение..

Примечание: Если я не ошибаюсь то регистры XMMS, MMX/FPU в карте TSS не хранятся, процессор генерирует специальное exception, для обеспечения их разделения в многозадачности, поэтому они легко преживались в существующих OS


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Ответить