Тогда еще вопрос: а драйвер что это и как он пишеться? ссылку не можете полезную дать?
P.S.: я скомпилил картинку набраную по пикселю(два квадратика) в 13h, запустил и монитор ее не так сильно растянул, почти незаметно. Думаю если драйвер не успею написать или не вычислю номерок этого режима, то использую его.(Побочный эффект - вместо одного пикселя горят 8 о_О)
P.P.S.: как говорил Линус: Вы скорбите по тем временам, когда мужчины были настоящими мужчинами и сами писали драйверы устройств?
Новичок
Драйвер - это 300 строчек кода вместо 3 Вот определение драйвера из Википедии.Tain_Play wrote:Тогда еще вопрос: а драйвер что это и как он пишеться? ссылку не можете полезную дать?
Вот пример из KolibriOS - драйвер для видеокарт Intel GMA, который читает правильное разрешение через EDID, и устанавливает его сам: http://websvn.kolibrios.org/filedetails ... dintel.asm
Может быть, ты сможешь воспользоваться им в своей ОС, если видеокарта тоже Intel GMA.
Драйвером называют код, который пофиг ядру и мешает программе.
ну у меня джифорс 2
Tain_Play wrote:Я для конкурса пишу графическую ос, ...
Tain_Play wrote:... еще вопрос: а драйвер что это и как он пишеться?
У меня еще 4 месяца! и я без них хаороше справлялся(драйвер мыши к примеру я не зная как он называеться написал с подсказками) я не втирал ведь что это "драйвер" а про работу с видюхой это вообще мне не скоро понять
facepalm
http://www.osdev.org/
http://www.osdev.org/
Подскажите как может влиять 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
Unduing
Такая информация без контекста малоинформативна. Лучше показать все исходники, потому что причина может быть совсем не в nop.
Такая информация без контекста малоинформативна. Лучше показать все исходники, потому что причина может быть совсем не в nop.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Unduing
имхо баг может быть только внутри LoadLibraryW - что-то портит бит1 (и возможно, не только его) в адресе возврата.
В первом примере этот бит 1 (1000161A), во втором 0 (1000161С).
Других отличий отсюда не видно.
Смотри что там внутри обращается к [entry_esp+4]
имхо баг может быть только внутри LoadLibraryW - что-то портит бит1 (и возможно, не только его) в адресе возврата.
В первом примере этот бит 1 (1000161A), во втором 0 (1000161С).
Других отличий отсюда не видно.
Смотри что там внутри обращается к [entry_esp+4]
Unduing, а почему так сильно изменилось значение смещения перехода в jmp?
Code: Select all
E975000000 jmp .010001696 --↓4
Code: Select all
E973000000 jmp .010001696 --↓4
0CodErr
Абсолютный адрес перехода остался прежним.
Абсолютный адрес перехода остался прежним.
Last edited by Unduing on Thu Sep 19, 2013 7:44 am, edited 1 time in total.
art_zh
Спасибо, такой момент не учел, но ещё не разу не видел чтобы в коде процедуры использовался адрес вызова.
Спасибо, такой момент не учел, но ещё не разу не видел чтобы в коде процедуры использовался адрес вызова.
Mario_r4
Были бы исходники, думаю вопрос не возник.
Были бы исходники, думаю вопрос не возник.
Проверка целостности кода где-то в другом месте.Unduing wrote:логичных причин почему не работает второй вариант не вижу
Сделаем мир лучше!