то есть по этому ответу я понимаю ровно то что написали в описании ролей этих шести регистров , одна группа для вызываемой процедуры другая для вызывающей ,хотя вопрос был про то почему значения не восстанавливаются
правильно ли я понимаю что по сути и вызывающая и вызываемая процедуры пользуются всеми регистрами общего назначения и разделение между сохраняющими значения для вызывающей и вызываемой-условность , а на самом деле все просто кроется в стек-фрейме каждой конкретной процедуры?то есть допустим в одной процедуре есть некоторая локальная переменная и она допустим инициализируется до вызова еще одной процедуры внутри первой, тогда мы из регистра вызывающей пушим локальную переменную в стек фрейм вызывающей и далее вызываем новую процедуру . Тогда новой доступны все шесть регистров но свои значения при надобности она пушит в свой стек фрейм. После завершения вызываемой процедуры наше исходное значение локальной переменной снимается из стек фрейма и восстанавливает значение регистра?
И проблема не в том, что вопрос умный, и не в том, что "много букв", а в том, что он составлен некорректно, очень много пунктуационных ошибок, всё смешано в кучу, читать невозможно, непонятно вообще, о чём речь
Нет, это сделано, чтобы не изменить регистры, которые были в процедуре, до этого, но при этом сохранять регистры перед вызовом - неоптимизированное решение, легче просто сохранить регистры внутри вызывающей функции
так , тогда она все что нужно сохранит и даст возможность для повторного использования если мы их меняем . Выходит что разделение на группы-условное в каком то смысле тк все что нужно для какой-либо процедуры все равно будет сохранено в стеке и при надобности восстановлено