xia*_*oma 6 x86 gcc inline-assembly xv6
当我正在阅读xv6源代码时,我对下面声明的语法感到困惑.有谁可以向我解释一下?
extern struct cpu *cpu asm("%gs:0");
Run Code Online (Sandbox Code Playgroud)
我假设你明白了什么extern struct cpu *cpu
意思.你的问题是:这个asm("%gs:0")
部分是什么意思?
此代码使用名为asm labels的gcc扩展名来表示该变量cpu
由汇编程序字符串定义%gs:0
.
这不是如何使用此扩展并被视为黑客攻击.
有GS(和FS)的一个很好的讨论在这里,但在短期GS指向当前线程的本地存储.gs中数据的格式取决于您的操作系统(Windows与Linux非常不同).这个特殊的代码说,在偏离0
gs时,有一个指向a的指针struct cpu
.
归档时间: |
|
查看次数: |
428 次 |
最近记录: |