Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 148 • Страница 4 из 8<  1  2  3  4  5  6  7  8  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 16.03.2006
Откуда: Столица
IgLowy писал(а):
А желание иметь такой массив на 286-м и 386-м тоже удивительно? А на Пентиуме? А на более поздних процах? А размер сегмента не изменился.


Про 286 плохо помню, а про 386 хорошо.
В Real Mode, т.е. изначально при старте, действительно сегмент 64к.
А вот в Protected Mode уже или 1М или 4Г.
К слову, в 386 были недокументированные команды, позволяющие изменить дескриптор сегмента в RealMode.
Т.е., например, увеличить сегмент до 1м.

_________________
"HAF X" - набор букв нравится



Партнер
 

*Cofradia Intel*
Статус: Не в сети
Регистрация: 02.09.2003
Откуда: Россия, г.Тверь
Slavnich
Slavnich писал(а):
В Real Mode, т.е. изначально при старте, действительно сегмент 64к.
При старте чего? Он постоянно 64КБ и другого его размера нет.
Slavnich писал(а):
А вот в Protected Mode уже или 1М или 4Г.
В защищённом режиме нет сегмента. Там как раз идёт уход к линейной адресации.
Slavnich писал(а):
К слову, в 386 были недокументированные команды, позволяющие изменить дескриптор сегмента в RealMode.Т.е., например, увеличить сегмент до 1м.
Коллега, ты бредишь. :) Сегмент только 64К и не больше. Это определяется самой природой адреса. Я уж не говорю о проблематичности использования каких-либо недокументированных команд и их последствий на языках, отличных от ассемблера.

_________________
Жизнь - штука вредная. От неё умирают.
Почётный участник *Cofradia Intel*


 

member+
Статус: Не в сети
Регистрация: 16.01.2004
Откуда: Estonia,Tallinn
IgLowy писал(а):
Я уж не говорю о проблематичности использования каких-либо недокументированных команд

Недокументированные команды существуют, другое дело что ничего страшного они не делали. (просто были не задокументированы так как не особо были нужны)

_________________
X99-TF/E5-2678v3+Evo212/2x16Gb-DDR4-Gloway-TYPE-a@2133-12-13-13-26/GTX1070TI/KINGSTON-SNV2S1000G


 

Member
Статус: Не в сети
Регистрация: 24.12.2005
IgLowy писал(а):
При старте чего? Он постоянно 64КБ и другого его размера нет.
... В защищённом режиме нет сегмента. Там как раз идёт уход к линейной адресации.
Э-э... Рекомендуется почитать мануалы, прежде чем спорить. :) Защищённый режим и модель памяти (адресация) - это несколько разные вещи. В защищённом режиме может быть любая адресация, как с сегментами (32 или 16 разрядными), так и flat модель.
По поводу flat в реальном режиме - поиск по ключу "unreal mode". :) Никаких недокументированных команд нет, есть недокументированная особенность x86-32 процессоров. Даже игры под DOS по-моему делали для этого режима.


 

Advanced member
Статус: Не в сети
Регистрация: 30.08.2003
Откуда: Санкт-Петербург
Билли Бонс
Цитата:
Никаких недокументированных команд нет,

unreal mode - жестокий хак и в принципе работать не обязан. Хотя все уже привыкли, что работает :-)
Slavnich
Цитата:
А вот в Protected Mode уже или 1М или 4Г.

наверное, страницы, которые бывают или 4KB, или 4MB? ;-) а размер сегмента я могу определить КАКОЙ я хочу.

_________________
{:€ дед в законе :-) нородный окодемег
почетный пользователь OpenSuSE 11.3
Ремонт и модернизация ноутбуков IBM (Lenovo) ThinkPad


 

Member
Статус: Не в сети
Регистрация: 24.12.2005
Root Я уточнил терминологию. Недокументированная команда или недокументированная особенность архитектуры? :)


 

Advanced member
Статус: Не в сети
Регистрация: 30.08.2003
Откуда: Санкт-Петербург
Билли Бонс
ну, когда у первых вариантов процессоров пентиум 2*2 не равнялось 4.0, а 3.99999, то сказали, что это ошибка. А тут считается, что это особенность архитектуры. Непорядочек...

_________________
{:€ дед в законе :-) нородный окодемег
почетный пользователь OpenSuSE 11.3
Ремонт и модернизация ноутбуков IBM (Lenovo) ThinkPad


 

Member
Статус: Не в сети
Регистрация: 16.03.2006
Откуда: Столица
IgLowy писал(а):
При старте чего? Он постоянно 64КБ и другого его размера нет.
Slavnich писал(а):
А вот в Protected Mode уже или 1М или 4Г.
В защищённом режиме нет сегмента. Там как раз идёт уход к линейной адресации.
Slavnich писал(а):
К слову, в 386 были недокументированные команды, позволяющие изменить дескриптор сегмента в RealMode.Т.е., например, увеличить сегмент до 1м.
Коллега, ты бредишь. Сегмент только 64К и не больше. Это определяется самой природой адреса.

