社区
汇编语言
帖子详情
关于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
...全文
209
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
打赏
举报
回复
关注!
一个
SSE
(流式)接口引发的
问题
文章讲述了作者在开发认知助手功能时遇到的
问题
,即在本地环境使用EventSource和fetch进行流式
SSE
请求时,数据无法分段返回,而在线上环境则正常。文章详细描述了配置步骤,并探讨了可能的原因——本地环境的HTTP代理设置差异。,
Server side event (
SSE
)实现消息推送功能
本文介绍了服务器端事件(
SSE
)在后端主动推送消息给客户端网页的场景下如何使用。
SSE
避免了HTTP请求的频繁建立和关闭,允许持久连接,使得后端能连续发送数据。在Springboot中,通过
Sse
Emitter实现
SSE
功能,客户端使用EventSource对象接收数据。文章详细讲解了
SSE
的工作原理、后端配置、客户端实现、重连机制以及线程安全
问题
,提供了
一个
简单的
SSE
实例来演示其效果。
解决Java使用
SSE
乱码
问题
文章讲述了在使用Java的Server-SentEvents(
SSE
)时遇到的
问题
,由于默认编码为ISO_8859_1,导致前端显示异常。作者提供了
一个
Sse
EmitterUTF8类的示例,通过修改
SSE
的响应头将默认编码设置为UTF-8,解决了前端呈现正常的
问题
。,
SSE
服务端主动推送只有
一个
请求拒绝轮训
本文介绍了
SSE
(Server Sent Events)服务端主动推送技术的原理,并提供了
一个
Java实现的例子,强调了
SSE
如何在HTTP请求保持开放状态的同时,通过输出流持续发送数据给客户端,避免了轮询的效率
问题
。
java 创建和请求
sse
服务
本文介绍了如何在SpringBoot项目中使用OkHttp库创建
一个
支持Server-SentEvents(
SSE
)的RESTful服务,并通过示例展示了如何发送和接收
SSE
事件。同时讨论了OkHttp的连接管理
问题
,指出在某些场景下无需手动关闭连接。
汇编语言
21,499
社区成员
41,617
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章