C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
В компиляторе скоро будут перемены ?, Революция в архитектуре микропроцессоров
Grigoriy
Отправлено: 22.03.2006, 15:31


Мастер участка

Группа: Участник
Сообщений: 381



Я узнал из документов о процессоре Pentium 4 то, что количество регистров общего назначения в новых моделях этого процессора не 8 регистров, а 16 !

Первые 32 разрядные регистры называются

eax, ecx, ebx, edx, esi, edi, ebp, esp

И остальные восемь 32-разрядных регистров
R8D, R9D, R10D, R11D, R12D, R13D, R14D, R15D

А вообще все 16 регистров теперь 64-разрядные.

И 64-разрядные остальные регистры называются
R8, R9, R10, R11, R12, R13, R14, R15.

А 64-разрядные "старые" регистры теперь так называются
RAX, RCX, RBX, RDX, RSI, RDI, RBP, RSP
Для доступа к новым ресурсам включая вторую половину регистров общего назначения используется машинный префикс REX

С учетом того, что доступ к переменным хранящимся в регистрах максимально быстрый и количество регистров общего назначения возросло в два раза, я полагаю что в алгоритме компилятора должны тоже произойти изменения. Но как быстро они произойдут ?
И когда появится опция "компиляция для новых процов", смешно я её назвал.
Кто думает что об этом ?
Asher
Отправлено: 22.03.2006, 16:06


Мастер участка

Группа: Модератор
Сообщений: 550



Привет.
Это доступно в новых процессорах с AMD64 и EM64T и только в 64-разрядном режиме.
ICC 9 и последние PathScale в этом режиме расширенный набор регистров вроде используют.
Grigoriy
Отправлено: 22.03.2006, 17:35


Мастер участка

Группа: Участник
Сообщений: 381



QUOTE (Asher @ 22/03/2006, 16:06)
Это доступно в новых процессорах с AMD64 и EM64T и только в 64-разрядном режиме.

В 32-разрядном режиме группа инструкций
CODE

inc ...
dec ...

которые предназначены для увеличения операнда на единицу и для уменьшения операнда на единицу имеет тот же диапазон машинных кодов :
0x40 ... 0x4f
что и префиксы REX в 64-разрядном режиме.
Значит после перехода в 64-разрядный режим невозможно выполнять
команды инкрементации и декрементации в таком же виде кода, в каком они выполняются в 32-разрядном режиме ?
Так что тогда, получается несовместимость режимов ?
QUOTE

ICC 9 и последние PathScale в этом режиме расширенный набор регистров вроде используют.

А каким образом эти программы переключают процессор в 64-разрядный режим. И что это вообще за проги ?

Вернуться в Вопросы программирования в C++Builder