SII Блин, ээээ. Ну я под виндой, значит в защищенном. Люди, помогите мне. У меня есть старая паскадеская прога Код (Text): Ptr($1234, $5678); Вот она делает указатель. А мне надо такое написать на Си. Что делать?
(0x1234 << 4) + 0x5678 это? added: посмотрел че делает паскаль, оказывается Ptr($1234, $5678) = $12345678, т.е. на си (0x1234 << 16) + 0x5678
не сильно похоже на защищенный режим.. никогда не видел чтобы так собирались части виртуального адреса) может быть всетаки V86 режим? или это в драйвере с физическими адресами операции?
Ну тогда физический адрес конечно 12345678 или как уже написали (a << 16) | b но в "Си-виндовс" для таких штук надо дров писать =/
facelift Это пример под реальный режим в MS DOS. В Винде такое не пройдёт, там управление памятью совсем по-другому работает. Так что не адрес надо вычислять, а разбираться, для чего это делалось в старой программе. И лишь когда станет ясно, зачем авторам досовской программы это было нужно, можно думать, как то же самое сделать в Винде (и можно ли это вообще сделать).
[/off] SII Great Зря вы ему это вталкиваете. Посмотрите все его посты. Я думаю чел ищет халявы. Сам не пытается даже разобраться в темах которые создает. Так еще и с языками программирования у него огромные проблемы.
Выложи кусок кода побольше. Вещи с DOS на Win32 просто так не переписываются (особенно если адрес указан константой).
придется переписывать полпроги, если не всю. поэтому придется разобраться либо искать кодера который тебе напишет (за $ или за просто так). во втором случае тебе в другой раздел.