fscale在一些文章中的描述

如果在网上搜浮点运算指令,可以找到很多,大多数都是一样的。其中有一个版本这这样说的

FSCALE
2 的 st(0) 次方
st(0) <-  2 ^ st(0)

我刚开始就是这样用的,但得到的是错误的结果,后来找资料,自己写实验程序做实验发现其实是这样的

FSCALE               st(0)*2^st(1),并不是上面所说的st(0) <- 2 ^ st(0),浪费了n多时间

不知道是不是因为指令集不同造成的,但我这确实是这样的。

希望大家在转载别人文章的时候能仔细看看。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
You are visitor as of October 17, 1996.The Art of Assembly Language ProgrammingForward Why Would Anyone Learn This Stuff?1 What's Wrong With Assembly Language2 What's Right With Assembly Language?3 Organization of This Text and Pedagogical Concerns4 Obtaining Program Source Listings and Other Materials in This TextSection One: Machine OrganizationArt of Assembly Language: Chapter OneChapter One - Data Representation1.0 - Chapter Overview1.1 - Numbering Systems1.1.1 - A Review of the Decimal System1.1.2 - The Binary Numbering System1.1.3 - Binary Formats1.2 - Data Organization1.2.1 - Bits1.2.2 - Nibbles1.2.3 - Bytes1.2.4 - Words1.2.5 - Double Words1.3 - The Hexadecimal Numbering System1.4 - Arithmetic Operations on Binary and Hexadecimal Numbers1.5 - Logical Operations on Bits1.6 - Logical Operations on Binary Numbers and Bit Strings1.7 - Signed and Unsigned Numbers1.8 - Sign and Zero Extension1.9 - Shifts and Rotates1.10 - Bit Fields and Packed Data1.11 - The ASCII Character Set1.12 Summary1.13 Laboratory Exercises1.13.1 Installing the Software1.13.2 Data Conversion Exercises1.13.3 Logical Operations Exercises1.13.4 Sign and Zero Extension Exercises1.13.5 Packed Data Exercises1.14 Questions1.15 Programming ProjectsChapter Two - Boolean Algebra2.0 - Chapter Overview2.1 - Boolean Algebra2.2 - Boolean Functions and Truth Tables2.3 - Algebraic Manipulation of Boolean Expressions2.4 - Canonical Forms2.5 - Simplification of Boolean Functions2.6 - What Does This Have To Do With Computers, Anyway?2.6.1 - Correspondence Between Electronic Circuits and Boolean Functions2.6.2 - Combinatorial Circuits2.6.3 - Sequential and Clocked Logic2.7 - Okay, What Does It Have To Do With Programming, Then?2.8 - Generic Boolean Functions2.9 Laboratory Exercises<
实数与文本转化的子程序<br><br>函数声明如下:<br>void real2txt(char* text, float f, int width);<br>void real2txt(char* text, double f, int width);<br>void txt2real(char * text, float * f, int width);<br>void txt2real(char * text, double * f, int width);<br><br>编译及运行要求:支持 Intel 指令集,支持 C 与汇编混合编译。(如 Windows + VC)<br><br>缘起:我在 C 标准库里似乎没有找到文本转化为实数的程序。因为要用,只好自己编了一个。为了方便起见,我在程序没有牵涉到科学记数法的处理。<br><br>效率:本着一切效率优先的原则,我用标准 C 与汇编语言 (Intel 8087 指令系统) 混合编程的方法。所有函数均进行过效率测试,结果如下:<br> 实数->文本:12 ~ 24 字节文本的转化耗费 1 ~ 2 kClk<br> 文本->实数:12 ~ 32 字节文本的转化耗费 0.8 ~ 3 kClk<br>测试平台是 Intel 迅驰 3,单位 kClk 是一千个 CPU 指令周期。相比之下,C 标准库函数 pow(a, b) 的 CPU 耗费是 0.5 kClk,而 sprintf(***,"%f",***) 的系统耗费则是 14 kClk。<br><br>问题:把文本转化成实数的问题似乎不是很大,但把实数转化成文本问题就大了:8087 没有反对数指令!也就是说,pow(a, b) 必须自己算!我曾经使用过一种算法,即用多次开平方的方式来实现指数运算,但效率只有 pow(a, b) 的六分之一。最后实在无奈,我只要还是使用 pow(a, b) 来算指数。我甚至反汇编 pow(a, b),但没看懂算法,而且也没见代码使用 fscale 这样的指令。<br>对数指令 fyl2x 的系统耗费一般在 0.180 kClk,相比之下反对数实在太慢了。怎么快速地算反对数这个问题我实在想不通,望大侠赐教!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值