Модератори: Савитри.

Сторінки: (21)  % « Перша ... 13 14 [15] 16 17 ... Остання » ( Перейти до першого непрочитаного повідомлення ) Нова тема

 

Программирование

, Кто увлекается
J-Rex
Відправлено: Jan 7 2014, 21:20
Offline

Well, I'm back!
********
Стать:
Чародій VIII
Вигляд: --
Група: Користувачі
Повідомлень: 3117
Користувач №: 49588
Реєстрація: 6-August 09





Мимокрокодил, ну раз у нас переменная 32-битная, то пускай будет EAX
^
Forsaken Hermit
Відправлено: Jan 7 2014, 21:23
Offline
Avatarus Mutatio,Avatarus Orbis
cute but toxic
**********
Чудотворець IV
Вигляд: Animagus Serpentis Maris
Група: Користувачі
Повідомлень: 23686
Користувач №: 29043
Реєстрація: 29-May 07





Цитата (Asshole_BorN @ Jan 7 2014, 21:20)
Мимокрокодил, ну раз у нас переменная 32-битная, то пускай будет EAX

Ох! Прости. Мой косяк. Переменная у нас double - за давностью я забыл.
То есть квадрослово.
^
J-Rex
Відправлено: Jan 7 2014, 21:27
Offline

Well, I'm back!
********
Стать:
Чародій VIII
Вигляд: --
Група: Користувачі
Повідомлень: 3117
Користувач №: 49588
Реєстрація: 6-August 09





Мимокрокодил, ну тогда RAX. сути дела это не меняет
^
Forsaken Hermit
Відправлено: Jan 7 2014, 21:34
Offline
Avatarus Mutatio,Avatarus Orbis
cute but toxic
**********
Чудотворець IV
Вигляд: Animagus Serpentis Maris
Група: Користувачі
Повідомлень: 23686
Користувач №: 29043
Реєстрація: 29-May 07





Цитата (Asshole_BorN @ Jan 7 2014, 21:27)
Мимокрокодил, ну тогда RAX. сути дела это не меняет

Забыл указать, да уж ладно - что работаем мы в 32-битном режиме.
Короче что уж там - суть ты угадал. Уровень ассемблера.

Цитата (Мой старый боян)
void asm_min ( double r, double g, double b ) {
__asm
{
fld r
fld g
fld b
fcomi st(0),st(1)
fcmovnb st(0),st(1)
fstp st(1)
fcomi st(0),st(1)
fcmovnb st(0),st(1)
fstp st(1)
}
}
//здесь просто ищется минимум средствами FPU

//где-то в другой функции... в другой инлайн-вставке...
push dword ptr [rgb.b+4]
push dword ptr [rgb.b]
push dword ptr [rgb.g+4]
push dword ptr [rgb.g]
push dword ptr [rgb.r+4]
push dword ptr [rgb.r] //заталкиваем аргументы функции в "общий" стек
call [asm_min] //вызываем функцию
add esp, 8*3 //выталкиваем мусор из "общего" стека путем передвигания его указателя назад на три байта
fstp qword ptr [minimal] //инструкция - выталкивает верхнее значение стека FPU, размером в квадрослово, в область памяти по адресу [minimal]





Суть здесь была изначально в чем. В том, что изначально функция asm_min была типа double и возвращала переменную result.
В один момент мне понадобилось посмотреть ассемблерный листинг в отладчике и вот что я увидел (описательно):

Цитата
начало дабл-функции асм_мин
объявляем double result;
начало инлайна
фсякие инструкции
вытолкнуть верхнее значение fpu-стека в переменную result
конец инлайна
затолкнуть ретурном значение result в стек fpu!
конец ф-ии асм_мин

//где-то далеко
вызвать ф-ю асм_мин
вытолкнуть верхнее значение fpu-стека в переменную double temp!


Ну, я и оптимизировал слегонца. Убрал резалт, убрал ретурн, стал просто оставлять то значение в флоатин пойнт юните и в надфункции его забирать (тут все осталось как было).

Вообще кодить надо изначально на асме, а фсе компиляторы - говно, продуцирующее лишний код. *сделал вид, что пошутил*
^
J-Rex
Відправлено: Jan 7 2014, 21:44
Offline

Well, I'm back!
********
Стать:
Чародій VIII
Вигляд: --
Група: Користувачі
Повідомлень: 3117
Користувач №: 49588
Реєстрація: 6-August 09





Цитата (Мимокрокодил @ Jan 7 2014, 21:34)
Вообще кодить надо изначально на асме, а фсе компиляторы - говно, продуцирующее лишний код. *сделал вид, что пошутил*

асм ломает людей.
^
Forsaken Hermit
Відправлено: Jan 7 2014, 21:47
Offline
Avatarus Mutatio,Avatarus Orbis
cute but toxic
**********
Чудотворець IV
Вигляд: Animagus Serpentis Maris
Група: Користувачі
Повідомлень: 23686
Користувач №: 29043
Реєстрація: 29-May 07





Asshole_BorN, зато в обмен дает понимание того, как это все работает.
Люблю реверс-инжиниринг, что поделать.
^
J-Rex
Відправлено: Jan 7 2014, 21:49
Offline

Well, I'm back!
********
Стать:
Чародій VIII
Вигляд: --
Група: Користувачі
Повідомлень: 3117
Користувач №: 49588
Реєстрація: 6-August 09





Мимокрокодил, это прям как М-теория для физиков. только она, правда, при этом не дает понимания абсолютно ничего
^
Forsaken Hermit
Відправлено: Jan 7 2014, 22:14
Offline
Avatarus Mutatio,Avatarus Orbis
cute but toxic
**********
Чудотворець IV
Вигляд: Animagus Serpentis Maris
Група: Користувачі
Повідомлень: 23686
Користувач №: 29043
Реєстрація: 29-May 07





Цитата (Asshole_BorN @ Jan 7 2014, 21:49)
Мимокрокодил, это прям как М-теория для физиков. только она, правда, при этом не дает понимания абсолютно ничего

Ну, не совсем. Мне эта ситуация вполне себе дала. Там вообще никто ничего не дает - все, что способен унести, берешь сам.
^
Forsaken Hermit
Відправлено: Jan 8 2014, 14:31
Offline
Avatarus Mutatio,Avatarus Orbis
cute but toxic
**********
Чудотворець IV
Вигляд: Animagus Serpentis Maris
Група: Користувачі
Повідомлень: 23686
Користувач №: 29043
Реєстрація: 29-May 07





Ладно, это была моя собственная задачка, но у меня еще полно чужих боянов. Asshole_BorN, хочешь пару на RE?
^
J-Rex
Відправлено: Jan 8 2014, 15:19
Offline

Well, I'm back!
********
Стать:
Чародій VIII
Вигляд: --
Група: Користувачі
Повідомлень: 3117
Користувач №: 49588
Реєстрація: 6-August 09





Мимокрокодил, давай. может, вечером посмотрю
^
0 Користувачів переглядають дану тему ( Гостей і Прихованих Користувачів)
Користувачів:

Сторінки: (21)  % « Перша ... 13 14 [15] 16 17 ... Остання » Нова тема

 



[ Script Execution time: 0.0828 ]   [ 24 queries used ]   [ GZIP ввімкнено ]   [ Time: 21:53:58, 05 May 2024 ]





Рейтинг Ролевых Ресурсов - RPG TOP