本文介绍了什么是主被叫保存的寄存器?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一些麻烦了解主叫方和被叫方之间的差异保存的寄存器以及何时使用什么。
我使用的MSP430
步骤:
MOV.W#0,R7
MOV.W#0,R6
ADD.W R6,R7
inc.w R6
CMP.W R12,R6
JL升$循环
MOV.W R7,R12
RET
以上code是一个被调用,并在教科书例如用于因此它遵循的惯例。 R6和R7被调用函数保存和R12是调用函数保存。我的理解是,被调用函数保存暂存器不在意义上的全局,在程序改变其值将不会影响它的过程外值。这就是为什么你必须保存一个新值在开始时被调用方章。
R12,保存来电者是全球性,由于缺乏更好的话。什么过程确实有通话后R12有持久的影响。
我的理解是否正确?我失去了其他的东西?
解决方案
For that reason, it is the caller's responsibility to push these registers onto the stack if it wants to restore this value after a procedure call.
When the caller makes a procedure call, it can expect that those registers will hold the same value after the callee returns, making it the responsibility of the callee to save them and restore them before returning to the caller.
Hope it helps.
这篇关于什么是主被叫保存的寄存器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!