给定返回地址,如何获取函数的地址?

use*_*539 5 c x86 assembly

假设在一段C代码中,我有一个调用bar的函数foo。在bar内部,我可以使用Assembly来获取bar返回的地址。如何使用此信息确定foo的地址?

一种方法是获取foo将返回的返回地址,并从调用foo调用指令的操作码中获取地址。但是,这需要知道使用哪种调用方法(例如,偏移量/绝对值),因此不可靠。有没有更简单的方法来确定呼叫者的地址?

编辑:我忘了提到这个问题是关于32位Intel UNIX计算机上的IA32组装。