gpt4 book ai didi

math - 编译器是否优化数学表达式?

转载 作者:行者123 更新时间:2023-12-04 07:47:48 25 4
gpt4 key购买 nike

rustc 会优化这些表达式吗?

  • 2*x -> x<<1
  • x/2 -> x>>1
  • x % 8 -> x&7
  • 等等
  • 最佳答案

    此类微不足道的优化在 LLVM optimization passes 的领域内,实际上生成的程序集甚至更好,更正确。2*x编译为单条指令 lea rax, [rdi + rdi] ,在所有现代 x86 处理器上都是单 uop(相关 question)x/2对于带符号的数字被编译为最快和正确的方式,在 -1 的情况下给出正确的答案(相关question

    mov     rax, rdi
    shr rax, 63
    add rax, rdi
    sar rax
    但编译为无符号数的右移
    mov     rax, rdi
    shr rax
    同样的故事也适用于 x % 8它编译为带符号数的长程序集(对于负数)
    mov     rax, rdi
    lea rcx, [rdi + 7]
    test rdi, rdi
    cmovns rcx, rdi
    and rcx, -8
    sub rax, rcx
    ret
    并到 and无符号数指令(相关 question)
     mov     rax, rdi
    and eax, 7
    ret
    Godbolt link

    关于math - 编译器是否优化数学表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67135579/

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