gpt4 book ai didi

c - `` 继续 `` 中断标签放置

转载 作者:太空狗 更新时间:2023-10-29 16:47:51 28 4
gpt4 key购买 nike

这很好用:

#include <stdio.h>

int main(){
volatile int abort_counter = 0;
volatile int i = 0;
while (i < 100000000) {
__asm__ ("xbegin ABORT");
i++;
__asm__ ("xend");
__asm__ ("ABORT:");
++abort_counter;
}

printf("%d\n", i);
printf("nof abort-retries: %d\n",abort_counter-i);
return 0;
}

不过,我原来写的是

#include <stdio.h>

int main(){
volatile int abort_counter = 0;
volatile int i = 0;
while (i < 100000000) {
__asm__ ("xbegin ABORT");
i++;
__asm__ ("xend");
continue;
__asm__ ("ABORT:");
++abort_counter;
}

printf("%d\n", i);
printf("nof abort-retries: %d\n",abort_counter);
return 0;
}

但这导致了

/tmp/cchmn6a6.o: In function `main':
rtm_simple.c:(.text+0x1a): undefined reference to `ABORT'
collect2: error: ld returned 1 exit status

为什么?

(使用 gcc rtm_simple.c -o rtm_simple 编译。)

最佳答案

你或许可以欺骗它:

        continue;
reachable:
__asm__ ("ABORT:");
++abort_counter;
}

printf("%d\n", i);
printf("nof abort-retries: %d\n",abort_counter);
if (abort_counter < 0) goto reachable;
return 0;
}

带标签的 goto 告诉 gcc 代码是可访问的,而 abort_counter 是易变的应该阻止 gcc 能够优化 goto 离开。

关于c - `` 继续 `` 中断标签放置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47154095/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com