首页
社区
课程
招聘
[求助]关于汇编中fld系列的指令和movss系列的指令的疑惑
发表于: 2017-3-18 17:05 17753

[求助]关于汇编中fld系列的指令和movss系列的指令的疑惑

2017-3-18 17:05
17753

最近初学汇编,当观看到了关于浮点数运算的反汇编代码的时候,发现视频中的OD反汇编代码是这样的:

然后我自己也用相同的代码生成了一个可执行文件并用OD载入,到达相同的位置之后发现反汇编代码是这样的:

视频中老师讲的是关于fld之类的指令,通过影响FPU寄存器来实现浮点数的操作运算,但是到了我这里却成了movss之类的指令,我通过调试发现效果是一样的。 我的机器是win7 64位,然后项目使用VS2013编译出来的。


我想问的是那个fld系列的指令是已经被弃用了吗?为什么相同的代码生成的可执行文件却有不一样的指令?





第二次编辑:

刚才自己通过百度寻找关于movss系列指令的相关内容,发现了如下一段话,可以说解开了我的一部分疑惑:


SSE – Streaming SIMD Extension,是Intel从PIII开始加入的一种x86扩展指令集。在SSE以前,x86的浮点运算都是以栈式FPU完成的,有一定x86汇编经验的人应该不会对那些复杂的fld、fst指令陌生吧。而SSE一方面让浮点运算可以像整数运算的模式、如 add eax , ebx 那样通过直接访问寄存器完成,绕开了讨厌的栈,另一方面引入了SIMD这个概念。SIMD – Single Instruction Multiply Data,顾名思义,它可以同时让一条指令在多个数据上执行,这种体系结构在一度在大型机上非常流行,需要经常进行海量运算的大型机器通常会通过一个数学SIMD虚拟机加快处理速度,比如同时让一组数据执行一个变换,数据的规模有上百万之巨,而SIMD则可以优化数据的存储与运算,减免某些切换Context的开销。





[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 667
活跃值: (327)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
movss单精度赋值,movsd双精度赋值,而且不再是st0,  st1,...,而是XMM0-XMM7,至少现在我自己观察的是这种结果
2017-11-11 17:00
0
雪    币: 239
活跃值: (58)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
百度movss,内容很少,怎么回事?
2020-3-6 17:24
0
游客
登录 | 注册 方可回帖
返回
//