GCC汇编语言中的"+t"

5

我目前正在一个旧编译器(2004年左右的GCC)上测试C++中的一些内联汇编,我想对浮点数执行平方根函数。在尝试和搜索了一些成功的方法之后,我找到了下面的代码:

float r3(float n){
    __asm__("fsqrt" : "+t" (n));
    return n;
};

已经成功运行了。问题是,尽管我理解使用的汇编指令,但我无法找到任何关于n变量上的"+t"标志意义的文档。我真正的想法是这似乎是一种将变量n作为输入和输出变量处理的方式,但我无法找到任何相关信息。那么,"t"标志到底是什么,它在这里起什么作用?

2个回答

3
+ 表示您正在读写该寄存器。
t 表示该值位于 80387 浮点堆栈的顶部。
参考文献:
  • GCC 手册中的扩展汇编语句包含有关约束条件的通用信息 - 搜索"constraints"
  • GCC 手册中的机器约束有关于每个体系结构支持的特定约束条件的信息 - 搜索"x86 family"

3

+

这意味着该操作数由指令读取和写入。 (来源:这里)

t

80387浮点堆栈的顶部(%st(0))。 (来源:这里)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接