Уж не знаю, на сколько ты мне коллега. :)

И так, 386 - не только первый 32-битный проц, но еще и первый проц аппаратно ПОЛНОСТЬЮ поддерживает мультизадачность. Что-то я в сторону ушел, сорри..
В защ. режиме 386-го регистры базы - CS, DS, ES,FS,SS - это не базовые адреса сегментов памяти.
Это индексы дескрипторов сегментов в таблицах дескрипторов, глобальной либо локальной - GDT, LDT.
Дескриптор - 64-битный описатель сегмента памяти. Т.е. тип сегмента (кодовый, данных, стек), базовый адрес,
размер и еще всяко разно.
Под размер выделено 20 бит, т.е. 1М. Это в том случае, если не используется механизм страничной адресации.
Страница - 4к. При страничной адресации размер сегмента может быть 1м 4-килобайтных страниц = 4Г.

_________________
"HAF X" - набор букв нравится


 

*Cofradia Intel*
Статус: Не в сети
Регистрация: 02.09.2003
Откуда: Россия, г.Тверь
Vladson
Vladson писал(а):
Недокументированные команды существуют,
А я с этим спорил? Речь была совсем не о том. :) Читай внимательно цитату, на которую ты отвечаешь. :)
Vladson писал(а):
другое дело что ничего страшного они не делали.
А я утверждал, что делали? :)

Билли Бонс
Билли Бонс писал(а):
Рекомендуется почитать мануалы, прежде чем спорить.
Могу в ответ рекомендовать подумать, прежде чем спорить. :) Мануал я давно не читал, нужды в этом нет - ну не работаю давно с подобными вещами. Но зачем переходить в защищённый режим, который позволяет работать с линейным адресом и продолжать работать с сегментами? Каков в этом смысл?
Билли Бонс писал(а):
Никаких недокументированных команд нет, есть недокументированная особенность x86-32 процессоров.
Про недокументированные команды писал не я. Поэтому ответ не по адресу. Но недокументированные команды, насколько помню, существовали в некоторых процессорах.
Что касается unreal mode, то писать программу для этого режима имеет смысл, если твой компилятор поддерживает его. Как я писал выше - нет смысла в командах или режимах, если ты не можешь под них писать программу. Какие компиляторы поддерживали генерацию кода для этого режима? Ассемблер не предлагать. :)

Root
Root писал(а):
у первых вариантов процессоров пентиум 2*2 не равнялось 4.0, а 3.99999,
Это если пользоваться форматом с плавающей точкой. Для точных расчётов рекомендуется использовать формат с фиксированной точкой. Там этот глюк отсутствует.

Slavnich
Slavnich писал(а):
Уж не знаю, на сколько ты мне коллега.
Ну уже по тому, что мы общаемся на одном форуме и оба интересуемся компами уже делает нас коллегами. :) В своё время я занимался программированием. Немного на ассемблере. Совсем немного - надо было оптимизировать некоторые процедурки для Сишных программ. Программировал на Турбо-Си. Потом перешёл на базо-ориентированные языки, в частности - Clarion. Потом переключился на обсулуживание ПО и техники. Последние годы руковожу отделом. :)

Какие-то ньюансы мог и забыть, а что-то совсем не использовал. Поэтому могу и ошибаться. Надо по книжкам проверить.

_________________
Жизнь - штука вредная. От неё умирают.
Почётный участник *Cofradia Intel*


 

Member
Статус: Не в сети
Регистрация: 24.12.2005
IgLowy писал(а):
Но зачем переходить в защищённый режим, который позволяет работать с линейным адресом и продолжать работать с сегментами? Каков в этом смысл?
Затем например, что процессоры, начиная с PII, поддерживают 36-разрядную шину адреса, а в режиме линейной адресации 32-разрядный адрес (т.к. регистры 32-битные), и чтобы использовать память выше 4Гб, придётся пользоваться сегментами.
IgLowy писал(а):
Что касается unreal mode, то писать программу для этого режима имеет смысл, если твой компилятор поддерживает его. Как я писал выше - нет смысла в командах или режимах, если ты не можешь под них писать программу. Какие компиляторы поддерживали генерацию кода для этого режима? Ассемблер не предлагать.
Watcom C++ вроде поддерживал, впрочем я unreal не юзал, поэтому точно не скажу.


 

