Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
首先,我需要编写一个程序集(Intel IA-32)函数来返回调用者的帧指针的内容。我不认为我做对了,但我想出的是
pushl %ebp movl %esp, %ebp movl %eax, 4(ebp) leave ret
但是,我应该在 ac 函数中使用它来计算堆栈上的帧数,我真的完全不确定它应该如何工作。我应该跳转到旧 ebp 中的值,然后再次调用该函数吗?任何指导将不胜感激。
不,您不需要跳转到任何地方,但是一旦将帧指针复制到局部变量,您就可以将其视为链表。
int mymagicfunction(int a, int b){ int *c = asm_copy_ebp(); int *d = c; while ( it_makes_sense ) { c=*c; dump_memory_between(c,d); d=c; }
也许只有当 c 和 d 之间的距离很小时才有意义。