【发布时间】: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