gpt4 book ai didi

arm - 在 C 中是否有用于加进位的 ARM 内在函数?

转载 作者:行者123 更新时间:2023-12-04 23:41:16 25 4
gpt4 key购买 nike

是否存在 ARM C 编译器的内在函数来执行加进位运算,还是必须使用汇编语言?

在 x86 上,有 _addcarry_u64随身携带。 (还有用于特殊用途的较新的 _addcarryx_u64。)

最佳答案

当前版本的 gcc 没有内在特性。一个问题是“携带标志”的通信。但是,ARM 后端确实知道并定义了一组 ADC原语如 addsi3_carryin .

对于 example ,

unsigned long long big_inc(unsigned long long x)
{
return ++x;
}

被翻译成,
big_inc(unsigned long long):
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
@ link register save eliminated.
adds r0, r0, #1
adc r1, r1, #0
bx lr

当您有这样的问题时,查看开源多精度库总是很有启发性的。有 OpenSSL bignumGNU MP图书馆没有任何研究。由于内在不存在,因此(对于您的工作)更明确的答案取决于您想要实现的目标;质因数、乘法、加法等。您总是可以使用汇编程序或更强大的脚本来为您的特定整数长度生成汇编程序。

关于arm - 在 C 中是否有用于加进位的 ARM 内在函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37126942/

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