Программирование x86 в защищённом режиме

Тема в разделе "WASM.ASSEMBLER", создана пользователем sergh, 10 ноя 2005.

  1. The Svin

    The Svin New Member

    Публикаций:
    0
    Регистрация:
    6 июл 2003
    Сообщения:
    665
    Адрес:
    Russia
    Дык ты опять предпологаешь, не зная в чём отличия как ты можешь априори утверждать, что они не касаются архитектуры?
     
  2. sergh

    sergh New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    128
    Адрес:
    rsdn
    The Svin

    Архитектура это то, чего разработчики процессора хотели. Концептуально хотели :) Если у них получилось немного не то, это детали реализации. Может быть конечно они где-то конкретно лажанулись и эти детали очень-очень важные. Ну значит не повезло.



    Но вообще-то отличия между реальными режимами процессоров меня волнуют в последнюю очередь. Про это есть другие книжки. Меня волнует исключительно защищённый режим. Буду тебе благодарен, если ты переключишь своё внимание в эту область. И всё-таки дочитаешь до конца :)
     
  3. The Svin

    The Svin New Member

    Публикаций:
    0
    Регистрация:
    6 июл 2003
    Сообщения:
    665
    Адрес:
    Russia




    Так тогда не пиши об этом вообще, а то получается "ну написал неправильно, но меня этот момент не волнует - так что нехай будет неправильно".



    Дык там вроде конца нет, или имеется ввиду "до конца того, что было уже написано?". Ну будет время прочитаю.



    Вобще защищённый режим неплохо описан Григорьевым в 2х томнике "i486". Чтобы зря не терять время, проще тебе сверить свои тексты с этой книжкой, а уж потом можно посмотреть не осталось ли недопонимания после этого.
     
  4. sergh

    sergh New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    128
    Адрес:
    rsdn
    The Svin

    Ну вот привязался! Во-первых, написал правильно. Во-вторых, так и быть, я подумаю, и может уберу нафиг это примечание. Или переформулирую. Как-то не придавал я ему такого решающего значения, просто забавная нетривиальная мысля, которой мне захотелось поделиться. В отличие от других "отличий" между процессорами это вычисляется не практически, а теоретически.



    Дык там вроде конца нет, или имеется ввиду "до конца того, что было уже написано?". Ну будет время прочитаю.

    Да, до конца того, что написано.



    А Григорьева у меня нет и я его не читал и даже не видел. Поэтому не проще :) Кроме того, лично я считаю, что в описанном недопониманий у меня нет :)
     
  5. The Svin

    The Svin New Member

    Публикаций:
    0
    Регистрация:
    6 июл 2003
    Сообщения:
    665
    Адрес:
    Russia


    Ну дык сам просил. Я и у проффессор Кнута находил ошибки (не говоря уж о наших профессорах, или авторах вроде Крыса, Юрова и т.п - там просто сотнями), а у Вас серый волк и подавно найду. Написал ты неправильно, потому как написал что то, что на самом деле вообще несовместимостью (обратной) не рассматривается ты назвал "единственным что приходит в голову".



    Давай просто до кучи я опишу некоторые моменты несовместимости реального 386 и 8086, человек я занятый сейчас, но чтобы отвлечься от болтовни хоть на сколько то в предметную часть.

    1. Заворачивание адреса допустимое в 8086 вызывает исключение в реальном режиме 386+

    2. процессоры 386 последующие после начального нарастающие фронты по NMI не воспринимаются до последующей за первым команды IRET, в то время как у 8086 не блокирует восприятие по входу NMI.

    и т.д. и т.п.

    И любое такое различие, список которых я могу продолжить, действительно серьёзно, и не одно из них видимо в "голову не пришло", а то что пришло пример который вообще совместимостью не рассматривается.





    Ну дык зачем тогда и говорить дальше, тебе и без меня хорошо :)

    Нет, серьёзно, я дал тебе насколько мог IMHO дельный совет, список литературы который ты прилогаешь в большинстве источников содержит ошибки. Лучшее что может быть, постараться найти Григорьева, и ознакомившись попробывать описать тему заново. Тем более язык лёгкий, видно желание структуированого подхода, что может только приветсвоваться. Остаётся познакомится с предметной частью, по более точным и полным источникам.



    Ну начну я дальше читать, на каждую фразу буду писать по десять. Получится что мне прийдётся просто описать за тебя всю работу защищённого режима, а у меня нет времени сейчас нет докончить даже то, что я когда то собирался публиковать.



    Я же выше уже указал ошибки на твоё упоминание про TSS, ошибки эти грубые, настраивают меня на печальную волну о "плотности" ошибок. Меня сейчас тратить много времени ломает, я когда-то уже посвятил несколько лет выковыривая чужие ошибки, получалось иногда что чуть ли не заново писал за других. Некоторые просто спасибо сказали, некоторые (вроде Крыса) даже строчки пожалели, а у меня мои дела на мёртвой точке посути оставались. Так что править такую статью, боюсь, всё одно что писать заново. Пока вот помог чем мог. Не обессудь если показалось что мало чем.

    Не поленись - поищи Григорьева, это искренний совет.
     
  6. _CC

    _CC New Member

    Публикаций:
    0
    Регистрация:
    27 апр 2005
    Сообщения:
    52
    2NoName:

    >> Множество описаний одной технологии позваляют ее

    >> четче осознавать и лучше применять.

    Да, кстати, так и есть..

    Читая того же Григорьева ты просто тонешь во всех деталях и нюансах, с трудом осознавая основные логические связи и принципы; но когда начинаешь читать другой источник, описывающий все это поэтапно, без излишних подробностей - все сразу становится на свои места..
     
  7. yureckor

    yureckor New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    494
    Адрес:
    Russia
    насчет отличий в процессорах- для этого можно посмотреть тесты на железо. Там как раз эти отличия и используются.

    Типа длина конвеера, push sp и др.
     
  8. The Svin

    The Svin New Member

    Публикаций:
    0
    Регистрация:
    6 июл 2003
    Сообщения:
    665
    Адрес:
    Russia
    _CC

    1. Не знаком я с тем, что за подробности у Григорьева лишними называть можно, и кто это будет решать, не зная предмета, что там лишнее, а что - нет.

    2. Ясное и логичное изложение может только приветсвоваться, только кому нужна "ясная и логичная" но неверная теория? :)

    Теория, объясняющая нагревание через введение понятие "теплорода" была понятней молекулярного движения, а представление, что Земля плоская и стоит на трёх китах казалась логичней и понятней закона Кеплера о секторальной скорости. Только кому они нафиг нужны теперь те теории?

    yureckor

    Ну здесь то речь шла о различиях не в процессорах вообще, а в том что касается различий в реализации реального режима в целом классе процессоров (которые просто условно назвали 8086 и 386+) один из которых касался процессоров где появился 32х битный режим, а другой всей группы x86 относящихся к процессорам 16 битным реального времени.

    Т.е. тут речь о формировании адреса, принципах прерываний и тому подобном, о том, о чём говорят, делая различия между режимами.
     
  9. sergh

    sergh New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    128
    Адрес:
    rsdn
    The Svin

    До TSS я ещё не дописал и толком его не знаю. О чем сразу сказал в своём сообщении. Но то что написано - за это я отвечаю. Найдёшь ошибку - будешь молодец.
     
  10. sergh

    sergh New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    128
    Адрес:
    rsdn
    _CC

    Спасибо, примерно это и было моей целью.
     
  11. MCL

    MCL New Member

    Публикаций:
    0
    Регистрация:
    21 апр 2005
    Сообщения:
    21
    sergh

    По-моему ужасная часть "Дескрипторы сегментов кода/данных", точнее само описание дескриптора, какое-то странное обозначение в таблице слово.бит, как-то много "Пока неважно", и в результате какой-то недоделанный рисунок, непонятно с какой стороны на него смотреть, сбоку у двордов написано "0", "4", зачем эти "0", "4", если ты сам ввел обозначение "0", "1", считая двордами, а не байтами?
     
  12. sergh

    sergh New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    128
    Адрес:
    rsdn
    MCL

    Есть правда в твоих словах.

    Но как это сделать красиво я пока не знаю..



    Про картинку и непонятно какую сторону. Мне хотелось чтобы слово, которое в памяти идёт первым, было сверху. При этом мы получаем проблемы с порядком байт в словах. Не знаю что с этим делать.



    А много "пока не важно" - это как раз правильно, имхо. Так как к управлению памятью это всё действительно не относится. Или относится, но не очень нужно :) Хуже того, часть так и останется "неважно" до конца, описывать все флаги я не собираюсь.
     
  13. sergh

    sergh New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    128
    Адрес:
    rsdn
    MCL

    Посмотри новую версию. Я решил не лениться и всё нахрен переделать ;) В смысле, описание дескрипторов. Вроде, стало понятнее.



    Кстати, посмотрел про "пока неважно" - так там всего 9 битов из 64-х :) Не так уж и много.
     
  14. _CC

    _CC New Member

    Публикаций:
    0
    Регистрация:
    27 апр 2005
    Сообщения:
    52
    2The Svin:

    >> Не знаком я с тем, что за подробности

    >> у Григорьева лишними называть можно

    Я хотел сказать, что для человека, впервые столкнувшегося со всеми этими понятиями (а их для новичка будет довольно много), пока не нужны все тонкости и нюансы.. Нужен просто обзор, позволяющий увидеть всю картину, а уже потом можно и углубляться..
     
  15. The Svin

    The Svin New Member

    Публикаций:
    0
    Регистрация:
    6 июл 2003
    Сообщения:
    665
    Адрес:
    Russia




    Вот, как ты думаешь, стиль твоей фразы, которую я только, что процитировал, присуща стилю, обычному для "просто обзоров"?
     
  16. Dark_Master

    Dark_Master Member

    Публикаций:
    0
    Регистрация:
    19 май 2004
    Сообщения:
    32
    Адрес:
    Усть-За###юйск
    Несколько слов про just for fun и практическую применимость protected mode. Совсем недавно (этим летом) я писал проект для WinMagic Inc. Там был полный изврат - надо было сделать возможным вызов real-mode функций bios из защищенного режима.

    Я в свое время по интеловским PDF-ам прошаривался и мне толковый мануал на русском очень пригодился бы.

    Так что это актуально и полезно (планируются еще несколько проектов в этой сфере). Пиши дальше 100%.
     
  17. MCL

    MCL New Member

    Публикаций:
    0
    Регистрация:
    21 апр 2005
    Сообщения:
    21
    Переделаный столбец "положение" в описании дескриптора намного понятней. По поводу "пока неважно" я при своем мнении: кратко нужно описать все поля.
     
  18. sergh

    sergh New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    128
    Адрес:
    rsdn
    MCL

    Не думаю, что смогу переубедить, но хотя бы попытаюсь. Для примера приведу полное (в смысле количества полей) краткое описание. Можешь оценить количество и полезность дополнительной информации. На мой взгляд, полезность (на данном этапе) крайне низкая, а количество неприемлемо велико.



    Два младших байта (нулевой и первый)

    - Segment Limit (part 1)

    - Младшие 16 бит 20-ти битного поля Segment Limit. Поле Segment Limit используется для вычисления размера сегмента, содержит номер последнего блока (блоки нумеруются от 0, размер блока определяет флаг G, см. ниже), являющегося частью сегмента. Алгоритм вычисления размера сегмента отдельно и достаточно подробно описан ниже.

    Второй, третий, четвёртый байты

    - Base Address (part 1)

    - Младшие три байта 32-х битного поля Base Address. Поле Base Address содержит базовый адрес сегмента в линейном адресном пространстве.

    0-й бит пятого байта

    - Access

    - Если к сегменту был доступ, установлен в 1.

    1-й бит пятого байта

    - R/W

    - Для сегмента кода называется R (Read enable), для сегмента данных – W (Write enable). В случае сегмента кода управляет возможностью чтения его содержимого, в случае сегмента данных управляет возможностью модификации. Если флаг установлен, то можно, если нет, то нельзя.

    2-й бит пятого байта

    - Сonforming/Expand down

    - Для сегмента кода это флаг Conforming, он будет рассмотрен в главах, посвящённых защите. Для сегмента данных это флаг Expand Down, он в курсе не рассматривается, так как на мой взгляд пользы от него нет.

    3-й бит пятого байта

    - Code/Data

    - Если флаг установлен, дескриптор описывает сегмента кода, если сброшен – сегмент данных.

    4-й бит пятого байта

    - S

    - Флаг Descriptor Type используется для разделения дескрипторов на системные и сегмента кода/данных.

    5-й – 6-й биты пятого байта

    - DPL

    - Descriptor Priveledge Level, будет рассмотрен в главах, посвящённых защите

    7-й бит пятого байта

    - Segment Present

    - Если бит сброшен в 0, при обращении к дескриптору выбрасывается исключение #NP.

    0-й – 3-й биты шестого байта

    - Segment Limit (part 2)

    - Старшие 4 бита поля Segment Limit.

    4-й бит шестого байта

    - AVL

    - Available. Можете написать сюда что-нибудь своё, система бит игнорирует.

    5-й бит шестого байта

    - 0

    - Должен быть равен 0

    6-й бит шестого байта

    - D/B

    - Для сегмента кода называется D. Регулирует разрядность сегмента кода. Подробнее читайте в приложении. Для сегмента данных называется B. Используется с Expand Down сегментами, в курсе не рассматривается.

    7-й бит шестого байта

    - G

    - Granularity. Флаг гранулярности. Используется для вычисления размера сегмента, определяет, в каких единицах он указан. Если флаг сброшен, размер сегмента указан в байтах, если установлен – в 4096-ти байтных блоках (4096 == 1000h).

    Седьмой байт

    - Base Address (part 2)

    - Старший байт поля Base Address.
     
  19. sergh

    sergh New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    128
    Адрес:
    rsdn
    4-й бит пятого байта

    - S

    - Флаг Descriptor Type используется для разделения дескрипторов на системные и сегмента кода/данных.




    Да, не забывай, что к этому моменту читателям знаком ровно один тип дескрипторов, с системными они пока не встречались.
     
  20. sergh

    sergh New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    128
    Адрес:
    rsdn
    Милый The Svin! Специально для тебя я удалил то самое примечание. Может быть теперь ты обратишь свой многомудрый взор на плоды моих скромных трудов?