社区讨论

关于有符号整数位移

学术版参与者 5已保存回复 6

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
6 条
当前快照
1 份
快照标识符
@mhz484d9
此快照首次捕获于
2025/11/15 01:12
3 个月前
此快照最后确认于
2025/11/16 13:45
3 个月前
查看原帖
刚刚搓了道题(这个),其中的数据生成用了一些有符号的整数位移。然后发现这个东西似乎是 ub。于是开始爆改:
CPP
inline int next_integer(int x) {
    __asm__ (
        "mov %0, %%eax\n\t"
        "sal $13, %%eax\n\t"
        "xor %%eax, %0\n\t"
        "mov %0, %%eax\n\t"
        "sar $17, %%eax\n\t"
        "xor %%eax, %0\n\t"
        "mov %0, %%eax\n\t"
        "sal $5, %%eax\n\t"
        "xor %%eax, %0"
        : "+r" (x)
        :
        : "eax"
    );
    return x;
}
这个东西应该没有 ub 了吧?

回复

6 条回复,欢迎继续交流。

正在加载回复...