Доброго времени суток всем форумчанам.
Вопрос стал так: если среди нас хорошие знатоки GNU Assemler'a
(того самого у которого синтаксис AT&T)?
Нужна наводка вот в чём.
Каким образом на GNU ассемблере получать доступ на чтение / запись
к видеопамяти?
В частности, как например сделать скриншот экрана?
Буду очень признателен тем кто скажет нечто дельное по этому вопросу.
Работа с видеопамятью в GNU Assembler
прямой доступ к видеопамяти возможен только из кода ядра и то придётся так извратится, что этого лучше не делать.
а как сделать скриншот - гуглите в сторону апи иксов... для консоли, если она фреймбуферная то может что-то и получится, а если обычная, то вряд ли...
ЗЫ: ИРЛ GAS используется только для функций инициализации ядра и архитектурно-зависимого кода, зачем он простым смертным - не знаю... есть же си.
про апи иксов я и сам догадывался, да и си не проблема...
интересовало вот как именно на ГАСе сделать и можно ли вообще?)
а разве нельзя никак переключиться в защищённый режим и хотя бы считать пикселы оттуда (зная адрес начала блока памяти, где хранится изображение на экране)?
просто насколько я знаю, у виндузятников вроде с этим траблов нет особых
они читают начиная с какого-то там адреса и пишут в файл
про апи иксов я и сам догадывался, да и си не проблема...
интересовало вот как именно на ГАСе сделать и можно ли вообще?)
в чём проблема? вызывайте те же функции из asm-кода... только вот зачем оно надо.
а разве нельзя никак переключиться в защищённый режим и хотя бы считать пикселы оттуда (зная адрес начала блока памяти, где хранится изображение на экране)?
что тут сказать... срочно учите матчасть, по меньшей мере что есть защищённый, а что реальный режим... И в полноценных ОС всё несколько сложнее, чем один буфер расположенный по статическому адресу.
просто насколько я знаю, у виндузятников вроде с этим траблов нет особых
они читают начиная с какого-то там адреса и пишут в файл
такие фокусы проходили только в старом добром досе, работающем в реальном режиме)))
Fat-Zer, абсолютно с вами согласен...
Господа, а что скажете по поводу ВОТ ЭТОГО:
http://osdev.ru/viewtopic.php?f=6&t=335
?
что они пытаются сделать в тех примерах?
Господа, а что скажете по поводу ВОТ ЭТОГО:
http://osdev.ru/viewtopic.php?f=6&t=335
?
что они пытаются сделать в тех примерах?
они пытаются написать очередной загрузчик. т.е. программу, которая выполняется сразу после старта компьютера. Ещё ДО загрузки OS.
Вопрос стал так: если среди нас хорошие знатоки GNU Assemler'a
(того самого у которого синтаксис AT&T)?
какая разница, как записан ассемблерный код? вы можете его записать вообще в 16ричном виде, он от этого не изменится. Кстати, я тут уже демонстрировал дизассемблер с нормальным кодом: http://hte.sourceforge.net/
Я точно не помню, но вроде gcc отлично понимает не только AT&T синтаксис.
Каким образом на GNU ассемблере получать доступ на чтение / запись
к видеопамяти?
В частности, как например сделать скриншот экрана?
*вне ОС (например в загрузчике) - тупо взять и прочитать.
*внутри ОС можно из ядра(модуля) прочитать. но это неблагодарное занятие - видях как грязи, и все они разные.
*ну и можно попросить драйвер видяхи прочитать. стандартным API.