海湾合作委员会大会"+t"

GCC Assembly "+t"

本文关键字:委员会      更新时间:2023-10-16

我目前正在旧编译器(GCC 大约 2004 年(上测试一些C++的内联程序集,我想在浮点数上执行平方根函数。在尝试并搜索成功的方法后,我遇到了以下代码

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

这奏效了。问题是,即使我理解所使用的汇编指令,我也无法找到任何关于"+t"标志在n变量上的含义的特定文档。我的真实想法是,这似乎是一种将变量n视为输入和输出变量的方式,但我无法找到有关它的任何信息。那么,"t"标志到底是什么,它在这里是如何工作的?

+

表示此操作数由指令读取和写入。 (从这里开始(

t

80387 浮点堆栈 (%st(0(( 的顶部。 (从这里开始(

+表示您正在读取和写入寄存器。
t表示该值位于 80387 浮点堆栈的顶部。

 

引用:

  • GCC 手册,扩展 Asm 包含有关约束的一般信息 - 搜索"约束">
  • GCC 手册,计算机约束包含有关每个体系结构支持的特定约束的信息 - 搜索"x86 系列">