*Cofradia Intel*
Статус: Не в сети
Регистрация: 02.09.2003
Откуда: Россия, г.Тверь
Билли Бонс Опять же надо иметь средства разработки, поддерживающие выбор этих режимов, настройку сегментов и генерацию машинного кода в зависимости от выбранного метода адресации. Я не в курсе, такие есть?
С компиляторами Watcom не сталкивался.

_________________
Жизнь - штука вредная. От неё умирают.
Почётный участник *Cofradia Intel*


 

Member
Статус: Не в сети
Регистрация: 24.12.2005
IgLowy По идее должен подойти любой 32-битный компилятор, т.к. они все работают во flat режиме. Пишется входная точка на ассемблере, в которой процессор переводится в unreal mode и передаётся управление программе на ЯВУ. Работа в unreal mode полностью совпадает с линейной адресацией в защищённом режиме, поэтому никакие дополнительные ухищрения не нужны. Единственное, где они могут потребоваться, - это обращение к функциям DOS, но написать небольшой враппер на асме труда большого не составляет.


 

*Cofradia Intel*
Статус: Не в сети
Регистрация: 02.09.2003
Откуда: Россия, г.Тверь
Билли Бонс Не уверен, что для любого языка можно написать входную точку на ассемблере. И не уверен, что после этого твоя программа будет вообще работать. Реализация функций и операторов для сегментной адресации и линейной разная. Поэтому все функции работы с памятью придётся модифицировать для работы в этом режиме. Разве нет?
Писать дополнительный код на асме для высокоуровневых языков тоже не всегда удобно, даже когда реализуемо. Попробуй сделать всё это для тех же Clippera, FoxPro или Clarion. В том же Clarion присутствует для каждого режима свой комплект библиотек: 16 бит, защищённый режим 32 бит. Думаю, что для защищённого режима с сегментацией придётся писать новый комплект библиотек.

_________________
Жизнь - штука вредная. От неё умирают.
Почётный участник *Cofradia Intel*


 

Member
Статус: Не в сети
Регистрация: 24.12.2005
IgLowy Ну дык, я же и говорю, что компилятор должен поддерживать flat режим. Входная точка абсолютно без проблем пишется на ассемблере. ЯВУ компилируется в объектник, также как и асм, и всё это линкуется. Ничего сложного. Возможно при работе стандартных аллокаторов памяти и будут какие-нибудь грабли, но опять же выделение памяти - это очень небольшой фрагмент программы. Всякие там кларионы и пр. - это не ко мне. :) А на C++ я всё это реализую без проблем.


 

*Cofradia Intel*
Статус: Не в сети
Регистрация: 02.09.2003
Откуда: Россия, г.Тверь
Билли Бонс Flat режим он поддерживает. Но ты же предлагаешь не его, а реализовать работу с сегментами в защищённом режиме. На режиме адресации стоится всё выделение памяти. И не надо говорить, что это небольшой фрагиент программы. Он может по самому коду небольшой, но без него не будет работать ни одна функция работы с создаваемыми во время работы программы объектами. А в высокоуровневых языках этот код "зашит" в библиотеки. И его не переписать.
Билли Бонс писал(а):
Всякие там кларионы и пр. - это не ко мне.А на C++ я всё это реализую без проблем.
А все эти Кларионы строятся на базе того же Си. В Кларионе вообще линкер одинаковый для всех используемых языков: Кларион, С++, Модула, ассм. Линкуй хоть до посинения. Что с библиотеками делать?
И на С++ тебе придётся делать тоже самое. И проблемы будут.
Может на искуственно созданном примере ты и легко это реализуешь. А что будет при использовании достаточно больших библиотек для серьёзных задач?

_________________
Жизнь - штука вредная. От неё умирают.
Почётный участник *Cofradia Intel*


 

Advanced member
Статус: Не в сети
Регистрация: 20.10.2004
Откуда: С-Пб
lndeo писал(а):
розовый с золотом ITT

ЫЫЫЫ... хочу!!!
Добавлено спустя 45 секунд
а интеловский на мамке - это скорее всего 16ти мегагерцовый - таких аж два есть :)

_________________
Матом не ругаюсь, я на нем разговариваю
интересуют антикварные АМД-системы. писать в ЛС.
НЕНАВИЖУ ASUS!!!
*AMD OverClan*


 

Member
Статус: Не в сети
Регистрация: 24.12.2005
IgLowy
IgLowy писал(а):
Flat режим он поддерживает. Но ты же предлагаешь не его, а реализовать работу с сегментами в защищённом режиме.
Я говорю об unreal mode, а ты о чём? :) С сегментами в защищённом режиме я работать не предлагаю, просто уточнил, что это возможно, а иногда может быть необходимо.

З.Ы. И для "серьёзных" задач, разумеется, использовать недокументированные возможности не стоит. Unreal mode использовался в играх, где все библиотеки создавались самими разработчиками.

