· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.RESEARCH —› Кто может разъяснить(листинг IDA)

Посл.отвђт Сообщенiе


Дата: Мар 9, 2004 17:27:10

Что вот это такое если по-русски: fstp ds:flt_407B98[esi*4] , т.е. как это интерпретировать?

:00401036                 push    edi
:00401037                 push    ebx
:00401038                 call    sin
:0040103D                 fstp    ds:flt_407B98[esi*4]
:00401044                 push    edi
:00401045                 push    ebx
:00401046                 call    cos
:0040104B                 fstp    ds:flt_4075CC[esi*4]
:00401052                 add     esp, 10h


Дата: Мар 9, 2004 18:00:05

короче уже сам разобрался эта фигня что-то там читает из fpu-регистров
и запихивает в буфер :-)


Дата: Мар 9, 2004 20:27:31

Скорее эта фигня делает массивы с посчитанными значениями sin/cos для определенного шага угла чтобы потом быстро считать их по таблице, не вызывая меделнных sin/cos


Дата: Мар 9, 2004 20:43:40

Ну да, она заполняет буфер длинной ~1500(дес.) DWORD'ами ;-) я просто не стал уточнять.


Дата: Мар 10, 2004 13:20:02

Тока не DWORD'ами а FLOAT'ами =)


Дата: Мар 10, 2004 14:22:19

Вероятно, но в отладчике всё-равно видно что заполняет одновременно по 4-е байта ;-)


Дата: Мар 11, 2004 02:05:57

Если FLOAT занимает 4 байта, это вовсе не значит что это DWORD, типа сумничал :)


Дата: Мар 11, 2004 02:24:08

Но по сути всё-равно DWORD :-)


Дата: Мар 11, 2004 08:31:40 · Поправил: q_q

Asterix
afaik msvcrt'шные cos/sin - работают с double (== qword (это видно по 2-ум push'ам), результат можно интерпретировать как float (== dword) или double, т.е. использовать fstp dword ptr ... или fstp qword ptr ....


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.139