使用gcc编译时怎样去掉endbr32指令?

发布于 09-12 00:57 字数 394 浏览 20 评论 0

我给cflags添加了选项 -fcf-protection=none和-mmanual-endbr
因为我看了gcc手册,上面说这两个组合可以消除endbr32这个指令。
但是我使用前有两条endbr32指令,使用后只消除了一条。如图。添加选项前
添加选项后
第一张图是添加选项前的汇编代码,第二张图是添加后的代码。
我的c程序很简单,如下。

int main(){
return 0;
}

这个程序什么都不做就返回了,我现在想消除编译产生的endbr32指令。
但是我只能消除一条,为什么?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

零崎曲识2022-09-19 00:57:32

_trm_init 不是由你的代码生成的,是编译器已经生成好的代码直接链接进去的。所以不受你的编译选项的控制。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文