我想在堆上为每个函数调用分配一个堆栈帧,但为此我需要修改每个函数的堆栈基指针。
有没有办法获得该指针并在Linux下用C修改它?
答案 0 :(得分:0)
手动修改ebp的唯一(实用)方法是内联汇编或只是在汇编中编写函数。如果你有一个汇编函数,你可以做这样的事情(我对x86汇编fyi并不熟悉)
; void function(void* heapPtr)
function:
push ebp
mov reg, esp
mov esp, [esp+4]
mov ebp, esp
...
mov esp, reg
pop ebp
ret
答案 1 :(得分:-1)
查看函数alloca()
。不建议使用它,但大多数编译器都有它的实现。