gpt4 book ai didi

c - 不清楚的c代码: double underscore in c macro

转载 作者:行者123 更新时间:2023-11-30 20:56:15 25 4
gpt4 key购买 nike

我必须将一些 C 代码解释为一种家庭作业,但我并不真正理解这个宏:

#define rdtscll(val)__asm__ __volatile__("rdtsc":"=A"(val))

我知道这是一种名为rdtscl的静态函数,它接收一个参数val。但其余的呢?

  • 什么是 __asm____volatile__ 以及为什么使用这些下划线?
  • 这两个不同的常量之间用空格分隔吗?

最佳答案

在本例中,__asm____volatile__ 是用于将汇编语句嵌入到 C 文件中的编译器扩展。两个前导下划线是为了防止与用户代码中的标识符发生冲突,后面的下划线是纯粹的选择。 __volatile__ 只是一个“反优化”指令。

rdtsc 是一条用于读取时间戳计数器的 x86 指令,时间戳计数器是一种基于时钟周期的超高速计数器。 "=A" 是 GCC 内联汇编语法的一部分 - 有大量引用文献对其进行了更多解释。

关于c - 不清楚的c代码: double underscore in c macro,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26652288/

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