(2016-08-16 12:08:33 отредактировано Олег Третьяков)

Исполнение функций в теле ВМ

Доброго дня. Для начала уточнение терминологии: насколько я понял,тут и в целом в документации речь идет не о нескольких процессорных инструкциях, извлеченных из тела функции и помещенных в ВМ, а именно о функции(ях) целиком. Т.е. в нашем случае термин "инструкции" и "функции" - синонимы, верно? Отсюда вопрос:  Есть ли какие либо ограничения на объем и сложность конечного ассемблерного кода функции, перемещаемого в ВМ? Спрашиваю потому, что либо получил нерабочий код тяжелой функции после автозащиты, либо уложил ВМ). Что более вероятно? PS. Delphi. Непокрытый код работает исправно.

Re: Исполнение функций в теле ВМ

Здравствуйте.

Олег Третьяков пишет:

Непокрытый код работает исправно.

А профилировать приложение пробовали?

Re: Исполнение функций в теле ВМ

На девелоперской машине, к сожалению, это не представляется возможным, т.к. кроме прочего еще идет работа с внешним железом - большим и тяжелым. Окончательный прогон приложения с ключом и железом происходит удаленно и в процессе сборки нельзя впасть в зависимость от этого железа. Приходится расставлять галки в профилировщике по собственному суждению о необходимости защиты нужных функций путем переноса их в ВМ. Кстати, неплохо было бы сделать в TreeView Popup-меню с пунктом "Collapse All" профилировщика.

Re: Исполнение функций в теле ВМ

Олег Третьяков пишет:

Кстати, неплохо было бы сделать в TreeView Popup-меню с пунктом "Collapse All" профилировщика.

Профайлер из состава "свежего" SDK это умеет.

Олег Третьяков пишет:

Отсюда вопрос:  Есть ли какие либо ограничения на объем и сложность конечного ассемблерного кода функции, перемещаемого в ВМ?

Следует избегать "медленных" функций. Также лучше избегать функций с исключениями и больших циклов.

Re: Исполнение функций в теле ВМ

Антон Тихиенко пишет:
Олег Третьяков пишет:

Кстати, неплохо было бы сделать в TreeView Popup-меню с пунктом "Collapse All" профилировщика.

Профайлер из состава "свежего" SDK это умеет.

Насколько свежего? У меня SDK 7.0.286.0.

Re: Исполнение функций в теле ВМ

Олег Третьяков пишет:

Насколько свежего? У меня SDK 7.0.286.0.

Он самый.
https://forum.guardant.ru/uploads/legacy/0/3000/3222/thumb/p1aq9r0sa6lc61v9vin7ka814j01.jpg
https://forum.guardant.ru/uploads/legacy/0/3000/3222/thumb/p1aq9r8e82ve2g801rvtgi0opg1.jpg

Re: Исполнение функций в теле ВМ

Эмм, немного не то. Это сворачивания корня проекта. Имелся ввиду коллапс всех листьев всех веток, оставляя развернутым корень.

Re: Исполнение функций в теле ВМ

Олег Третьяков пишет:

Эмм, немного не то. Это сворачивания корня проекта. Имелся ввиду коллапс всех листьев всех веток, оставляя развернутым корень.

Спасибо, учтем данное пожелание.

Re: Исполнение функций в теле ВМ

Антон Тихиенко пишет:
Олег Третьяков пишет:

Эмм, немного не то. Это сворачивания корня проекта. Имелся ввиду коллапс всех листьев всех веток, оставляя развернутым корень.

Спасибо, учтем данное пожелание.

Здравствуйте!
Поставил Update3, и к сожалению  нет возможности свернуть-развернуть листья проекта.
Если в проекте пару десятков obj - можно мириться , а если пару сотен?

Re: Исполнение функций в теле ВМ

https://forum.guardant.ru/uploads/legacy/0/3000/3368/thumb/p1b1rh6m7itdt1mat1env1ucr5hp1.pngДобрый день. Есть возможность свернуть или развернуть все заголовки *.obj , входящие в состав проекта. Для это нужно вызвать контекстное меню, нажав на имя проекта правой кнопкой мыши.

Re: Исполнение функций в теле ВМ

Тимофей Ершов пишет:

Добрый день. Есть возможность свернуть или развернуть все заголовки *.obj , входящие в состав проекта. Для это нужно вызвать контекстное меню, нажав на имя проекта правой кнопкой мыши.

Здравствуйте!
По инерции, искал среди кнопочек ...
Вроде бы и пустяковая фишка, но из меня прямо выскочило: "Оооо! Класс!"