浮点型变量
来源:互联网 发布:以人为镜知得失的意思 编辑:程序博客网 时间:2024/05/01 14:13
//c++float fFloat=(float)argc;//汇编后0040e9d8 fild dword ptr [ebp+8]0040e9dbfst dword ptr [ebp-4]取出argc到ST(0)中,并将它放到 fFloat中//c++printf("%f",fFloat);//汇编后0040e9desub esp,80040e9e1fstp qword [esp];调用printf0040e9e4push offset string "%f" (0042302c)0040e9e9 call printf (0040e940)0040e9eeadd esp,0ch前两步申请空间,fstp将st0的数据存储到后面的addr中并将st0出栈。对比//c++argc=(int)fFloat;0040e9f1 fld dword ptr [ebp-4]0040e9f4call __ftol (0040e688)0040e9f9mov dword ptr [ebp+8],eax//c++printf("%d",argc)0040e9fcmov eax,dword ptr [ebp+8]0040e9ffpush eax0040ea00push offset string "%d" (0042301c)0040ea05call printf (0040e940)0040ea0aadd esp,8float 类型浮点数虽然占4字节,但都是以8字节方式进行处理。当浮点数作为参数时,并不能直接压栈。因为push指令只能传入四字节数据到栈中。浮点数作为返回值的情况也是如此,同样需要传递8字节数据。//c++fFloat = GetFloat();//0040ea3d call @ILT+5(GetFloat) (0040100a)0040ea42fst dword ptr [ebp-4]//c++float GetFloat(){return 12.25f;;0040e9d8 fld dword ptr [__real@4@4002c400000000000000 (0042301c)]0040e9e4ret}_ftol的实现;保存环境 预留语句变量空间push ebpmov ebp,espadd esp,0F4h;浮点异常检查 cpu 与fpu同步工作waitfnstcw word ptr [ebp-2]waitmovax,word ptr [ebp-2]or ah,0chmov word ptr [ebp-4],axfldcw word ptr [ebp-4];从st0中取出8字节数据转换成整形存入ebp-0ch;将st0从栈中谈出fistp qword ptr [ecp-0ch]fldcw word ptr [ebp-2];使用eax保存长整型数据的低4字节 用于返回mov wax,dowrd ptr [ebp-0ch];使用edx保存长整型数据的高4字节 用于返回mov edx,dword ptr [ebp-8];释放栈leaveret开始部落做了一些浮点异常检查 cpu与ftp同步同坐 最后通过调用fistp来实现浮点数与证书之间的转换。由于浮点数占8个字节 而在32位下的整形只占4个字节,所以使用edx来保存多出的四字节数据。
0 0
- 浮点型变量
- 浮点型变量
- 浮点型变量的存储格式
- 浮点型变量与零值比较
- C++整型和浮点型变量
- PHP基础教程-09 浮点型变量
- C++浮点型变量的存储方式
- 两个整数相除转浮点型变量/浮点型变量的输出
- 利用函数将一个浮点型变量转化为二进制
- is_double---is_float的别名 检测变量是否是浮点型
- 浮点型变量在计算机内存中的存储格式
- 利用函数将一个浮点型变量转化为二进制
- 利用函数将一个浮点型变量转化为二进制
- 分配值的浮点变量
- 常量,变量,常变量,整型,浮点型,输入输出函数;痛点总结
- 000052:创建数值变量,实现将字符串与整型、浮点型变量相连的结果输出
- 浮点型
- 浮点型
- python: ImportError: No module named bz2
- 【AWS re:Invent2014直播系列】AWS副总裁谈数据中心网络打造
- 初任项目管理负责人(一)
- android shape的使用
- ContentValues和HashTable和HashMap分类:
- 浮点型变量
- 写给那些跟自己一样正在奋斗的人们
- 《游戏人工智能编程案例》学习的第一天
- 一则工作要求
- JVM内存区域组成
- 简单水贪心 hdu 2831
- Python build finished, but the necessary bits to build these modules were
- 《数据结构与算法》之堆排序
- windows编程notes