Size: a a a

Ассемблер

2021 August 18

D

Den in Ассемблер
спс Посмотрю!
источник

D

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

d

disba1ancer in Ассемблер
возвраты всегда через eax, но если возвращается структура она должна быть выделена на стеке и на неё ты должен передать указатель в зависимости от того как хочет соглашение, но это не твой случай
источник

d

disba1ancer in Ассемблер
ну и после возврата в eax оказывается адресс переданной тобой же структуры
источник

D

Den in Ассемблер
ага т.е возможно первой функцией надо получить структуру в стек а второй уже со стека выцепить значение в EAX например? я чесно говоря так представлял себе эту конструкцию GetDlgCtrlID(GetFocus()) что она должна это делать
источник

d

disba1ancer in Ассемблер
GetFocus скорее всего возвращает указатель и кладёт его в eax и никаких структур не нужно, а точнее даже не указатель, а хендл, который только объявлен как указатель
источник

D

Den in Ассемблер
Ладно надо пробовать так тогда ничего не поймешь
источник

d

disba1ancer in Ассемблер
винапи практически никогда не возвращает структур
источник

D

Den in Ассемблер
Это гуд значит возможно проще будет разобраться :)
источник

d

disba1ancer in Ассемблер
но я что-то не нашёл как структуры возвращаются
источник

D

Den in Ассемблер
Вообще я сегодня находил уже в msdn вот например WM_GETDLGCODE возвращает типы элементов вроде
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
для этого в фасме есть специальный макрос. frame/end frame вроде называетсч
источник

d

disba1ancer in Ассемблер
немного разобрался, адресс структуры возврата кладётся на стек самым последним параметром (получается в стеке он идёт раньше всех аргументов), но это только для структур которые больше 8ми байт, либо плюсовых классов, ну и в eax кладётся этот скрытый параметр в качестве возвращаемого значения
источник

D

Den in Ассемблер
А как функция называется?
источник

d

disba1ancer in Ассемблер
это соглашение о вызове
источник

D

Den in Ассемблер
А понял :)
источник

D

Den in Ассемблер
у меня так по виду что то кладется в ecx:edx
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
у manhanter'a есть приложуха на фасме специально для этого
источник

D

Den in Ассемблер
Для чего ты имеешь ввиду?
источник

d

disba1ancer in Ассемблер
на msdn конечно плохо расписано какие регистры могут изменять вызывающие
источник