Как узнать физический адрес, если есть сегмент + смещение?

Тема в разделе "WASM.HARDWARE", создана пользователем facelift, 26 ноя 2008.

  1. facelift

    facelift New Member

    Публикаций:
    0
    Регистрация:
    18 ноя 2008
    Сообщения:
    25
    Сабж.
     
  2. SII

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

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    В реальном режиме или защищённом? ;)
     
  3. facelift

    facelift New Member

    Публикаций:
    0
    Регистрация:
    18 ноя 2008
    Сообщения:
    25
    SII
    Блин, ээээ. Ну я под виндой, значит в защищенном.

    Люди, помогите мне. У меня есть старая паскадеская прога
    Код (Text):
    1. Ptr($1234, $5678);
    Вот она делает указатель. А мне надо такое написать на Си. Что делать?
     
  4. meduza

    meduza New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    212
    (0x1234 << 4) + 0x5678
    это?

    added: посмотрел че делает паскаль, оказывается Ptr($1234, $5678) = $12345678, т.е. на си (0x1234 << 16) + 0x5678
     
  5. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    не сильно похоже на защищенный режим..
    никогда не видел чтобы так собирались части виртуального адреса)
    может быть всетаки V86 режим? или это в драйвере с физическими адресами операции?
     
  6. facelift

    facelift New Member

    Публикаций:
    0
    Регистрация:
    18 ноя 2008
    Сообщения:
    25
    Great
    Это код из паскалеской проги для доса. Мне его нужно переделать под Си-виндовс.
     
  7. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Ну тогда физический адрес конечно 12345678 или как уже написали (a << 16) | b
    но в "Си-виндовс" для таких штук надо дров писать =/
     
  8. SII

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

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    facelift
    Это пример под реальный режим в MS DOS. В Винде такое не пройдёт, там управление памятью совсем по-другому работает. Так что не адрес надо вычислять, а разбираться, для чего это делалось в старой программе. И лишь когда станет ясно, зачем авторам досовской программы это было нужно, можно думать, как то же самое сделать в Винде (и можно ли это вообще сделать).
     
  9. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.568
    Адрес:
    Russia
    [/off]
    SII
    Great
    Зря вы ему это вталкиваете. Посмотрите все его посты. Я думаю чел ищет халявы. Сам не пытается даже разобраться в темах которые создает. Так еще и с языками программирования у него огромные проблемы.
     
  10. facelift

    facelift New Member

    Публикаций:
    0
    Регистрация:
    18 ноя 2008
    Сообщения:
    25
    TermoSINteZ
    Мне просто срочно надо и времени разбираться у меня нет. Поэтому и суечусь.
     
  11. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    Выложи кусок кода побольше. Вещи с DOS на Win32 просто так не переписываются (особенно если адрес указан константой).
     
  12. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    придется переписывать полпроги, если не всю. поэтому придется разобраться либо искать кодера который тебе напишет (за $ или за просто так). во втором случае тебе в другой раздел.