社区
汇编语言
帖子详情
关于sse的一个问题。
抬头看路
2001-11-27 01:54:27
我用masm32写了一个函数,用到了sse,在bcb中使用,有时没有问题,有时在第二次用的时候会发生异常Privileged instruction。在这个函数中我只使用了esp,eax,ecx,edx,xmm0,xmm1,xmm2,xmm3。是不是哪个寄存器的值需要保护?
环境:Win2000 pro 2195 + sp2
bcb5 + sp1
masm32 6.14
...全文
174
14
打赏
收藏
关于sse的一个问题。
我用masm32写了一个函数,用到了sse,在bcb中使用,有时没有问题,有时在第二次用的时候会发生异常Privileged instruction。在这个函数中我只使用了esp,eax,ecx,edx,xmm0,xmm1,xmm2,xmm3。是不是哪个寄存器的值需要保护? 环境:Win2000 pro 2195 + sp2 bcb5 + sp1 masm32 6.14
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
抬头看路
2001-12-07
打赏
举报
回复
我不知道athlon xp实现sse和intel实现的sse有不同,否则sse的程序不能在xp上正常运行
lhztco99
2001-12-07
打赏
举报
回复
64]
AMD 的网站上说:
52 SSE instructions with SIMD integer and floating point additions offer excellent compatibility with Intel’s SSE technology
请注意数字 52 SSE instructions with SIMD integer and floating point additions
可是 Intel 体系还有8条Cache和存贮控制指令和4条状态控制指令共64条,不知道AMD实现没?
你试试这些:
Movntq [EDI],MM0
Prefectchnta [ESI]
等等,看看XP上正常否?只是试试看,能通过也好,不行也好,只是试试看..
lhztco99
2001-12-06
打赏
举报
回复
还有, 你说有时侯会出错,有时候不会,那么绝对不是语法问题。而是你的
数据存放地址每次运行都是不同的(这就不用我说了)。有时凑巧对齐了128bit,
执行 movaps 就没问题,有时候没对齐,用movaps 就保证出错。呵呵,如果不是
这个问题,我马上回家抱孩子去。你这态度实在是不怎么地。好心帮你解决问题,
一句话: 过河XX 。 算了,懒的和你一般计较。
lhztco99
2001-12-06
打赏
举报
回复
to whyjld(白痴) :
老大啊,你懂不懂啊,在SSE里可没有 128bit 的整数类型啊,在SSE2里才出现的。
在SSE里,XMM0-XMM7就是128bit浮点寄存器。
而且就算在SSE2里,128bit整数和128bit浮点是共用的寄存器,都是XMM0-XMM7,
并且你赋值的一句:
movaps xmm0, [ecx]; 中
movaps = Move Aligned Packed Single 居然说不是浮点数,
大概你是想加快强制加快装入数据的过程吧?傻,用XMM取数据比MM要慢的多,哈哈。
抬头看路
2001-12-06
打赏
举报
回复
xmm不是浮点寄存器,我没用emms已经解决
lhztco99
2001-12-06
打赏
举报
回复
首先:你的CPU是 速龙 XP 吗?因为只有XP才部分支持SSE指令,我以为你用的Intel体系。
其次:如果说是这样,是我误会你了。Sorry !!!
再次:我说SSE中XMM是浮点寄存器并不说XMM和原浮点寄存器共用,而是说XMM保存的是Single浮点数。
最后: 我觉得你比较小气,我也是。
抬头看路
2001-12-06
打赏
举报
回复
lhztco99(环保概念股)
首先,谢谢你的热情。很希望有机会和你更多的讨论问题,我周围愿意搞这个的很少。我的qq:121145789,email whyjld@sina.com
其次,指出你的一个错误,xmm0-7是新加入的寄存器,所以需要os的支持在进程切换的时候保存现场,但是3dnow就不需要os特别的支持,他使用的是mm0-7,和mmx是一样的,而mmx的mm0-7是x86的80位浮点寄存器的别名,所以才需要在用mmx指令的时候用emms在浮点状态和mmx状态之间切换,而sse不需要,他用的寄存器和浮点寄存器没什么关系。我的程序现在就是这样,我对齐后已经没有问题,原来是因为bcb中对齐指令没起作用,是8字节对齐的所以会出问题。而且我现在的程序中sse和浮点指令是交错使用的(为了比较sse和浮点指令计算结果的差异),没用emms没有任何问题。
再次,在这方面我的确是刚开始学,但是你说的我还都懂,所以请你以后指责别人前保证自己的观点是正确的。
最后,2001-12-4 17:31我已经发信给斑竹要求将这个帖子删除,因为我已经解决问题,不知道为什么帖子还在。
lhztco99
2001-12-05
打赏
举报
回复
哦 movaps 要求内存地址对齐128bit边界,就是你的ecx要是16的倍数才行啊。
我看你还是用不要求对齐的movups好了,比较保险.速度也差不多了。
另,emms在PIII上一定要用,你只要写了 MM0-MM7 和 XMM0-XMM7 就实际上改写了
浮点寄存器状态,所以要用。P4 可以不用。
lhztco99
2001-12-03
打赏
举报
回复
还有啊 esp好象要保护的哦
lhztco99
2001-12-03
打赏
举报
回复
忘记emms了吧!
抬头看路
2001-12-03
打赏
举报
回复
开始部分是这样的
retaddress = 0
dst = retaddress+4
m1 = dst+4
m2 = m1+4
mov ecx, [esp+m1];第一个数组
mov edx, [esp+m2];第二个数组
mov eax, [esp+dst];目标数组
一般第二次调用这个函数到下面这一句就出问题了。
movaps xmm0, [ecx];读入第一个数组
抬头看路
2001-12-03
打赏
举报
回复
esp我保护了也不行。
sse不使用浮点寄存器,应该不用emms吧
抬头看路
2001-11-30
打赏
举报
回复
请多帮忙
yoboo_yb
2001-11-29
打赏
举报
回复
关注!
C++实现最小二乘法一元回归和多项式拟合
其中以一元函数(线性)和多元函数(多项式)居多,下面这个类专门用于进行多项式拟合,可以根据用户输入的阶次进行多项式拟合,算法来自于网上,和GSL的拟合算法对比过,没有
问题
。此类在拟合完后还能计算拟合之后...
SSE
,SSR,
SSE
的关系
一、
SSE
(和方差) 该统计参数计算的是拟合数据和原始数据对应点的误差的平方和,计算公式如下
SSE
越接近于0,说明模型选择和拟合更好,数据预测也越成功。接下来的MSE和RMSE因为和
SSE
是同出一宗,所以效果一样二...
Nestjs最佳实践
目前来说 React 应该是
一个
非常好用的前端框架,生态非常完善,并且十分灵活简单。Nestjs 则是 Node.js 中唯一且无敌存在的后端 web 框架。因为我个人从事这套技术栈开发已经 4 年多,所以颇有心得,做了这套 React...
解决
SSE
流被Nginx缓存的
问题
拿我们的服务为例子,因为某些历史遗留原因,客户端到服务端实际上存在两个nginx网关,
一个
是公司层面的网关,
一个
是用于k8s反向代理的网关,这个时候单纯设置X-Accel-Buffering=no就无效了。如果你的服务使用了...
java
sse
实例_使用
SSE
指令
如果
SSE
代码更快或更快取决于许多因素:第
一个
当然是
问题
是内存限制还是CPU限制 . 如果内存总线是瓶颈,
SSE
将无济于事 . 尝试简化整数计算,如果这使代码更快,它可能受CPU限制,并且你很有可能加快它的速度 .请注意...
汇编语言
21,459
社区成员
41,601
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章