IgLowy Да причём здесь сегментация в PM? Я тебе про одно, ты мне о другом. Я говорю про "нереальный" режим, о том что можно написать для него программу с тем же успехом, что и под обычный реальный. Реальный режим - это DOS. "Нереальный" режим - это тоже DOS. Какая ещё, к чёрту, работа с базами данных в стандартной библиотеке, какой интерфейс? Если ты пишешь под винды, то разумеется, нигде кроме виндов ты свою программу не запустишь. А на стандартном языке... Вот назови, например, мне хоть одну функцию из стандарта C++, которая выделяет динамическую память (не шаблонную, конечно же).
Я говорю, что под unreal писали игры. Ты писал когда-нибудь игру под DOS? (Впрочем, о чём я, какие игры на кларионе. ) Так вот игры под DOS писались на C/C++ и ассемблере. Кое-то из совка писал на паскале, но это на статистику не влияет. А знаешь, сколько там кода зависит от системы? Работа с диском и ... и всё. Ах да, ещё выделение памяти. Всё операции с видеокартой (за исключением инициализации видеорежима), звуковой, сетевой и пр. шли напрямую, без участия системы. Так что не надо мне втирать про WinAPI. Причём DOS, вообще говоря, в unreal mode работал. Ничего такого, что не нужно было бы писать при работе в реальном режиме, но нужно в "нереальном", не было. Твои сентенции про другие языки вообще не к месту, я никого не призываю к чему бы то ни было. Ты спрашивал о поддержке нереала языками, я тебе рассказываю, как это сделать на C++. Если кто-то предпочитает другой язык, я думаю, он сам разберётся, что и как ему делать.
З.Ы. Про написание инициализаторов и деструкторов это ты мощно задвинул. Я, конечно, дико извиняюсь, но читать вводный курс лекций по ООП и его реализации в C++ в мои планы не входит.
*Cofradia Intel*
Статус: Не в сети Регистрация: 02.09.2003 Откуда: Россия, г.Тверь
SlavnichБилли Бонс Посмотрел книжку по 386-му. Я был не прав. В защищённом режиме могут использоваться сегменты. Размер сегмента переменный до 4ГБ.
Билли Бонс
Билли Бонс писал(а):
Да причём здесь сегментация в PM?
Потому что речь про неё зашла изначально. Я про "нереальный" режим ничего не знаю и никогда не сталкивался с ним. А ввиду его малой практической полезности нет смысла и говорить о нём. Поэтому мне не понятен весь этот спор.
Билли Бонс писал(а):
Реальный режим - это DOS. "Нереальный" режим - это тоже DOS.
Защищённый режим это тоже ДОС. И что дальше?
Билли Бонс писал(а):
Какая ещё, к чёрту, работа с базами данных в стандартной библиотеке, какой интерфейс?
Очень простые базы и интерфейс. Или ты думаешь, что с ними работают исключительно под Виндовс? Под тот же Си существовали библиотеки для построения интерфейса и работы с форматом dbf.
Билли Бонс писал(а):
Если ты пишешь под винды, то разумеется, нигде кроме виндов ты свою программу не запустишь. А на стандартном языке... Вот назови, например, мне хоть одну функцию из стандарта C++, которая выделяет динамическую память (не шаблонную, конечно же).
А если я пишу под ДОС, то запущу? А причём тут стандартность языка и что считать стандартным языком? Соответствующий стандарту? А что можно написать на таком языке, если дополнительные библиотеки в него не входят? Программист сейчас пользуется не языком, как таковым, а средой разработки, включающей и библиотеки и средства для построения экранов, отчётов и прочие "вкусности", облегчающие работу. И этот переход произошёл уже под ДОС. А доля драйверов весьма мала в общем объёме ПО. А функцию я назвать не смогу. Я уже писал, что не работал с С++, а на Си писал уже давно. Только что это меняет? Понятно, если я не могу ответить на твой вопрос. Непонятно, почему ты, считая себя профессионалом, не можешь дать внятный ответ. Я могу рассуждать с точки зрения дилетанта. При создании объекта ему выделяется память? Выделяется. Функция для выделения вызывается? Вызывается. Она зависит от организации адресации? Зависит. Значит при изменении адресации у тебя два выхода: либо подменяешь стандартные функции на свои, либо переписываешь код, ответственный за инициализацию объекта в памяти. Об этом я и пишу. Что в написанном неверно? А если верно, то отсюда и вытекают проблемы перехода на другую модель адресации. Подмену поддерживают только объектно-ориентированные языки, но не все позволят столь нагло поступать с базовыми функциями и не все языки являются объектно-ориентированными. А изменить исходный код библиотеки не получается из-за отсутствия исходного кода. Опять вопрос: в чём я не прав здесь? Поэтому не стоит иронизировать по поводу инициализаторов и деструкторов.
Билли Бонс писал(а):
Ты писал когда-нибудь игру под DOS? (Впрочем, о чём я, какие игры на кларионе. )
Не писал. А это что-то меняет? Описанный тобой процесс я знаю. Для этого не обязательно самому писать игры. Вот только ты не совсем прав по поводу работы с железом напрямую. Да, напрямую работали, но уже во времена ДОС существовали библиотеки и драйвера, которые стандартизировали работу с видео и аудио. Были и библиотеки в составе средств разработки, например комплект драйверов в ТурбоСи и Паскале для работы в графических режимах. И на Си я эти библиотеки использовал для написания простого графического редактора. Сомневаюсь что полученная программа была столь легко переносима на другие платформы. А эти драйвера использовались и для написания игр в том числе. А первый DOOM имел в составе библиотеку для работы с дополнителной памятью за пределами 640КБ. Хочешь сказать, что он тоже легко запустился бы на другой платформе? А библиотека использовалась не только в DOOM-е.
Билли Бонс писал(а):
А пишу я, кстати, драйвер usb-флешки.
Т.е. программу, которая не использует интерфейса и ни с чем, кроме самого железа не работает. О чём я и писал. Только пальцы не слишком раздвигай, а то в экран уже не помещаются. А за ехидство можешь и схлопотать. Потому что до Клариона я писал на Си. Да и на Кларионе я могу написать игрушку, только это не мой профиль. Если не знаешь возможности Клариона, то это твои проблемы. Разумеется, писать action на нём глупо, для этого есть более удобные средства, но ведь не action единым живы игры. Как насчёт логических игр? Может ты по примеру автора этой темы заведёшь отдельную тему для обсуждения программирования? А то оффтоп уже достаточно серьёзный получается.
_________________ Жизнь - штука вредная. От неё умирают.
Почётный участник *Cofradia Intel*
Я про "нереальный" режим ничего не знаю и никогда не сталкивался с ним. А ввиду его малой практической полезности нет смысла и говорить о нём. Поэтому мне не понятен весь этот спор.
Да мне этот спор тоже непонятен. Я и спорить вообще-то не собирался.
IgLowy писал(а):
Защищённый режим это тоже ДОС. И что дальше?
DOS в защищённом режиме не работает.
IgLowy писал(а):
При создании объекта ему выделяется память? Выделяется. Функция для выделения вызывается? Вызывается. Она зависит от организации адресации? Зависит. Значит при изменении адресации у тебя два выхода: либо подменяешь стандартные функции на свои, либо переписываешь код, ответственный за инициализацию объекта в памяти. Об этом я и пишу. Что в написанном неверно?
Есть три способа выделения памяти - статическая память (она же глобальная), стековая (локальные переменные) и динамическая (куча и пр.). Так вот динамическая память (для которой и нужно что-то менять) используется либо при выделении очень большого массива, либо для работы с абстрактными классами, либо для долговременного хранения и использования объекта несколькими несвязанными функциями (т.е. не вызываемых одна другой). Ни один из этих вариантов для стандартных функций не подходит (в C++ по крайней мере, в других не знаю; в C++ с динамической памятью работают контейнеры, но они все шаблонные).
IgLowy писал(а):
А первый DOOM имел в составе библиотеку для работы с дополнителной памятью за пределами 640КБ. Хочешь сказать, что он тоже легко запустился бы на другой платформе? А библиотека использовалась не только в DOOM-е.
Первый DOOM работал в защищённом режиме. Ему анреал не нужен. Я поясню ещё раз. Я вовсе не утверждаю, что любую программу можно переделать под любую систему, я говорю, что можно написать программу на C++, которая будет работать в анреале. Не ты ли это написал: "Что касается unreal mode, то писать программу для этого режима имеет смысл, если твой компилятор поддерживает его. Как я писал выше - нет смысла в командах или режимах, если ты не можешь под них писать программу. Какие компиляторы поддерживали генерацию кода для этого режима? Ассемблер не предлагать."? А потом свернул куда-то в другую степь.
З.Ы. За мои пальцы не волнуйся. Сам спросил, что я пишу. Платформенно-зависимы по-твоему только интерфейсные функции? Ты сильно ошибаешься.
*Cofradia Intel*
Статус: Не в сети Регистрация: 02.09.2003 Откуда: Россия, г.Тверь
Билли Бонс
Билли Бонс писал(а):
Да мне этот спор тоже непонятен. Я и спорить вообще-то не собирался.
И я не собирался. Давай закончим? Ну не могу я спорить о нереальном режиме, о котором только в этой теме и узнал.
Билли Бонс писал(а):
DOS в защищённом режиме не работает.
Билли Бонс писал(а):
Первый DOOM работал в защищённом режиме.
А первый DOOM не ДОСовская задача? Можно было писать под ДОС для защищённого режима. Все основные средства разработки под ДОС поддерживали этот режим: Си, Паскаль, базо-ориентированные языки.
Билли Бонс писал(а):
Есть три способа выделения памяти
Знаю. Но разве это противоречит написанному мной?
Билли Бонс писал(а):
Ни один из этих вариантов для стандартных функций не подходит
У меня большое подозрение, что функции С++ используют в конечном итоге стандартные функции alloc и malloc, а те, в свою очередь, обращаются к соответствующим прерываниям ДОС. Много раз сталкивался именно с таким подходом разработчиков стандартных библиотек.
Билли Бонс писал(а):
Я вовсе не утверждаю, что любую программу можно переделать под любую систему, я говорю, что можно написать программу на C++, которая будет работать в анреале.
Ну давай на этом и остановимся, т.к. с этим я согласен. А на других языках всё будет зависеть от самого языка и поддерживающих его компиляторов.
Билли Бонс писал(а):
А потом свернул куда-то в другую степь.
Согласен. Из-за этого и непонятки возникают.
Билли Бонс писал(а):
Платформенно-зависимы по-твоему только интерфейсные функции? Ты сильно ошибаешься.
А я не говорил, что только они платформенно-зависимы. Поэтому не ошибаюсь. Для примера и этого достаточно, а вспоминать всё лень.
_________________ Жизнь - штука вредная. От неё умирают.
Почётный участник *Cofradia Intel*
У меня большое подозрение, что функции С++ используют в конечном итоге стандартные функции alloc и malloc, а те, в свою очередь, обращаются к соответствующим прерываниям ДОС. Много раз сталкивался именно с таким подходом разработчиков стандартных библиотек.
Ты не прав. Ни одна функция (что C, что C++), за исключением шаблонов-контейнеров (в которых аллокатор задаётся параметром шаблона), не выделяет динамическую память. Все они работают с буфером, который передаётся параметром.
Работа с DOS в защищённом режиме - это отдельная тема. Всё, всё, заканчиваю.
а кроме того, в DOS инетерснее - Расширенный Реальный режим.
это когда переключаешься в Защищенный, а потом обратно, "забыв" вернуть указатели памяти в "куцее" положение
*Cofradia Intel*
Статус: Не в сети Регистрация: 02.09.2003 Откуда: Россия, г.Тверь
Билли Бонс Ну да. Точнее сказать, менеджер памяти поддерживал переход программ в такой режим. На Си мне не довелось таким попользоваться, а в Кларионе пользовался и активно.
Насчёт указателей ничего сказать не могу, за меня Кларион это делал и, вроде, корректно.
_________________ Жизнь - штука вредная. От неё умирают.
Почётный участник *Cofradia Intel*
Давайте переводите процессор в защищённый режим и вызывайте int21h, получите замечательнейшее исключение, приводящее скорее всего к сбросу или зависону. То, что там у вас работает, это специальная программа - расширитель DOS (DOS extender), который перехватывает эти прерывания и переводит процессор назад в реальный режим и только потом вызывает настоящее int21h (или другое, какое вызовете). Господа, что вы пытаетесь доказать? А "Расширенный Реальный режим", о котором нам пытался поведать господин BasileyOne, в просторечье называется "нереальным".
*Cofradia Intel*
Статус: Не в сети Регистрация: 02.09.2003 Откуда: Россия, г.Тверь
Билли Бонс Лично я ничего не пытаюсь. Речь именно о DOS extender-е. И он действительно переводит проц из режима в режим. Но пользовательская программа работает при этом в защищённом режиме?
_________________ Жизнь - штука вредная. От неё умирают.
Почётный участник *Cofradia Intel*
Member
Статус: Не в сети Регистрация: 28.01.2006 Откуда: Империя Зла!
Билли Бонс писал(а):
Давайте переводите процессор в защищённый режим
8086/88 неимеет защищенного режима,только режим реального времени.
с 286го пошли другие режимы,а на всю катушку с 386.
_________________ Слушайте последние новости. Безработица снижается, акции растут, а ООН только что объявила про мир на всей планете! А теперь настоящие новости.
*Cofradia Intel*
Статус: Не в сети Регистрация: 02.09.2003 Откуда: Россия, г.Тверь
Билли Бонс В смысле само ядро ДОС? Не работает.
Но я и не писал, что ДОС работает в нём. Об этом писал BasileyOne. А я предположил, что он имеет ввиду возможность работы в этом режиме пользовательских программ.
Хотя, может он не это имел ввиду.
_________________ Жизнь - штука вредная. От неё умирают.
Почётный участник *Cofradia Intel*
*Cofradia Intel*
Статус: Не в сети Регистрация: 02.09.2003 Откуда: Россия, г.Тверь
BasileyOne
BasileyOne писал(а):
экстендер, не экстендер - какая разница ?
Разница есть. Её и упомянул Билли Бонс. Для работы ДОС в защищённом режиме надо заменить ядро ДОС - библиотеки прерываний DOS, BIOS и коммандный интерпретатор. Для работы экстендера этого не требуется.
BasileyOne писал(а):
еще задолго до появления OS/2
А каков год появления PTS-DOS и упомянутой модификации DR-DOS? И какова степень их распространённости?
_________________ Жизнь - штука вредная. От неё умирают.
Почётный участник *Cofradia Intel*
Member
Статус: Не в сети Регистрация: 16.03.2006 Откуда: Столица
Как я материл производителей софта!
Когда 20 лет назад вставлял в Си ассемблерные 32-битные куски для ускорения ариф. вычислений.
Но эффект был! Значительный!!!
И только через 10 лет появилась первая убогая ОС под 32 бита.
Сколько лет к тому времени исполнилось 386-му? Лет 13?
Так кого надо ругать в первую очередь? Интел или Майкрософт?
Т.е. железячников или программеров?
И еще.
Почему производители как железа (IBM РС), так и софта плюют на рекомендации производителя процессора?
И в итоге получается что-то горбатое.
А знаете какие прекрасные вещи делал сам Интел на базе своих же изделий?
Кто знает iPDS? Intelec II? Intelec III и IV? Замечательные были вещи...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения