Обсуждение:Регистр процессора

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

В x64-версиях Windows регистр FS заменен регистром GS[править код]

Последние несколько различий в ОС, близкие и дорогие моему сердцу, касаются данных, локальных для потока. В x86-версиях Windows на области памяти, локальные для потоков, в том числе на "последнюю ошибку" и Thread Local Storage (GetLastError и TlsGetValue соответственно), указывал регистр FS. В x64-версиях Windows регистр FS заменен регистром GS. В остальном все работает почти аналогично. https://msdn.microsoft.com/ru-ru/library/dd335933.aspx

Ulti.paladin (обс.) 00:15, 12 декабря 2016 (UTC)[ответить]

mov ss, 127 cs,ss,ds,fs,gs,es сегменты выдают ошибку как при format PE64 Console 5.0, так и format PE Console 5.0, так и вообще без него.

так что работа с сегмента на 64 битных системах не поддерживается intel i5-2500k — Эта реплика добавлена участником Ulti.paladin (ов) 13:11, 25 декабря 2016 (UTC)[ответить]

@Ulti.paladin: В сегментные регистры никогда нельзя было напрямую писать константы. Вот такой же вариант вполне работает:
mov ax, 43
mov gs, ax
Как в 32х-битном, так и в 64-битном режиме. Другое дело, что в 64-битном режиме значения этих регистров почти не используются. Но это уже другой вопрос. Также на всякий случай напомню, что статьи в Википедии пишутся на основе авторитетных источников, результаты самостоятельных исследований в статьи попадать не должны. — Vort (обс.) 15:15, 25 декабря 2016 (UTC)[ответить]


Вообще-то не работает: вот что выдает snapshot_2016-12-22_15-17 регистр ах превращается в eax и дебагинг стопорится, однако цифра 2b, работает.

xor eax,eax
mov ax, 43
mov gs, ax
mov ax,gs

00401000 | 31 C0                    | xor eax,eax                             |
00401002 | 66 B8 16 00              | mov ax,16                               |
00401006 | 8E E8                    | mov gs,eax                              |
00401008 | 66 8C E8                 | mov ax,gs                               |

я написал этот коммент что бы люди шарящие проверили в чем дело, может нашли инструкции и исправили. Я предполагаю что сегментные регистры больше не используются

Ulti.paladin (обс.) 15:29, 25 декабря 2016 (UTC)[ответить]
Может вот эта статья что-то прояснит. Как я понял из статьи, эти регистры в 64-битном режиме используются только для настройки защиты памяти. Поэтому туда и нельзя записать что попало. — Vort (обс.) 16:05, 25 декабря 2016 (UTC)[ответить]