gpt4 book ai didi

gcc - 声明“extern struct cpu * cpu asm (“%gs:0”)”是什么?意思是?

转载 作者:行者123 更新时间:2023-12-04 13:18:38 25 4
gpt4 key购买 nike

在阅读xv6源代码时,我对以下声明的语法感到困惑。谁能向我解释?

extern struct cpu *cpu asm("%gs:0");

最佳答案

我假设您了解extern struct cpu *cpu的含义。您的问题是:asm("%gs:0")部分是什么意思?

该代码使用名为asm labels的gcc扩展来表示变量cpu由汇编字符串%gs:0定义。

这不是打算使用此扩展名的方式,而是将其视为hack

关于gs(和fs)here的讨论非常精彩,但简而言之gs指向当前线程的本地存储。 gs处的数据格式取决于您的操作系统(Windows与Linux有很大不同)。这个特定的代码说,在从gs偏移0的位置,有一个指向struct cpu的指针。

关于gcc - 声明“extern struct cpu * cpu asm (“%gs:0”)”是什么?意思是?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39578898/

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