Size: a a a

Ассемблер

2021 August 30

E

Entusiast in Ассемблер
Ну тоже самое))
источник

Q

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

Q

Qqqq in Ассемблер
видимо я просто не понял задание...в любом случае спасибо за помощь
источник

Q

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

Q

Qqqq in Ассемблер
простите за многабукафф
источник

A

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

Q

Qqqq in Ассемблер
не совсем вас понял, я правильно мыслю или лучше перечитать все снова и переосмыслить?
источник

E

Entusiast in Ассемблер
И проблема не в том, что вопрос умный, и не в том, что "много букв", а в том, что он составлен некорректно, очень много пунктуационных ошибок, всё смешано в кучу, читать невозможно, непонятно вообще, о чём речь
источник

Q

Qqqq in Ассемблер
я так понял что стек-просто буфер а разделение на регистры сохраняющее вызывающей или вызываемой сделано просто для понимания что было вызвано
источник

Q

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

E

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

A

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

Q

Qqqq in Ассемблер
но ведь вызывающая и вызываемая может менять значения всех шести регистров как им будет угодно
источник

Q

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

Q

Qqqq in Ассемблер
как я понял, на правоту ни в коем случае не претендую
источник

Q

Qqqq in Ассемблер
ну конечно не только для этого , но для регистров это вроде так
источник

E

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

Q

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

E

Entusiast in Ассемблер
😑
источник

Q

Qqqq in Ассемблер
но разделение нужно тк по регистрам мы просто понимаем что происходит
источник