З.З.Ы. Про "небольшой фрагмент". :) Я неплохо себе представляю то, о чём говорю. В C++, например, не составляет большого труда использовать нестандартный аллокатор памяти, есть множество библиотек, которые так и поступают с различными целями (для улучшения производительности, например). Реализовать свой аллокатор под любой режим адресации тоже не так трудно, как об этом думают.


 

*Cofradia Intel*
Статус: Не в сети
Регистрация: 02.09.2003
Откуда: Россия, г.Тверь
Билли Бонс
Билли Бонс писал(а):
Я говорю об unreal mode, а ты о чём?
Я о защищённом режиме и смысле использовать в нём сегментную адресацию. :oops:
Билли Бонс писал(а):
В C++, например, не составляет большого труда использовать нестандартный аллокатор памяти
И придётся делать подмену стандартных функций alloc, malloc и т.д. на твои, чтобы все библиотеки её подхватили? А на чём основываются функции работы с масивами? Разве им не понадобиться тоже осуществлять аналогичную подмену?
Это называется - не составляет большого труда? Тут куча вопросов на тему - как это будет работать.
Да и одним С++ дело не ограничивается. Как быть с другими языками?
Билли Бонс писал(а):
Реализовать свой аллокатор под любой режим адресации тоже не так трудно, как об этом думают.
Сомневаюсь. Ты так и не ответил на вопрос - как поведут себя все уже написанные библиотеки в случае такой подмены. А без такого ответа нельзя дать ответ о простоте использования другой адресации.

_________________
Жизнь - штука вредная. От неё умирают.
Почётный участник *Cofradia Intel*


 

Member
Статус: Не в сети
Регистрация: 24.12.2005
IgLowy Что ты так привязался к уже написанным библиотекам? Ты знаешь что-нибудь об ООП, повторном использовании кода, шаблонах, в конце-концов? Ты знаешь, что в C++ можно перегружать операторы new и delete?
Я вот пишу сейчас для sparc, а отлаживаю под Windows (x86, разумеется). Код один и тот же, за исключением небольшого платформенно-зависимого куска, а различия в архитектуре систем намного больше чем между защищённым режимом и unreal или между реальным и unreal. Никакой кучи вопросов почему-то не возникает.
Если тебе очень нужна уже написанная библиотека, перекомпилируй её со своим новым аллокатором и всего делов.

З.Ы. Другие языки меня мало интересуют, да и не в языках дело.


 

*Cofradia Intel*
Статус: Не в сети
Регистрация: 02.09.2003
Откуда: Россия, г.Тверь
Билли Бонс
Билли Бонс писал(а):
Что ты так привязался к уже написанным библиотекам?
Да потому что без них толку от компилятора нет!!!
Билли Бонс писал(а):
Ты знаешь что-нибудь об ООП, повторном использовании кода, шаблонах, в конце-концов? Ты знаешь, что в C++ можно перегружать операторы new и delete?
Знаю. А ты знаешь что-нибудь о других языках программирования или библиотеках не использующих ООП? Что и чем ты там будешь перегружать? И, как понимаю, ты предлагаешь для всех уже имеющихся классов написать новые инициализаторы и деструкторы? Типа, маленькая проблемка. :)
Билли Бонс писал(а):
Никакой кучи вопросов почему-то не возникает.
Всё зависит от того, что ты пишешь. Если речь идёт о математическом алгоритме, то это возможно. Но хотелось бы посмотреть, как ты код написанный под WinAPI запустишь в другой операционке. :) Интерфейсная часть любого ПО не столько процессорозависимая, сколько зависит от операционной системы.
Билли Бонс писал(а):
Если тебе очень нужна уже написанная библиотека, перекомпилируй её со своим новым аллокатором и всего делов.
У меня складывается впечатление, что ты плохо представляешь о чём ты говоришь. Ты учитываешь, что исходников библиотек у тебя нет? Потому что речь идёт о "стандартных" библиотеках, которые идут в комплекте с компилятором и средой разработки: работа с базой данных, построение интерфейса и т.д.
Билли Бонс писал(а):
З.Ы. Другие языки меня мало интересуют, да и не в языках дело.
И в языках тоже. А то что другие языки тебя не интересуют, не значит, что все должны кинуться писать на C++ и перекомпилировать кучу кода. Я тебе сказал, что есть проблемы с использованием сегментации под защищённым режимом и проблемы действительно есть. Ты их не хочешь замечать, потому что ты с ними в своей работе не сталкивался. Но они есть.

_________________
Жизнь - штука вредная. От неё умирают.
Почётный участник *Cofradia Intel*


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 148 • Страница 4 из 8<  1  2  3  4  5  6  7  8  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan