Page 2 of 3
Re: Новичок
Posted: Tue Sep 17, 2013 6:44 pm
by Tain_Play
Тогда еще вопрос: а драйвер что это и как он пишеться? ссылку не можете полезную дать?
P.S.: я скомпилил картинку набраную по пикселю(два квадратика) в 13h, запустил и монитор ее не так сильно растянул, почти незаметно. Думаю если драйвер не успею написать или не вычислю номерок этого режима, то использую его.(Побочный эффект - вместо одного пикселя горят 8 о_О)
P.P.S.: как говорил Линус: Вы скорбите по тем временам, когда мужчины были настоящими мужчинами и сами писали драйверы устройств?
Re: Новичок
Posted: Tue Sep 17, 2013 6:53 pm
by yogev_ezra
Tain_Play wrote:Тогда еще вопрос: а драйвер что это и как он пишеться? ссылку не можете полезную дать?
Драйвер - это 300 строчек кода вместо 3
Вот определение драйвера из Википедии.
Вот пример из KolibriOS - драйвер для видеокарт Intel GMA, который читает правильное разрешение через EDID, и устанавливает его сам:
http://websvn.kolibrios.org/filedetails ... dintel.asm
Может быть, ты сможешь воспользоваться им в своей ОС, если видеокарта тоже Intel GMA.
Re: Новичок
Posted: Tue Sep 17, 2013 9:16 pm
by art_zh
Драйвером называют код, который пофиг ядру и мешает программе.
Posted: Tue Sep 17, 2013 9:19 pm
by Tain_Play
ну у меня джифорс 2
Re: Новичок
Posted: Tue Sep 17, 2013 9:22 pm
by art_zh
Tain_Play wrote:Я для конкурса пишу графическую ос, ...
Tain_Play wrote:... еще вопрос: а драйвер что это и как он пишеться?
Re: Новичок
Posted: Wed Sep 18, 2013 11:51 am
by Tain_Play
У меня еще 4 месяца! и я без них хаороше справлялся(драйвер мыши к примеру я не зная как он называеться написал с подсказками) я не втирал ведь что это "драйвер" а про работу с видюхой это вообще мне не скоро понять
Re: Новичок
Posted: Wed Sep 18, 2013 3:52 pm
by Serge
Re: Новичок
Posted: Wed Sep 18, 2013 8:25 pm
by Unduing
Подскажите как может влиять nop на выполнение кода, голову сломал почему
работает:
Code: Select all
.1000160F: 6800300010 push 010003000 ;'► 0 '
.10001614: FF1518200010 call LoadLibraryW
.1000161A: 85C0 test eax,eax
.1000161C: E975000000 jmp .010001696 --↓4
.10001621: 9090 nop
и не работает:
Code: Select all
.1000160F: 9090 nop
.10001611: 6800300010 push 010003000 ;'► 0 '
.10001616: FF1518200010 call LoadLibraryW
.1000161C: 85C0 test eax,eax
.1000161E: E973000000 jmp .010001696 --↓4
логичных причин почему не работает второй вариант не вижу
Re: Новичок
Posted: Thu Sep 19, 2013 12:47 am
by Mario_r4
Unduing
Такая информация без контекста малоинформативна. Лучше показать все исходники, потому что причина может быть совсем не в nop.
Re: Новичок
Posted: Thu Sep 19, 2013 2:30 am
by art_zh
Unduing
имхо баг может быть только внутри LoadLibraryW - что-то портит бит1 (и возможно, не только его) в адресе возврата.
В первом примере этот бит 1 (1000161A), во втором 0 (1000161С).
Других отличий отсюда не видно.
Смотри что там внутри обращается к [entry_esp+4]
Re: Новичок
Posted: Thu Sep 19, 2013 6:49 am
by 0CodErr
Unduing, а почему так сильно изменилось значение смещения перехода в jmp?
Re: Новичок
Posted: Thu Sep 19, 2013 7:38 am
by Unduing
0CodErr
Абсолютный адрес перехода остался прежним.
Re: Новичок
Posted: Thu Sep 19, 2013 7:44 am
by Unduing
art_zh
Спасибо, такой момент не учел, но ещё не разу не видел чтобы в коде процедуры использовался адрес вызова.
Re: Новичок
Posted: Thu Sep 19, 2013 7:46 am
by Unduing
Mario_r4
Были бы исходники, думаю вопрос не возник.
Re: Новичок
Posted: Thu Sep 19, 2013 3:18 pm
by CleverMouse
Unduing wrote:логичных причин почему не работает второй вариант не вижу
Проверка целостности кода где-то в другом месте.