2015-12-14 48 views
0

如何将物品向上移动到堆叠中?将物品向上移动

(伪代码,因为里面的代码和寄存器推会有所不同。)

push registers to stack 
    alter the registers 
    get return value on top of the stack 
    keep the top of the stack but restore the registers 

使堆栈看起来是这样的:

(上)

(返回值)

(注册)

(注册)

...

(注册)

我想使它看起来像这样:

(上)

(返回值)

再有寄存器从堆栈中获取它们的值。这是可能吗?我正在努力做到这一点。这可以做到吗?先谢谢你。

回答

0

如果我理解正确,您希望在寄存器之前放置一个返回值(您从...中获得?),然后弹出寄存器,但保留返回值?

我可以给出的一个建议是为堆栈上的返回值腾出空间(如subl $4, %esp,如果返回值为4字节),然后将返回值放在那里,而不是堆栈顶部。

另一个建议(可能更容易实现)是在.data部分用.skip留出一些空间,在那里移动返回值,然后在恢复寄存器后将其移回堆栈。

很难给你一个具体的例子,因为我不太了解这个场景。