LinuxForum.Fans
Тема

Работа с видеопамятью в GNU Assembler

Автор: MrCoast 7 сообщений 2497 просмотров
#165371

Доброго времени суток всем форумчанам.
Вопрос стал так: если среди нас хорошие знатоки GNU Assemler'a
(того самого у которого синтаксис AT&T)?
Нужна наводка вот в чём.

Каким образом на GNU ассемблере получать доступ на чтение / запись
к видеопамяти?
В частности, как например сделать скриншот экрана?

Буду очень признателен тем кто скажет нечто дельное по этому вопросу.

#165528

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

ЗЫ: ИРЛ GAS используется только для функций инициализации ядра и архитектурно-зависимого кода, зачем он простым смертным - не знаю... есть же си.

#165562

про апи иксов я и сам догадывался, да и си не проблема...
интересовало вот как именно на ГАСе сделать и можно ли вообще?)
а разве нельзя никак переключиться в защищённый режим и хотя бы считать пикселы оттуда (зная адрес начала блока памяти, где хранится изображение на экране)?
просто насколько я знаю, у виндузятников вроде с этим траблов нет особых
они читают начиная с какого-то там адреса и пишут в файл

#165604
MrCoast написал:
про апи иксов я и сам догадывался, да и си не проблема...
интересовало вот как именно на ГАСе сделать и можно ли вообще?)

в чём проблема? вызывайте те же функции из asm-кода... только вот зачем оно надо.

MrCoast написал:
а разве нельзя никак переключиться в защищённый режим и хотя бы считать пикселы оттуда (зная адрес начала блока памяти, где хранится изображение на экране)?

что тут сказать... срочно учите матчасть, по меньшей мере что есть защищённый, а что реальный режим... И в полноценных ОС всё несколько сложнее, чем один буфер расположенный по статическому адресу.

MrCoast написал:
просто насколько я знаю, у виндузятников вроде с этим траблов нет особых
они читают начиная с какого-то там адреса и пишут в файл

такие фокусы проходили только в старом добром досе, работающем в реальном режиме)))

#165650

Fat-Zer, абсолютно с вами согласен...

#165883

Господа, а что скажете по поводу ВОТ ЭТОГО:
http://osdev.ru/viewtopic.php?f=6&t=335
?

что они пытаются сделать в тех примерах?

#165891
MrCoast написал:
Господа, а что скажете по поводу ВОТ ЭТОГО:
http://osdev.ru/viewtopic.php?f=6&t=335
?

что они пытаются сделать в тех примерах?

они пытаются написать очередной загрузчик. т.е. программу, которая выполняется сразу после старта компьютера. Ещё ДО загрузки OS.

MrCoast написал:
Вопрос стал так: если среди нас хорошие знатоки GNU Assemler'a
(того самого у которого синтаксис AT&T)?

какая разница, как записан ассемблерный код? вы можете его записать вообще в 16ричном виде, он от этого не изменится. Кстати, я тут уже демонстрировал дизассемблер с нормальным кодом: http://hte.sourceforge.net/
Я точно не помню, но вроде gcc отлично понимает не только AT&T синтаксис.

MrCoast написал:
Каким образом на GNU ассемблере получать доступ на чтение / запись
к видеопамяти?
В частности, как например сделать скриншот экрана?

*вне ОС (например в загрузчике) - тупо взять и прочитать.
*внутри ОС можно из ядра(модуля) прочитать. но это неблагодарное занятие - видях как грязи, и все они разные.
*ну и можно попросить драйвер видяхи прочитать. стандартным API.

Войдите или зарегистрируйтесь, чтобы ответить.