【问题标题】:Is that possible that using stack pointer to locate/index local variables on stack with llvm?是否有可能使用堆栈指针在 llvm 堆栈上定位/索引局部变量?
【发布时间】:2019-05-27 12:27:15
【问题描述】:

我正在尝试修改 llvm X86 后端以使用 rsp 而不是 rbp 来定位/索引局部变量。问题是局部变量和rsp之间的偏移量是不固定的,只能自己计算。 如果通过这些指令修改了rsp的位置,则很容易处理如下:

push 
pop
sub rsp, $immediate

在这些情况下,我可以在编译时知道偏移量。 但现在我陷入了一个问题。我发现 rsp 不仅被前面提到的这些指令所修改。例如:

lstr = (char *)alloca(strlen(ss) + 1);

这条指令会像这样修改rsp,我无法知道编译时的偏移量。

sub rsp, $register

是否可以使用llvm生成使用堆栈指针定位局部变量的执行文件?

【问题讨论】:

    标签: stack llvm stack-pointer


    【解决方案1】:

    简短的回答:不。在很多情况下,堆栈指针值可能会以“非常量方式”改变。示例包括 VLA(直接调用或通过 alloca() 调用)、可变参数函数等。另请注意,在某些情况下,堆栈也可以动态重新对齐。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-15
      • 1970-01-01
      • 2012-10-07
      • 2020-01-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多