|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
19.08.2011, 16:16 | #21 |
Форумчанин
Регистрация: 28.05.2011
Сообщений: 309
|
push 0x0A000
pop es mov al, 13h int 10h stosw mov cx, 320 * 200 / 2 @ @: rdtsc mov bp, ax stosb loop @b ребят поясните етот код.. push 0x0A000 pop es ето пересылка по стеку.. в ес теперь адрес.. mov al, 13h int 10h вывод строки символов.. stosw а ето что??! не могу понять зачем ето тут.. и rdtsc.. и все остальное..
Спеши медленно.
|
19.08.2011, 18:32 | #22 |
Форумчанин
Регистрация: 30.10.2009
Сообщений: 114
|
asmars
Единственное, что тут может быть непонятно, так это stosw, старый грязный хак для обнуления di. |
19.08.2011, 18:41 | #23 | ||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
а вот если блочная операция, то сильно заметна разница. Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
||
19.08.2011, 19:29 | #24 | |
Форумчанин
Регистрация: 30.10.2009
Сообщений: 114
|
Цитата:
|
|
19.08.2011, 19:46 | #25 | ||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Цитата:
я ему про функцию 0Ch(в винапи аналог SetPixel), а он мне про свой пример... Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
||
19.08.2011, 19:50 | #26 |
Форумчанин
Регистрация: 30.10.2009
Сообщений: 114
|
Все понятно. Слив засчитан.
|
19.08.2011, 20:06 | #27 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
какой слив?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
19.08.2011, 21:05 | #28 |
Форумчанин
Регистрация: 28.05.2011
Сообщений: 309
|
ребят поясните код.. принцип.. я вообще не понимаю при чем здесь регистр di.. и так далее.
push 0x0A000 pop es mov al, 13h int 10h stosw mov cx, 320 * 200 / 2 @ @: rdtsc mov bp, ax stosb loop @b
Спеши медленно.
|
23.01.2015, 15:35 | #29 |
Регистрация: 12.11.2014
Сообщений: 4
|
Чувак, у меня тоже такая идея раньше была.
Я тоже когда учился в инсте и впервые увидел первые поколения видеоускорителей 3D графики задался вопросом, а как выглядят двоичные машинные команды при выводе 3D?
Но ответа не нашел. То что происходит, скажем, при вызове функции glVertex3f я думаю можно посмотреть в отладчике уровня ядра(WinDbg). Парень, я не помню точно кода но то что удалось нагуглить счас по поводу создания окна на асме http://www.cyberforum.ru/assembler/thread324485.html У меня дома есть книжка по асму в винде, я могу потом скопипастить оттуда нормальный асм код по поводу создания окна. То же самое по подобию создания окна тебе надо сделать чтобы создать контекст OpenGL. (нужно знать в какой системной дллке содержится wglGetProcAddress, wglCreateContext и т.д.) То же самое - только из дллки opengl32.dll нужно инициализировать начальное состояние Opengl и вывести треуголник glBegin() glEnd() Попробуй найди демку на С++, скомпилируй запусти, убедись что работает. Не спеши с портированием на асм, возможно ОпенГл-вызовы ты сможешь найти напрямую в собранном из С++ exe'шнике - во всяком случае там может быть что то вроде аналога PFNGLVERTEXBLABLABLA glVertex = GetProcAddress("glVertex"); только на асме, то есть в бинарном коде ты смогешь найти только строку "glVertex", ясно? Конструкция нетривиальная (то есть вызов происходит не там где ты увидишь эту строку, эта строка находится там где происходит линковка с дллкой) Ну или портани на асм если разобраться в витиеватостях компилятора будет сложно. Хотя твои оппоненты правы - тот асм код который ты сможешь надебажить и посмотреть, будет актуален только к твоей видеокарте и конфигурации ОС. Грубо говоря, при вызове скажем glVertex ты залезешь в драйвер видюхи. Хотя glVertex это древняя древность и поддерживается даже виндой, т.к. это OpenGL1.0, поэтому у меня подозрение что двоичный код glVertex уже на всех видеокартах и всех конфигурациях одинаков. Попробуй что нибудь из расширений OpenGL например glCompileShader, glAttachShader, glUseProgramm или glVertexPointer, glNormalPointer. |
23.01.2015, 15:38 | #30 |
Регистрация: 12.11.2014
Сообщений: 4
|
Блин еще где то статья охрененная была, там на асме чувак без ОС запускал рендеринг полигона чтоль.
Ппц запутанная из 100500 частей, я так и не помню как он именно рендеринг осуществлял |
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
работа с wav на низком уровне | vsrmis | Мультимедиа в Delphi | 10 | 15.01.2011 01:13 |
Ассемблер, программирование видеоадаптера | IgorM | Помощь студентам | 0 | 23.12.2010 19:28 |
МАЛЕНЬКАЯ ПРОБЛЕМКА С ГРАФИКОЙ НА НИЗКОМ УРОВНЕ | Костик++ | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 6 | 17.11.2010 21:00 |
Работа с файлами на низком уровне | JamS007 | Общие вопросы C/C++ | 15 | 26.05.2009 21:17 |
Работа на низком уровне | Prowler | Работа с сетью в Delphi | 2 | 26.12.2006 06:29 |