GCC 程序集 "+t"
Posted
技术标签:
【中文标题】GCC 程序集 "+t"【英文标题】:GCC Assembly "+t" 【发布时间】:2017-04-12 00:04:36 【问题描述】:我目前正在旧编译器(大约 2004 年的 GCC)上测试 C++ 中的一些内联汇编,我想对浮点数执行平方根函数。在尝试并搜索成功的方法后,我遇到了以下代码
float r3(float n)
__asm__("fsqrt" : "+t" (n));
return n;
;
这很有效。问题是,即使我了解所使用的汇编指令,我也无法找到任何特定文档来说明"+t"
标志在n
变量上的含义。我的真正想法是,这似乎是将变量 n
视为输入和输出变量的一种方式,但我无法找到有关它的任何信息。那么,"t"
标志到底是什么?它是如何在这里工作的?
【问题讨论】:
【参考方案1】:+
表示该操作数既可以被指令读取也可以被指令写入。 (来自here)
t
80387 浮点堆栈的顶部 (%st(0))。 (来自here)
【讨论】:
【参考方案2】:+
表示您正在读取和写入寄存器。t
表示该值在 80387 浮点堆栈的顶部。
参考资料:
GCC 手册,Extended Asm 包含有关约束的一般信息 - 搜索“约束” GCC 手册,Machine Constraints 包含有关每种架构支持的特定约束的信息 - 搜索“x86 系列”【讨论】:
以上是关于GCC 程序集 "+t"的主要内容,如果未能解决你的问题,请参考以下文章