Обсуждение:Регистр процессора
Проект «Информационные технологии» (уровень II, важность для проекта высокая)
Эта статья тематически связана с вики-проектом «Информационные технологии», цель которого — создание и улучшение статей по темам, связанным с информационными технологиями. Вы можете её отредактировать, а также присоединиться к проекту, принять участие в его обсуждении и поработать над требуемыми статьями. |
В 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)
fasm править
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)