В смысле не прокатит???? А опкод 0Е не о чем не говорит?, да и вопрос не про то. Сегмент не имеет значение, что в старшем слове?
Я и так знаю, что работает. Я терпеливый, повторб еще раз что в старшем слове? И еще вопрос, если значение cs=1Вh, то получается RPL=11b, логично для 3 кольца, но почему TI=0? По документации это означает использование GDT, но почему тогда индекс имеет такое маленькое значени?
помоему чародей, ты несможеш запхнуть туда cx поскольку пушить необходимо dword - ecx. а если ты сделаеш push ecx pop cx то в старшем слове eax будит тое што и в старшем слове cx
Charodey Если я не ошибаюсь, то что push sreg запихает в стек, зависит от конкретного проца. Некоторые пихают нулевое слово, а некоторые - мусор (точнее ничего не пихают, а оставляют то, что и было). Точно не помню, домой приду посмотрю у Ровдо, у него точно что-то было на эту тему.
Всё, спасибо doctor_Ice за подсказку в каком направлении двигаться. push cs аналогично mov ss:[sp+2],cs ;only analog Команда ессно не работает, но дает понимание. Ничего проц не расширяет и мусор не добавлят! Там просто значение которое когда-то было ранее, а постоянное из-за постоянства процедуры вызываемой это код! Может ли кто пояснить еще по этому поводу?
А что не нравится-то? Система - Windows? Ну так она LDT вовсе не использует, делать ей больше нечего А чем индекс-то не понравился? Нормальный селектор кодового сегмента, для NT5 он, кажется, всегда такой...
Тогда подскажите, что почитать про сегментацию в Win, а то кроме Intel документации у меня ни чего нет (вот и ориентируюсь по ней) ?(
Нет в Win, по крайней мере в NT сегментации ВООБЩЕ. flat-модель и всем приятно. Разделение адресных пространств приложений происходит на страничном уровне, то есть при преобразовании линейного адреса в физический. Логический же адрес преобразуется в линейный э... м... линейно Каламбур, однако. То есть все сегменты имеют базу 0 и лимит 4Гб. Единственное что - это FS. Он используется для обработки исключений.
Хм, если я правильно понял логический=линейному. И под сегмент выделяется все что возможно-достуно, но при этом не происходит переполнеия. _______ _______ ______ |_ds___||_es____|...|_VM___| --->------------------/\ т.е. сколько бы в сегмент не писать он на др.сегмент не залезет, так?
Charodey 1) Выделяет память система, уж сколько получится (затребовано, имеется и т.д.) Доступно-то 4Гб, но то для адресации. А если память не выделена/размещена - получишь Page Fault, коим так изобиловала 95-я. 2) Логический=линейный НО! != физический. А залезет/не залезет - это уж как решит СИСТЕМА 8-0 или как ее попросят. Физически страницы может и вообще не быть в памяти (валяется в свопе, например)
Спасибо, это вроде понятно. Но всеже есть ли у мелкомягких какая-нибудь официальная документация по теме?