我知道每个人都讨厌搞砸.在我的代码中,由于我考虑过并且很满意的原因,他们提供了一个有效的解决方案(即我不是在寻找"不要那样做"作为答案,我理解你的预订,并理解我为什么使用它们无论如何).
到目前为止,它们一直很棒,但我希望以这样的方式扩展功能,这要求我基本上能够存储指向标签的指针,然后再转到它们.
如果此代码有效,它将代表我需要的功能类型.但它不起作用,30分钟的谷歌搜索没有透露任何东西.有没有人有任何想法?
int main (void)
{
int i=1;
void* the_label_pointer;
the_label:
the_label_pointer = &the_label;
if( i-- )
goto *the_label_pointer;
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我在某处读到该switch语句使用"二进制搜索"或一些排序技术来精确选择正确的情况,与else-if梯形图相比,这增加了它的性能.
如果我们按顺序给出案例,那么交换机的工作速度会更快吗?是这样吗?你能在这个问题上添加宝贵的建议吗?
我们在这里讨论了相同的问题并计划发布作为一个问题.
我有一个C函数,它包含将实现字节码解释器的字节码的所有代码.
我想知道是否有办法在固定大小边界的内存中对齐已编译代码的段,以便我可以直接计算从字节码的值跳转到的地址?排序与数组的工作方式相同,但不是从计算的地址读取,而是跳到它.
我知道我必须把代码放在每个"字节码代码"段的末尾执行下一个跳转,并且我必须使边界大小至少与最大段的大小一样大.
如果这是可能的,我怎么告诉编译器/汇编器(gcc/g ++/as)以这种方式对齐?