Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

64-битный код в Win32 программе?

54K
24 декабря 2009 года
Станислав Володарский
4 / / 06.12.2009
Есть у меня алгоритм, который манипулирует 32-разрядными словами. Написан на C++. Много битовых операций, немного арифметики. Умножений и делений нет. Все помещается на регистры процессора. Платформа WinXP 32, компилятор GCC (MinGW).

Разрядности мне стало мало, я сменил unsigned на unsigned long long. Расчет был на то, что время работы алгоритма с новым типом на старых входных данных не поменяется. Но не тут-то было. Компилятор не стал использовать 64-битные регистры. Все было сделано при помощи составных операций на 32-битных регистрах. А скорость критична.

Менять операционную систему мне неудобно - программа должна будет работать на многих компьютерах распределенно. Это рабочие машины, на них уже стоит WinXP 32 и ради моих опытов трогать ее нельзя.

Я могу оттранслировать процедуру в ассемблер, затем перебить мнемоники и регистры на большую ширину. Но GNU as их не понимает.

Вопрос: можно ли в программе для Win32 воспользоваться 64-разрядными регистрами?

Спасибо.
260
24 декабря 2009 года
Ramon
1.1K / / 16.08.2003
Радости в виде 64 битных регистров на 32 битной платформе не бывать.
252
24 декабря 2009 года
koderAlex
1.4K / / 07.09.2005
а чем вас MMX и SSE не устраивают ? восемь 64-битных регистров MMX + восемь 128-битных регистров SSE . битовые операции есть и в MMX и в SSE .
54K
25 декабря 2009 года
Станислав Володарский
4 / / 06.12.2009
Цитата: Ramon
Радости в виде 64 битных регистров на 32 битной платформе не бывать.



А что этому мешает? Мне не нужно 64-битное адресное пространство. Все действия происходят внутри процессора, который заведомо способен работать с 64 битами. Операционная система запрещает? Есть какие-то режимы, в которые надо переключать процессор?

54K
25 декабря 2009 года
Станислав Володарский
4 / / 06.12.2009
Цитата: koderAlex
а чем вас MMX и SSE не устраивают ? восемь 64-битных регистров MMX + восемь 128-битных регистров SSE . битовые операции есть и в MMX и в SSE .



Попробую посмотреть. Об этом я не думал. Интересно, почему компилятор сам ими не пользуется?

260
25 декабря 2009 года
Ramon
1.1K / / 16.08.2003
А что этому мешает? Мне не нужно 64-битное адресное пространство. Все действия происходят внутри процессора, который заведомо способен работать с 64 битами. Операционная система запрещает? Есть какие-то режимы, в которые надо переключать процессор?



Мешает всему истинная природа 64х битности данного процессора и его контекста как в самом себе так и в операционной системе.

399
25 декабря 2009 года
KIV
432 / / 20.01.2009
Доступ к 64 битным регистрам возможен ТОЛЬКО из 64 битного режима. Ничего не поделаешь такова архитектура процессора, ОС тут не при чём. И действительно в таком случае лучше юзать SSE.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог