С чего начать программирование графики на ассемблере?

Тема в разделе "WASM.BEGINNERS", создана пользователем assemblerist, 12 авг 2010.

  1. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Rockphorr
    Кусок видеопамяти проецируется на оперативную память(посредством шины). Прямого доступа к памяти видеокарты у цпу нет.
     
  2. Phuntik

    Phuntik New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2008
    Сообщения:
    318
    Subrealist
    Спасибо. Мне пригодится ;)
     
  3. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Booster
    А шина по твойму как работает? Работает так. Есть общая шина адресса и шина данных - назвеем их вместе одной шиной адресса/данных. В принципе она идет через все части компьютера.

    Так вот обращаясь по физическим адрессам. Мы попадали либо в RAM либо в железку. Адресса видео карте можно глянуть в диспечере устройств.
    меню "Вид" -> "рессурсы по типу" -> "память". Так вот там адресса то и есть либо память устройств либо регистры отоброженные в память.

    Это физические адресса. В виндоусе используется страничный режим защиты памяти. Поэтому для доступа надо отобразить эту памить.
    Доступ совершенно прямой. ЦПУ спокойно может писать и читать их этой памяти.

    А в досе перейти в защищенный режим и можно обращаться к этой памяти. Если вы сраните этот адрес. И адресс возращаемой VESA то они совпадут.
    Правда виндоус может их и сдвинуть.




    Код (Text):
    1.              +-------+             +----------+
    2.              | RAM   |             | RAM видео|
    3.              +---+---+             +---+------+
    4.                  |                     |
    5. +---+  +---------+-------------+  +-------+------------+   +---------------+
    6. | ЦП|  | Контроллер памяти(КП) |  | Видео карта        |   | биос основной |
    7. +-+-+  +---------+-------------+  +-------+------------+   +-----+---------+
    8.   |              |                        |                      |
    9.   +--------------+------------------------+----------------------+  - шина адресса/данных
    В первых персоональных компьютерах базовой памяти было 32кб-640кб. Фактически было так были чипы ОЗУ. И был дешифратор. Шина адресса предствляет собой провода. Каждый провод это фактически двоичный разряд физическкого адресса. Дешифратор берет старшие разряды A16-A19 вернее проводода, а младшие разряды A0-A15 провода идут на прямую к чипам памяти. Дешифратор выставляет синхро импульс в соотвествии с кодом на нужный чип. Чипы были разные но обычно по 64кб. Т.е от 1 до 10 чипов.

    В видео карте стоял свой дешифратор.

    На первых компьютерах RAM было мло. Поэтому адресса основной памяти и памяти видео карты не перекрывалис. Основная распологалось с 0h до 9FFFFh
    А видео A000h-BFFFFh. Выше лежал биос видео карты C0000h-CFFFFh. Всех все устраивало. По одним и темже проводам можно было. Оброщаться и к видео и основной памяти.

    Код (Text):
    1.                 +-------+             +----------+
    2.                 | RAM   |             | RAM видео|
    3.                 +---+---+             +---+------+
    4.                     |                     |
    5. +---+     +---------+----------+  +-------+------------+   +---------------+
    6. | ЦП+-----+---------*    КП    |  | Видео карта        |   | биос основной |
    7. +-+-+     +---------+----------+  +-------+------------+   +-----+---------+
    8.                     |                     |                      |
    9.                     +---------------------+----------------------+  - шина адресса/данных
    Потом память стало нехватать и стали думать как быть. Решили поставить памяти больше 1МБ. К примеру 2 или 4. И поставить небольшоую микросхему которая в диапазоне от A000h-FFFFFh не будет пропускать сигналы в основную память. Вернее достаточно не пропускать сигнал чтения/запись.
    Тем самым появилась Shadow RAM скрытая память. Появился флаг A20. Который нужен был для совместимости. Если раньше на метеринке было всего 20 линий адресса. А на процесооре можно было выстовить адресс 100000h-10FFFFh т.е 21линии линия была задействованна . Так как считалось от нуля то это будет линия A20. У процессора она бала так вот на материнках ее не было. И если обратиться по такому адрессу то дешифратор его не обрабатывал. И считал что это 0 чип. А после когда добавили памить на материнке добавили еще 4 линии A20-A23. И теперь дешифратор памяти стал отправлять такие адресса в RAM выше первого мегабайта. Разработчики IBM ввели бит совместимости для такого дела.

    А с Shadow Ram разные разработчики поступали по разному. Кто-то сделал так что можно было выбрать куда пойдет сигнал в основую памить или дальше по шине.

    Это было во времена когда основной шиной была ISA. Железячники уже знали схему с дешифраторами И поступили просто они 16 мегабайт отвели под железо. Всебы было хорошо. Но наступила эра PCI.

    Новая шина пришла на смену старой. Шина адресса стала иметь 32 линии.
    Видео карты AGP тоже распологалось на этой шине. И имела сходный с PCI интерфейс.

    И разработчики применили старый излюблинной способ. Одна общая шина через весь компьютер. В каждом устростве свой дешифратор адресса.
    Настала эра SVGA. Только адресс в шефираторе уже небыл фиксированным. А он стал программируемым. И блоки можно перемещать. Собственно этим занимается BIOS. И некоторый ОС тоже. Но это не меняет суть.
    Под все железки PCI отвели четверый гигобайт. Все было хорошо лет 10. Память хоть и росла, но не так быстро.


    Но вот память стало 4ГБ и сново проблемы. Уж больно много 1ГБ отдовать под тень. Фактически не использовать. Так что разработчики придумали переотоброжать память за 4ГБ. Этим занимается контроллер памяти.
    Но дела обстоят так. Виндоус работает с 32 битном защищенном режимом процессора. И получить доступ к памяти за 4ГБ осложняется.
    Фактически все драйвера небыли на это рассчитаны. Да и половина материнских карт не умела переотоброжать память за 4ГБ. Поэтому в виндоусе было решино перегруппировать память отведенную под устройства, так чтобы уплотнить ее. И тем самым увеличить доступную пользователи память.
    Фактически это дало 200-500МБайт.

    Современные видео карты имеют 512 и более МБ. по этому они проицируют только часть памяти. Чтобы сыкономить рессурсы адрессов памяти.
     
  4. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Pavia
    Спасибо, не знал. Только не понял, винда так до сих пор и не отображает видеопамять за 4гб в 32-бит режиме?
     
  5. SII

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

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Если не включен PAE, то не отображает. Как отобразить, если физический адрес всего 32 бита?
     
  6. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    SII
    Что мешает включить?
     
  7. SII

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

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Не каждая версия это поддерживает, хотя семёрка, наверное, любая.
     
  8. Treant

    Treant Member

    Публикаций:
    0
    Регистрация:
    24 май 2009
    Сообщения:
    248
  9. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.622
    Адрес:
    Russia
    l_inc

    не, неправильно жжошь - если читать книги этого направления то пильщикова :)
     
  10. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Rockphorr
    А. Спасибо. :) Абель мне показался "азее" всего, с чем я знаком. Пильщикова никогда в глаза не видел.