Сохранение текущей позиции инструкции - PullRequest
1 голос
/ 02 марта 2011

Можно ли как-нибудь сохранить положение текущей инструкции, чтобы я мог вернуться к ней в какой-то момент в будущем.

Я пытаюсь реализовать некоторые функции, подобные GOSUB.

Теперь инструкция Branch принимает аргумент, представляющий количество байтов относительно текущей позиции для перехода.Достаточно просто сохранить ярлык в том месте, куда я хочу перейти, а затем перейти к нему.Если бы я мог сохранить текущую позицию непосредственно перед ответвлением, то, когда дело доходит до возврата, я мог бы взять новую текущую позицию - сохраненную позицию и передать ее в отделение ..

Но я не могу понять, как.. Есть идеи?

1 Ответ

1 голос
/ 02 марта 2011

Afaik (и я сделал большое количество IL), нет, это невозможно в том виде, в каком оно представлено , и даже если бы это было так, это почти наверняка привело бы к непроверяемому IL (не хорошо)поскольку не было бы никакого способа доказать, что стек сбалансирован.Также помните, что смещение является частью инструкции IL, а не стека - поэтому вы не можете сохранить его в локальном (или в стеке) и перезагрузить его и т. Д.

Просто структурируйте код более аккуратно;используйте вызовы там, где это необходимо, для вызова суб-методов и, возможно, таблицы переходов (по сути, «переключатель»).

...