Size: a a a

Ассемблер

2021 March 28

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
rep gs movsd (fasm)
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
Сегмент на чтение (lods, movs, cmps) переопределяется, на запись (stos, movs, scas, cmps) - нет.
источник

ST

Saenro T in Ассемблер
Eugene Krasnikov (ᴊɪɴ x)
Только ты через rep movsw (movsd) не скопируешь в fs
Не, es у меня на cs
источник

II

Ira Irina in Ассемблер
disba1ancer
это не двойная буфферизация
Это скорее одинарная буферизация))
источник

ST

Saenro T in Ассемблер
->ram->videoram->monitor
Как по-мне всё же два буфера: ram и videoram
источник

D

Den in Ассемблер
Saenro T
В DOSBOXe на 40к циклах норм идёт)
Красота 😁 а звезды у тебя на fpu считаются?
источник

ST

Saenro T in Ассемблер
Каждое движение не обходится без FPU. В коде всё ещё слишком много воды, в т.ч. и на FPU, надо избавляться от лишнего.
источник

D

Den in Ассемблер
я так примерно, представляю как это звездное небо крутящееся можно было бы на брезенхеме реализовать без fpu но не факт, что это будет быстрее
источник

D

Den in Ассемблер
Eugene Krasnikov (ᴊɪɴ x)
Многие прояснится :)
похоже сама по себе процедура подготовки, передачи данных по pci express шине, хлопотная, а сама передача быстрая, поэтому лучше один раз передать большой блок данных чем множество мелких чтений записей через шину делать?
источник

D

Den in Ассемблер
и копировать наверное, тоже лучше максимально большими блоками, чтобы было меньше итераций т.е с помощью 64x регистров минимум а вот интересно как скопировать какой нить sse3 регистр в ячейку памяти он ведь размером 256 или 512 даже байт (не помню точно)
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
Den
и копировать наверное, тоже лучше максимально большими блоками, чтобы было меньше итераций т.е с помощью 64x регистров минимум а вот интересно как скопировать какой нить sse3 регистр в ячейку памяти он ведь размером 256 или 512 даже байт (не помню точно)
512 ссе не может быть, только вроде avx2
источник

D

Den in Ассемблер
Aiwan ╭∩╮ (òÓ,) ╭∩╮bot
512 ссе не может быть, только вроде avx2
тут где то картинку крассивую кидали со всеми регистрами современных процов счас надо найти глянуть
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
Den
похоже сама по себе процедура подготовки, передачи данных по pci express шине, хлопотная, а сама передача быстрая, поэтому лучше один раз передать большой блок данных чем множество мелких чтений записей через шину делать?
Чтений точно желательно избегать, а записи... не знаю, не тестил скорость рандомных записей против последовательных. Но большими блоками однозначно будет лучше. SSE - 128 бит, AVX - 256. В целом и 32 достаточно обычно, но можно, конечно, и увеличить размер блока.
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
Aiwan ╭∩╮ (òÓ,) ╭∩╮bot
512 ссе не может быть, только вроде avx2
AVX-512, который редко где встретишь. На AMD вообще нет.
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
Saenro T
Каждое движение не обходится без FPU. В коде всё ещё слишком много воды, в т.ч. и на FPU, надо избавляться от лишнего.
У тебя синусы считаются каждый раз или таблица?
А вообще, красиво 👍. Я думал, ты просто чьё-то скинул, а это твоё, оказывается.
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
С таблицей куда быстрее будет. Синусы очень долгие. Вообще, SSE (даже скалярные операции) немного быстрее, чем FPU, даже расчет синуса через ряды Тейлора (главное, правильно сделать, чтобы минимизировать зависимости результатов). А если считать через короткий ряд, то ещё быстрее (точность будет ниже, но для графики достаточная).
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
Ну а cos(x) = sin(x + Pi/2).
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
Причём, таблично можно вообще сделать 360 градусов как, скажем 1024, тогда косинус будет = sin[(x + 256) & 1023].
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
С AVX под DOS есть небольшая сложность: он работает ТОЛЬКО а защищённом режиме. А SSE тоже желательно "включить" (FreeDOS сами это делает, хотя у меня есть версия, где не делает): https://wiki.osdev.org/SSE#Adding_support
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
Собственно, AVX тоже надо "включать", но SSE спокойно работает и в RMode.
источник