64-битный код в Win32 программе?
Разрядности мне стало мало, я сменил unsigned на unsigned long long. Расчет был на то, что время работы алгоритма с новым типом на старых входных данных не поменяется. Но не тут-то было. Компилятор не стал использовать 64-битные регистры. Все было сделано при помощи составных операций на 32-битных регистрах. А скорость критична.
Менять операционную систему мне неудобно - программа должна будет работать на многих компьютерах распределенно. Это рабочие машины, на них уже стоит WinXP 32 и ради моих опытов трогать ее нельзя.
Я могу оттранслировать процедуру в ассемблер, затем перебить мнемоники и регистры на большую ширину. Но GNU as их не понимает.
Вопрос: можно ли в программе для Win32 воспользоваться 64-разрядными регистрами?
Спасибо.
Радости в виде 64 битных регистров на 32 битной платформе не бывать.
а чем вас MMX и SSE не устраивают ? восемь 64-битных регистров MMX + восемь 128-битных регистров SSE . битовые операции есть и в MMX и в SSE .
Цитата: Ramon
Радости в виде 64 битных регистров на 32 битной платформе не бывать.
А что этому мешает? Мне не нужно 64-битное адресное пространство. Все действия происходят внутри процессора, который заведомо способен работать с 64 битами. Операционная система запрещает? Есть какие-то режимы, в которые надо переключать процессор?
Цитата: koderAlex
а чем вас MMX и SSE не устраивают ? восемь 64-битных регистров MMX + восемь 128-битных регистров SSE . битовые операции есть и в MMX и в SSE .
Попробую посмотреть. Об этом я не думал. Интересно, почему компилятор сам ими не пользуется?
Цитата: Станислав Володарский
А что этому мешает? Мне не нужно 64-битное адресное пространство. Все действия происходят внутри процессора, который заведомо способен работать с 64 битами. Операционная система запрещает? Есть какие-то режимы, в которые надо переключать процессор?
Мешает всему истинная природа 64х битности данного процессора и его контекста как в самом себе так и в операционной системе.
Доступ к 64 битным регистрам возможен ТОЛЬКО из 64 битного режима. Ничего не поделаешь такова архитектура процессора, ОС тут не при чём. И действительно в таком случае лучше юзать SSE.