2

我想在堆上为每个函数调用分配一个堆栈帧,但为此我需要修改每个函数的堆栈基指针。

有没有办法在 Linux 下获取该指针并在 C 中修改它?

4

2 回答 2

0

手动修改 ebp 的唯一(实用)方法是内联汇编或仅在汇编中编写函数。如果你有一个汇编函数,你可以做这样的事情(我对 x86 汇编没有什么经验,仅供参考)

; void function(void* heapPtr)

function:
    push ebp
    mov  reg, esp
    mov  esp, [esp+4]
    mov  ebp, esp
    ...
    mov  esp, reg
    pop  ebp
    ret
于 2013-10-24T01:39:08.557 回答
-1

看看功能alloca()。不推荐使用它,但大多数编译器都有它的实现。

于 2012-04-08T17:49:04.293 回答