Size: a a a

Ассемблер

2021 October 01

LG

Lena Golovach in Ассемблер
про фиктивный стек интересно
источник

И

Игорь in Ассемблер
ага
источник

И

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

LG

Lena Golovach in Ассемблер
это же и есть фиктивный стек )
источник

И

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

E

Entusiast in Ассемблер
Ну вот тоже видел эту статью.

Напрягает, что он использует msvcrt. А насчёт jmp вместо call, и jmp вместо ret вообще ужас
Ну, хотя, как я вижу, он про оптимизацию особо не заморачивается. Всё у него в коде через память

А фиктивный стэк дело такое... Рано или поздно сам узнаешь
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
так стек это и есть память, какой бы она не была
источник

LG

Lena Golovach in Ассемблер
помню была долгая дискуссия тут на эту тему с подгоранием анусов
источник

LG

Lena Golovach in Ассемблер
цель там не оптимизация же,а запутать код от профайлинга
источник

E

Entusiast in Ассемблер
А где я про это спорил?
Стэк это та же память, только различия в том, что для него есть специальный регистр, и специальные инструкции, работающие с этим регистром
источник

E

Entusiast in Ассемблер
Ну можно было бы и регистры использовать. Всё-таки через регистры даже "запутанней".
Насколько я знаю, в дизассемблерах нельзя устанавливать названия регистрам. А вот для адресов - можно.
Вот он даже игнорирует свободные регистры в своём коде, и использует очень много меток вроде "index" (а можно было бы всё переписать на регистры с ECX), "hFile" (обычно для хэндлов, если не x86_64, у меня всегда свободны EBP, ESI, EDI, куда можно спокойно сохранять хэндлы) и т.п...
источник

LG

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

LG

Lena Golovach in Ассемблер
хотя мне кажется еще какая-то оптимизация должна быть на уровне системы для памяти которая под стек выделяется
источник

A

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

LG

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

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
...Всё у него в коде через память...
источник

s

s54816 in Ассемблер
> нельзя устанавливать названия регистрам
IDA точно умеет, остальные несложно научить плагинами.
источник

E

Entusiast in Ассемблер
Это к чему?
источник

E

Entusiast in Ассемблер
Научить можно. Но думаю, что путанница будет большая.
Это нужно либо тогда самому везде менять название регистру по одному, либо как-то ещё.. Потому что регистр на одну подпрограмму может выполнять сразу несколько ролей
источник

s

s54816 in Ассемблер
В той же иде это решается выделением куска кода, тогда она переименовывает все вхождения внутри выделения. Помогает это или мешает — вопрос другой. В ассемблере мне проще в комментарии написать, что я кладу в регистр.
источник