【问题标题】:Switch statement without jump table不带跳转表的switch语句
【发布时间】:2014-08-30 21:47:33
【问题描述】:

是否可以在没有跳转表的情况下使用 switch 语句? GCC 创建了我想避免的愚蠢(在我的情况下是不可用的)跳转表。

【问题讨论】:

  • 你能详细说明你的问题吗?示例场景。
  • 您对 GCC 为您创建的跳转表有什么不满意的地方?您确定与编译器抗争是实现目标所需要做的事情吗?
  • @Santa 在某些平台(例如 arm)上用于跳转表,使用内置函数(例如 __gnu_thumb1_case_sqi),在指定 -nostdlib-nodefaultlibs 时不包括在内。因此,跳转表有效地生成了在最终未链接到提供__gnu_thumb1_case_sqi 的内容时不起作用的代码。我觉得那很恶心。

标签: c switch-statement jump-table


【解决方案1】:

https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html

-fno-jump-tables

不要将跳转表用于 switch 语句,即使它比其他代码生成策略更有效。此选项与 -fpic 或 -fPIC 一起用于构建构成动态链接器的一部分且不能引用跳转表地址的代码。在某些目标上,跳转表不需要 GOT,也不需要此选项。

【讨论】:

    猜你喜欢
    • 2013-06-21
    • 2017-03-29
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    • 1970-01-01
    相关资源
    最近更新 更多