1. Если вы только начинаете программировать на ассемблере и не знаете с чего начать, тогда попробуйте среду разработки ASM Visual IDE
    (c) на правах рекламы
    Скрыть объявление

Пространства адресов

Тема в разделе "WASM.BEGINNERS", создана пользователем defaultplayer, 28 дек 2008.

  1. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    AndreyMust19
    Пишете полную ерунду.
    Реально IA-32 НЕ позволяет создавать четырёхгигабайтовые сегменты непересекающимися. Виртуальное АП процесса Windows под IA-32 - 4 ГБ. Точка. Обсуждению не подлежит.
    И вообще 24 ГБ - это размер никакого АП. Ни виртуального, ни линейного, ни даже ещё не введённого логического.
    defaultplayer
    Множество адресов в каждом сегменте? Каких адресов? Логических или линейных? Если логических, то для каждого сегмента ровно 2^32 (4 ГБ) логических адресов. Если линейных, то оно может быть всегда разным, зависит от базы и лимита и нельзя говорить о "каждом" сегменте. В любом случае не получатся указанные Вами (а также просроченной документацией Intel) 2^46.
    Короче, мне не нравится. :-)
     
  2. defaultplayer

    defaultplayer New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    214
    l_inc
    мы с вами зациклились на том, что есть либо логический, либо линейный, и ранее оффсет считали за часть адреса, а не за самостоятельный адрес, потокая этим SII. Пораскинув мозгом, и почитав мсдн прихожу к выводу что оффсет это самостоятельный segment-relative address в терминологии майкрософт и offset в терминологии интел.
    Поэтому логическое АП - это множество segment-relative адресов в каждом сегменте, как вам такое?

    Теперь SII может смело сказать, что виртуальный адрес это непросто "смещение из состава логического адреса", он может сказать виртуальный адрес - это segment-relative address, но!!

    перевод мой, не дословный а передающий смысл:

    поясню, так как сходу может быть непонятным. Предположим что программа оперировала segment-relative адресом 3, который указывал на байт в физической памяти 3, для того чтобы он указывал на байт в физической памяти 4, нужно либо оперировать селекторами сегментов, сдвигая сегмент на 1 байт вперед, либо корректировать адрес на 4, что неприемлемо. В цитате написано, что это ограничение на первый взгляд, и для того чтобы от него уйти используется виртуальная адресация.
     
  3. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    defaultplayer
    Не совсем точно. VMM не использует (using) виртуальную адресацию, а реализует (implementing). Речь, насколько помню, о том, что перемещение областей памяти без коррекции адресов достигается за счёт страничного механизма (у Вас цитата обрывается).
     
  4. defaultplayer

    defaultplayer New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    214
    SII
    да вы сам смысл поймите, майкрософт везде где-только я ненаходил, не отождествляет понятие segment-relative address и virtual address, она говорит либо конвертится тот в тот, либо говорит о том, а потом о другом, а не подменяя эти термины друг другом. На это я пытаюсь акцентировать ваше внимание, но вы абсолютно игнорируете, выдавая свои предположения. Дайте хоть одну ссылку где она отождествляет эти два термина..
     
  5. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    defaultplayer
    Может, дадите ссылку, где я отождествлял эти два термина? Или хотя бы где я использовал термин segment-relative address?
     
  6. defaultplayer

    defaultplayer New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    214
    SII
    мда, вы именно конкретно под дурачка косите, а может и не косите вовсе.
    segment-relative address это offset по интел, да и по майкрософт тоже, 32 разрядный адрес, часть 48-ми разрядного логического адреса

    SII написал
     
  7. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    l_inc
    Это потому что в Windows адресное пространство приложения представляет собой один регион размером в 4 Гигабайта, в котором все сегменты (кроме FS) начинаются с одного и того же линейного адреса и имеют размер в 4 Гб (плоская память):
    [​IMG]
    Правда последние 2 Гб доступны только из ring0.

    А IA-32 позволят сделать так:
    [​IMG]
    Так что ничего не ерунда!!!
     
  8. defaultplayer

    defaultplayer New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    214
    AndreyMust19
    ой, потрите эти картинки и никому больше непоказывайте, сегментный регистр это еще не сегмент, подумайте над этим
     
  9. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    НуЁмоЁ!!! Да знаю я - просто названия дал! Чего вы все время придираетесь ко всякой мелочи??? Если хотите чтобы я с сайта свалил, то не свалю!!!
     
  10. defaultplayer

    defaultplayer New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    214
    AndreyMust19
    не, все верно, название, размер ап, все верно, только 24ГБ - это размер логического АП, к которому можно обратиться без перезагрузки сегментов, при условии что они максимальные. Размер логического ап прикладной программы в виндоус это 8Гб+4кб, а то пространство, в котором сегменты перекрываются называется виртуальным(линейным). Но об этом и весь спор, что называть виртуальным, то что 24Гб или то что 4гб.
     
  11. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    defaultplayer
    Об этом я уже 3 поста подряд хочу сказать. И обязательно кто-то придерется!
    Виртуальный - есть фактический, тот объем адресного пространства, который может адресовать машинные команды программы через все сегменты. То есть глобально - сколько гигабайт смогут использовать команды программы, не изменяя сегментов. В Windows - 4 Гигабайта. Но практически процессор позволяется программе и больше (24 Гб).
    Мда, спор еще далеко не закончен... Еще много непоняток нужно уяснить всем усомнившимся (в хорошем смысле). Я думаю, через пару дней эту тему выделят.
     
  12. defaultplayer

    defaultplayer New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    214
    AndreyMust19
    цитата из твоего поста вчера #192
    из него видно что ты называешь 24Гб - виртуальным АП. В своем ответе тебе я пытаюсь сказать что 24Гб это логическое ап, после чего ты говоришь что это я и пытался сказать. Ты определись все таки 24Гб это то, что ты сказал в посте #192 или в последнем своем посте, чтобы как ты выразился к тебе не придерались из-за разногласий твоего же мозга.
     
  13. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    AndreyMust19
    никакого спора тут нет и быть не может :)) - есть только бредовые высказывания некоторых товарисчей, поленившихся почитать хоть что нибудь прежде чем писать cвои домыслы ;)
    Во первых сегментов в отличие от сегментнх регистров не 6 а намного больше - в реальном режиме их 65535 шт, в защищённом - оооочень много поскольку можно иметь несколько локальных таблиц сегментов и переключать их так же легко как и загружать сегментный регистр. Но выстраивать их друг за другом как ты хочешь можно только в 286 чтобы адресовать 16Мб ;), а в ИА 32 как с сегментами не мухлюй - линейный адрес 32 разрядный и больше нельзя (лишнее обрезается). Другое дело физический адрес, который может быть 36 разрядным (64Гб), но это достигается отображением страниц памяти, и ничего не меняет в механизме линейной адресации сегмент+смещение, которая всё равно 32 разрядная (4Гб) .
     
  14. defaultplayer

    defaultplayer New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    214
    Y_Mur
    defaultplayer
    Y_Mur
    для того чтобы они неказались бредовыми, нужно с глаз чехлы поснимать, и внимательнее прочитать, после чего пошевелить извилиной, и некоторые условия добавить самостоятельно, так как разжовывать я вам несобираюсь.
     
  15. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    defaultplayer
    и не надо тут AndreyMust19 уже усё разжевал :))) осталось вам только до интеловского произодственного оборудования добраться и его работу малость подкорректировать :)))
     
  16. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    defaultplayer
    Это как-бы мой перевод, а не твой.
     
  17. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Y_Mur
    Почти ни с чем из того, что Вы написали, никто и не собирался спорить. :-) Кроме...
    Во-первых, не сегмент, а селектор сегмента. Во-вторых, не "+", а ":" . Ну и в-третьих, это не линейная, а логическая адресация. Линейный адрес задаётся ровно одним 32-битным числом.

    Но Вы бы хоть не подливали масла-то. AndreyMust19 мешает в кучу виртуальную память, виртуальное АП и логическое АП, сегменты и селекторы сегментов, короче пишет полный бред, а Вы поощряете. :-)

    defaultplayer
    Вообще SII приводит довольно серьёзную аргументацию, я уже не уверен, соглашаться или нет, хотя скользких моментов ещё достаточно. Поэтому лично я просто забиваю на вопрос, чем на IA-32 является виртуальный адрес Microsoft. :-)
    Вообще-то это именно то, что и предлагает SII, - считать оффсет единственно возможной частью адреса в Windows. Мне идея считать смещение самостоятельным адресом не нравится: аппаратно (пусть даже только на IA-32) оно складывается с базой независимо от того, нулевая она или нет. Но это как раз и есть предложение SII.

    Вы просто повторили сказанное в посте 193, так что я по-прежнему не понимаю. :-) Как я уже сказал, мне особенно не нравятся слова "в каждом". Кстати, давая определение логическому АП, сразу говорите о его размере и о том, как он вытекает из определения.
     
  18. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    l_inc
    Термин "линейный адрес" применительно к связке "база сегмента + смещение в нём" используется в книге Ровдо, это конечно не официальный мануал, но всё-же достаточно солидная книга ;) Там же подчёркивается и то что несмотря на возможность сложить 32 битную базу с 32 битным смещением результат суммирования всё равно будет 32 битным (хотя прикольнее было бы если бы сделали как хотят AndreyMust19 & defaultplayer :)) но с практической точки зрения к тому моменту как это будет по настоящему актуально 64битная архитектура уже вытеснит 32битную ;).
    Под сегментом я конечно же имел в виду его базу (по аналогии с реальным режимом), а не селектор, кстати имхо вопрос с чем лучше ассоциировать защищённый сегмент с базой, селектором или дескриптором достаточно открытый и правильными будут все 3 варианта ;)
     
  19. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Y_Mur
    Вообще-то это как раз верно. А вот сегмент + смещение неверно. Вот отчасти от этого тема настолько длинная получается. Кто-то что-то ляпнет, не подумав о формализации высказывания, а потом выясняем три страницы, что имелось в виду и совсем не это.
    Не стоит смешивать AndreyMust19 и defaultplayer. :-) Для AndreyMust19 это одна из многих тем, в которых он за вчера с поразительной скоростью успел наследить. И если не ошибаюсь, во всех темах либо ерунда либо просто не по делу. А defaultplayer, собственно, создал эту тему. И он уж точно не предлагал приписывать биты базы к битам смещения.
    Ну об этом трудно было догадаться в контексте попытки описания PAE.
    ИМХО уж точно не с базой, потому как там и DPL и Limit играют свою роль... ну и, собственно, всё, что описывает сегмент в дескрипторе. А вот с дескриптором или селектором ИМХО не особо важно, т.к. в контексте одного процесса конкретный селектор строго указывает на конкретный дескриптор. Но важно то, что логический адрес - это селектор:смещение по определению, а не дескриптор:смещение.
     
  20. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    l_inc
    какие такие 24Гб, 8Гб+4кб, когда речь идёт всего лишь о махинациях со способом формирования 32битного адреса в пределах 4Гб? или я со своими Ровдо и Рихтером отстал от жизни? и современные процессоры действительно не имеют такого ограничения? или современные версии win32 вот так запросто выделяют 8Гб на задачу вместо привычных 2-3Гб :)))
    Насколько я знаю хоть перезагружай сегментные регистры хоть не перегружай (совершенно не понимаю чего это defaultplayer так серьёзно разделяет случай когда сегментные регистры перезагружаются от случая когда этого нет), а за 4Гб в IA32 не вылезешь - если вдруг реальной памяти больше, то остаётся только вариант создавать в 4Гб адресном пространстве окно в которое подставляются сменные страницы, и других способов адресовать больше 4Гб из одной задачи нету.