В том то и дело, что мне это тоже интересно) Когда ты используешь push/pop ты занял стек и тебе нужно помнить,что ты туда положил, чтобы потом вынуть. В данном методе стека как такового нет. Регистры хранятся в кусочках памяти по 8 байт и к ним всегда можно вернуться переключением, а вот это самое интересное. Если не думать о стеке, то в памяти можно хранить неограниченное количество контекстов к которым можно возвращаться простым переключением по имени сета регистров.
Для чего это использовать? Для всего что подскажет фантазия.
здесь не спроста использованы инструкции push и pop для сохранения и восстановления регистров они короче по тактам чем прямое сохранение/восстановление из памяти. (10-11 против 16-20) а индексный регистр задействован для чистоты чтобы сохранялся основной набор. и это не push/pop это именно swap более медленный аналог exx, ex af,af'. его единственное преимущество неограниченные наборы основных регистров, которые можно выбирать в любой момент.
- - - Добавлено - - -
писали. а сейчас просто экспериментирую. в этом и есть косность мышления когда ты себя начинаешь ограничивать, устанавливать правила при написании кода. это не дает мыслить свободно и твой код становится, как ни грустно, типичным ((





Ответить с цитированием