arsboretskiy 17 сен 2019 в 15:13Разработка Unix подобной OS — Виртуальное адресное пространство (6)Время на прочтение7 минКоличество просмотров4.9KAssembler*C*Системное программирование*ТуториалВсего голосов 14: ↑13 и ↓1+12Добавить в закладки57Комментарии3
logost 17 сен 2019 в 16:16xor $0x80000000,%eax # unset PG bit это путь к непонятным ошибкам в будущем. чистить биты нужно по настоящему: and $0x7FFFFFFF,%eax # unset PG bit
IGR2014 18 сен 2019 в 12:03Показать предыдущий комментарийСовершенно верно. Вы только не пояснили в чём проблема. Позвольте дополнить: В случае если в старшем, 31-м бите регистра EAX будет ноль, XOR с 0x80000000 выставит его в единицу, что нам не нужно. А AND с 0x7FFFFFFF однозначно оставит нулём. 0 xor 1 = 1 0 and 1 = 0
Разработка Unix подобной OS — Виртуальное адресное пространство (6)