3

Действительно ли регистры 32-битные в x86 и 64-битные в x86-64?

3 ответа3

4

Краткий ответ: да.

Длинный ответ:

Все процессоры имеют несколько регистров. На процессорах x86 самый большой из них имеет длину 32 бита, а на x64 самый длинный - 64 бита.

Меньшие регистры предназначены для обратной совместимости со старыми приложениями.

Например, регистр bx всегда имеет длину 16 бит и существует для совместимости с 16 битами на большинстве процессоров, ebx имеет длину 32 бита и существует на 32-битных и 64-битных процессорах.

Важно отметить, что bx указывает на "правую половину" ebx

Например:

Если значение в ebx равно 0f0f 0b0b то значение в bx равно 0b0b

2

Да, но...

Возьмите в качестве примера регистр аккумулятора.

В 8086/8088 это был 16-битный регистр AX. Доступ к левой и правой 8-битным частям можно получить отдельно как AH и AL:

    1
    5               0
    |+++++++*+++++++|
AX: |   AH  |   AL  |
    |+++++++*+++++++|

32-битные процессоры добавили 32-битные регистры, в то время как оригинальные 16 и 8-битные регистры оставались доступными:

     3
     1                               0
     |+++++++*+++++++|+++++++*+++++++|
     |              AX               |
EAX: |               |   AH  |   AL  |
     |+++++++*+++++++|+++++++*+++++++|

И с 64 битами они повторили трюк:

     6
     3                                                               0
     |+++++++*+++++++|+++++++*+++++++|+++++++*+++++++|+++++++*+++++++|
     |                               |              EAX              |
RAX: |                               |               |      AX       |
     |                               |               |   AH  |   AL  |
     |+++++++*+++++++|+++++++*+++++++|+++++++*+++++++|+++++++*+++++++|

И есть также регистры с плавающей запятой, каждый длиной 80 бит, независимо от размера основного регистра.

1

Регистры общего назначения и указатель инструкций имеют 16 бит на 16-битном процессоре x86 (т.е. от 80x86 до 286 или более поздней версии в режиме совместимости), 32 бита на 32-битном процессоре x86 (т.е. 386 и далее) и 64 бита на 64-битном процессоре (т.е. amd64 или совместимом). Это связано с тем, что N-битный ЦП более или менее определяется как ЦП, где регистры общего назначения имеют ширину N бит (или ЦП, где указатель инструкций имеет ширину N бит, но на x86 и большинстве других архитектур это то же самое).

Некоторые другие регистры имеют разные размеры. Например, 32-битные процессоры x86 имеют 16-битные регистры сегментов (редко используются) и 80-битные регистры с плавающей запятой. Статья в Википедии о X86 содержит более полный список.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .