如何使用LLVM pass获取堆栈顶部的地址

如何使用LLVM pass获取堆栈顶部的地址,llvm,llvm-clang,llvm-ir,Llvm,Llvm Clang,Llvm Ir,我可以使用llvm.frameaddress获取堆栈的底部。但是,如何获得当前函数的堆栈顶部呢?比如对于X86,我想得到esp的值。有人告诉我TargetLowering可以解决它,但它基于machinefunction,但我的过程基于function(runonfunction)。有什么建议吗?谢谢 在LLVM IR中没有堆栈,也许你是指MachineInstr或MCInstructions?这是我的错。我只想在pass中编写一些代码,然后您可以选择在machineininstruction级

我可以使用llvm.frameaddress获取堆栈的底部。但是,如何获得当前函数的堆栈顶部呢?比如对于X86,我想得到esp的值。有人告诉我TargetLowering可以解决它,但它基于machinefunction,但我的过程基于function(runonfunction)。有什么建议吗?谢谢

在LLVM IR中没有堆栈,也许你是指MachineInstr或MCInstructions?这是我的错。我只想在pass中编写一些代码,然后您可以选择在machineininstruction级别编写pass。其次,您无法获取stackframe底部或顶部的地址,因为它们是在运行时创建的。你能得到的是一个指向它的寄存器。在LLVM IR中没有堆栈,也许你是指MachineInstr或MCInstructions?嗯,这是我的错。我只想在pass中编写一些代码,然后您可以选择在machineininstruction级别编写pass。其次,您无法获取stackframe底部或顶部的地址,因为它们是在运行时创建的。你能得到的是一个指向它的寄存器。