我正在开发一个项目,需要我从 llvm ir 生成 asm 代码。
当我使用llc直接从.ll文件生成代码时,程序集没有框架指针fp。但是,当我使用 riscv-unknow-elf-gcc 编译.cpp文件时,它确实有一个帧指针。
llc
.ll
fp
.cpp
网上查了一下,发现-fomit-frame-pointer编译时有参数。
-fomit-frame-pointer
我只是认为对于 riscv asm 来说帧指针是不必要的,因为我们实际上知道函数帧的开始和结束。并且使用帧指针来表示堆栈变量与使用堆栈指针没有区别sp。
sp
assembly llvm codegen riscv
assembly ×1
codegen ×1
llvm ×1
riscv ×1