Что такое сохраненные регистры вызываемого и вызывающего абонента?

У меня проблемы с пониманием разницы между сохраненными регистрами вызывающего и вызываемого абонентов и когда использовать что.

Я использую 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 после вызова.

Я правильно понимаю? Я что-то упустил?

40
задан Peter Cordes 7 May 2019 в 02:13
поделиться