У меня возникли проблемы с пониманием разницы между списками звонящего и вызываемого абонента и когда использовать что.
Я использую MSP430
процедура:
mov.w #0,R7
mov.w #0,R6
add.w R6,R7
inc.w R6
cmp.w R12,R6
jl l$loop
mov.w R7,R12
ret
вышеуказанный код является вызываемым и использовался в примере учебника, поэтому он следует за соглашением. R6 и R7 сохранены, а R12 сохранен. Я понимаю, что сохраненные реестры не являются "глобальными" в том смысле, что изменение его значения в процедуре не повлияет на его значение вне процедуры. Вот почему вам нужно сохранить новое значение в реестре вызываемого абонента в начале.
R12, сохраненный звонящий является "глобальным", из-за отсутствия лучших слов. То, что делает процедура, оказывает продолжительное влияние на R12 после вызова.
Правильно ли я понимаю? Я пропустил другие вещи?