Вот недавно закончил такую тему. Осваивал защищенный режим. Ассемблер это конечно сила, но это сила обратно пропорциональна количеству строк кода. Как только это количество начинает зашкаливать за 2-5 тыс. - все. Начинается каша. Так вот. Захотелось мне писать под защищенный режим на С или С++. недолго думая принялся за расширитель к VC .NET. И вот наконец-то появилась рабочая версия.
Создается новый проект, настраивается, к нему добавляется модуль на ASMе, который реализует переключение в PM и возврат из него. Все. Дальше все компилиться и вуаля. На выходе имеем DOS приложение, готовое работать с защищенным режимом.
Однако не так уж все безоблачно. Есть 2 неудобные веши.
1) компиляция. Компилить приходится MASMом 6.11, кроме этого ничего не нашел.
2) организация сегментов в Windows. Они там все с базой 0 и лимитом 4Г, а защита в ВИНДАХ на уровне страниц.
Вот теперь возникает 2 вопроса.
1) У меня в проекте VC настроена генерация ассемблерных листингов. Потом эти листинги подрабатываются (совсем немного) под MASM 6.11 и компиляться им. Вопрос такой. У меня XP SP2 и masm под ней неидет (ни ml.exe ни masm.exe). Народ подскажите, как заставить его работать. Или посоветуйте другой ассемблер, который понимает выходные листинги VC .NET и компилит под ДОС (это самое главное!!!).
2) Как быть с сегментацией. Я допустим, не хочу защиту только на уровне страниц. Я хочу защиту на уровне сегментов! Но VC этого явно не хочет. Если я делаю для разных сегментов разные базы - все!!! Трындец!!! VC генерит исходный код, который работает только в flat модели!!! Что делать!!!
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
каким местом соединяются
newgeneral писал(а):
VC .NET
и защищенный режим процессора и ассемблер???
newgeneral писал(а):
который понимает выходные листинги VC .NET и компилит под ДОС
Ты я надеюсь не на VC++ .NET пытаешся писать? А то ведь на выходе у тебя не ASM будет, а IL!
И вообще по теме асма есть очень хороший сайт. www.wasm.ru .
Вопрос еще один вылез. А зачем тебе вообще все это надо!??? Если ты в Windows работаеш, а не в ДОС?
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
newgeneral писал(а):
был хороший сайт. А теперь нету!
Во блин! Точно накрылся
newgeneral писал(а):
Хорошо технология .NET тут непрчем. Просто я пишу на C, далее VC выдает листинг ассемблера и его я подлинковываю к ядру написанному на ASMе.
Ну теперь более менее понятно.
newgeneral писал(а):
VC генерит исходный код, который работает только в flat модели!!! Что делать!!!
Боюсь, что тут только чистый асм тебе и поможет. Я так понимаю, что VC тебе нуден, чтобы не маятся фигней потсоянно на АСМЕ делаю простые вещи слишком сложными. Тогда сделай так. Основные вещи напиши на VC. Тоесть грубо говоря процедуры, а весь остальной рабочий код уже пиши на АСМ.
Advanced member
Статус: Не в сети Регистрация: 30.08.2003 Откуда: Санкт-Петербург
Цитата:
Потом эти листинги подрабатываются (совсем немного) под MASM 6.11 и компиляться им.
у меня работает. Но у меня версия MASM32 8.2. Да и какой-то ML был в самом пакете VCPP...
Цитата:
Трындец!!! VC генерит исходный код, который работает только в flat модели!!!
ага. В винде действительно flat модель юзается.
Варианты выхода из ситуации - юзать компилеры из пакетов Watcom C и DJGPP. К обоим есть удобная среда разработки, но не гуевая. Почему я о них говорю? А к ним сразу нормальные экстендеры прилагаются и описалово как писать проги под них... Т.е. пишете Сишный код. В настройках среды/компилера/линкера указываете - под защищенный режим, юзать экстендер и все автоматом делается. Никаких извращений и написаний своих асмовых модулей.
Другое дело, что таким образом Вы ограничиваетесь возможностями и недостатками юзаемый там экстендеров, но ASM там тоже поддерживается
_________________ {:€ дед в законе :-) нородный окодемег почетный пользователь OpenSuSE 11.3 Ремонт и модернизация ноутбуков IBM (Lenovo) ThinkPad
Ray Adams Так и придется делать. Спасибо за совет.
Root
Цитата:
у меня работает. Но у меня версия MASM32 8.2. Да и какой-то ML был в самом пакете VCPP...
Я же написал. MASM должен код под дос генерить. А MASM32 этого уже делать не умеет. Так бы я не парился, так как и ml и link есть в VC. Про Watcom я тоже думал, но пока руки не доходили. Но вот экстендеров я точно не желаю юзать! Мне нужно свое ядро. Но всеравно за совет спасибо.
Member
Статус: Не в сети Регистрация: 29.10.2003 Откуда: 埼玉、日本 Фото: 9
newgeneral Зачем вообще на Ассмблере пишете? У нас вот софт для микроконтроллеров иногда даже на Бейсике пишут . Я предпочитаю С либо C++. Думаю, что при желании можно написать на С не менее эффективный код чем на ассемблере. Всё зависит от компилятора. А в ассемблере неужели вы уверены что напишете лучше код, чем генерится Сшным оптимизирующим компилятором? А что под ДОСом, то почему бы не использовать MSC 5.0 или какая там версия под ДОС последняя?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения