|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
11.07.2010, 17:14 | #1 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Пытаюсь понять код user32.dll и gdi32.dll
Если кто поможет разобраться, буду весьма благодарен.
Интересует такая команда в Delphi: Код:
Код:
Я не силен в тонкостях ассемблера, только поверхностно, и пытаюсь углубляться, ...пока не выходит.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
11.07.2010, 17:39 | #2 |
equ asm
Участник клуба
Регистрация: 02.05.2009
Сообщений: 1,605
|
По аддресу 7FFE0300h находится команда sysenter, которая передает управление в ring0(в ядро ОС). В eax содержится # функции, которая должна выполнится.
|
11.07.2010, 17:39 | #3 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
возвращает результат не она сама, а процедура указатель на которую находится в 7FFE0300h(вроде так расшифровывается call [edx]?)
упростить можно разве что, сразу вызывать sysenter... Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. Последний раз редактировалось Пепел Феникса; 11.07.2010 в 17:42. |
11.07.2010, 18:42 | #4 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Можно как для барана, на примере?
Вот допустим есть команды: Код:
Что, собственно, нужно? Нужно перекинуть код на ассемблере из библиотеки в проект, ...фиг с ней с GetDC, но BitBlt мне нужен более упрощенный и на ассемблере в проекте, где значение флага только SRCCOPY, ...этим убирается куча скачков и проверок я так думаю. Есть дизасемблированные библиотеки. Так же смотрю в сторону SetDIBitsToDevice, возможно, она проще чем BitBlt. Зачем все это? ...я думаю есть возможность воспользоваться, при копировании данных, MMX-регистрами. Вот пример, зачем все это мне нужно. Это простое копирование участка памяти с одного места в другое, по известным указателям, так как это делается в библиотеках: Код:
Код:
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Последний раз редактировалось Stilet; 12.07.2010 в 16:13. |
11.07.2010, 19:13 | #5 |
equ asm
Участник клуба
Регистрация: 02.05.2009
Сообщений: 1,605
|
Код:
|
11.07.2010, 19:16 | #6 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
По 8 байт все равно быстрее будет
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
11.07.2010, 19:19 | #7 |
equ asm
Участник клуба
Регистрация: 02.05.2009
Сообщений: 1,605
|
В вашем случае, кроме пересылок между регистрами идут 2 команды сложения, если на то пошло, то лучше задействовать 4 или 8 xmm регистра, чтобы совпадало с размером линии кэша и реже приходилось складывать.
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4 Последний раз редактировалось Goodwin98; 11.07.2010 в 19:21. |
11.07.2010, 19:24 | #8 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Пост #5 я привел в качестве примера, с этим проблем никаких. Меня интересует пост #4.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
11.07.2010, 19:35 | #9 | |
Непрофессионал
Участник клуба
Регистрация: 01.01.2008
Сообщений: 1,405
|
По поводу команды loop.
Цитата:
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------ Страничка с моими программками http://ulex-masm.ru |
|
11.07.2010, 20:14 | #10 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Хорошо, задам вопрос прямо:
Код:
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Windows I/o без Kernel32.dll и Advapi32.dll | coinkrsk | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 31 | 27.06.2010 08:52 |
ошибка программы internal error in user32.dll??? | grammaton | Помощь студентам | 3 | 23.01.2010 10:07 |
Ошибка при выхове функций Bass.dll из другой DLL | SalasAndriy | Общие вопросы Delphi | 7 | 21.10.2009 23:36 |
Война Авиры и User32.dll | Google[Bot] | Безопасность, Шифрование | 2 | 13.01.2009 18:40 |
Пытаюсь создать Dll для своей проги | Parcenson | Общие вопросы Delphi | 6 | 30.09.2008 20:36 |