Для оптимизации обработки графики понадобилось перевести вот такой код на ММХ: b = b1*alpha/255 + b2*(1-alpha/255), где b,b1,b2, alpha: byte. Помогите, пожалуйста!
Чтобы перевести одну строчку довольно примитивного кода вы предлагаете мне изучить архитектуру интелловских процессоров и их команды, да еще и мультимедийное их расширение? Если бы у меня было достаточно много времени, я бы так и сделал. Но тут прошу просто перевести, кому не трудно
Я так подозреваю, что результатом перевода будет 15-20 асм.команд - сколько вы за это хотите? $100? Грустно... И я же написал - "кому не трудно". Неужели тут все думают только о коммерции....
Дык я воабще не требовал никаких денег, я просто сказал так как оно и есть, и почему сразу 100? я думаю и за 10 ктонибудь сделал бы =)
Relic b = b1*alpha/255 + b2 - b2*alpha/255 = alpha*(b1 - b2)/255 + b2 P.S. такие вопросы с утра надо задавать
Relic Весь смысл операций MMX - массовая обработка. В твоей постановке байты быстрее обработать обычными командами - через MMX будет дольше.
valterg Я сам виноват, не уточнил задачу... Конечно же это массовая обработка, т.к. действие производится сразу с 4-мя байтами, т.е. результирующий битмап pf24bit получается путем сложения такого же битмапа с другим 32-битным. Схематично так: ResultBitmap24(r,g,b) = Bitmap24(r,g,b) + Bitmap32(r,g,b,a) Надеюсь, понятно объяснил. PS только вместо сложения конечно же используется функция из стартового поста...
ResultBitmap24(r,g,b) = Bitmap24(r,g,b) + Bitmap32(r,g,b,a) не есть гуд для mmx, елиб "а" канал лежал отдельно то балобы хорошо
Relic Ну так придется самому разобрать по ссылке asmfan. Уточню - не 255, а 256. И чуть разъясню : MMX позволяет складывать и умножать длинные целые числа - 64 бита. Чтобы получить выигрыш надо запихать все три цвета в 64 бита, да еще "проредить" нулями, чтобы при умножении результаты не наползли друг на друга - 00 00 RR 00 GG 00 BB 00 ( записано побайтно, если qword то будет задом наперед). Теперь там почти нечего разбирать Все понятно. Но мне почему-то кажется, что куча команд упаковки/распаковки "сожрет" больше времени чем нормальный алгоритм. В ссылке указан выигрыш в 5 раз, но там мужик использует процедуру и еще "делит" на 256 - глупость. ===================== Кстати, в алгоритме из ссылки альфа как раз извне задается в виде процента. Т.е. там строят пиксели с альфой. А у тебя похоже наоборот? Короче не ошибись...