【发布时间】:2010-10-10 22:22:50
【问题描述】:
过去一周我一直在努力寻找一个关于使用 AT&T 语法的 x86 汇编的浮点运算的体面资源。理想情况下,操作码列表、它们的作用以及浮点数的存储位置。我熟悉 IEEE 754 表示。我不熟悉浮点堆栈,以及任何涉及浮点运算的程序集。
奇怪的是,这很难找到。
编辑:在过去的一个月里,我一直在查看 gcc -S 输出来学习程序集。这就是我计算除浮点运算之外的所有内容的方法。即使经过几十个没有优化编译的小程序,我仍然无法弄清楚浮点操作码和堆栈。我只在网上找到了一些琐碎的例子。
【问题讨论】:
-
重新编辑:所以,按照建议阅读
libm,并阅读英特尔手册。对不起,你别无选择。 没有像样的基于 AT&T 语法的资源,因为没有人认真对待 x86 汇编编程使用它。 -
好的,所以我有点太苛刻了,说没有人认真使用 AT&T 语法。无论如何,如果您在 Google 上搜索“devpro-libm”,您可以下载 OpenSolaris 中使用的
libm代码。这可能是比glibc更轻量级的下载。然后,查看usr/src/libm/src/i386/common目录——它是硬核浮点汇编的金矿,全部用 AT&T 语法编写。 -
我其实正要下载那个。谢谢 :) 我也不喜欢 AT&T 语法,它有一些严重的不一致之处——但我必须使用我必须使用的东西。尽管是 Intel 语法,this 是一个类似于我正在寻找的简明指南。适应 AT&T 语法的更改很容易。
-
+1 哇,这是一个相当全面的指南,至少一目了然(我知道 x86 FP,所以觉得没有必要详细阅读它;-))。是的,希望在这和
libm代码之间,你会被排序。后者其实评论的很好,不只是一大堆魔法咒语。 :-P -
是的,我现在应该准备好了。好吧,在确保我的编译器输出了一些不错的代码之后,一周之后。感谢所有的帮助。
标签: assembly floating-point x86