社区
汇编语言
帖子详情
VC内嵌汇编使用SSE微指令的问题
Diab1o
2007-12-30 04:39:51
mulps xmm0, [edi]
这样的调用运行时出现
未处理的异常: 0xC0000005: 读取位置 0xffffffff 时发生访问冲突 。
这样的非法操作,edi保存的地址确认无误,究竟是什么问题,跪求解决方法,感恩!
...全文
216
9
打赏
收藏
VC内嵌汇编使用SSE微指令的问题
mulps xmm0, [edi] 这样的调用运行时出现 未处理的异常: 0xC0000005: 读取位置 0xffffffff 时发生访问冲突 。 这样的非法操作,edi保存的地址确认无误,究竟是什么问题,跪求解决方法,感恩!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ollydbg23
2008-01-01
打赏
举报
回复
“使用SSE指令时,要操作的内存首地址必须16字节对齐,否则就会出错。
一般的汇编编译器如masm,nasm等可通过align 16来实现16字节对齐,对于VC6,可以通过__declspec(align(16))实现某变量的16字节对齐。对于动态分配的内存,默认8字节对齐,但可手工调整到16字节对齐。使用vertualalloc()这个win32API分配的内存是页对齐的,自然是16字节对齐。
当然,实现16字节对齐的方法还有很多。”
上面这位讲的实在太好了,我目前就遇到这样的问题。折腾了半天才解决的。
16直接对齐,这个很麻烦,我一开始装的是VC6集成sp6的企业版本,结果折腾了半天,__declspec(align(16))这个语句居然不认识,然后就是里面调试的时候,cpu的寄存器一律显示是0,写mmx指令也是白搭。。。最后实在太郁闷了,改装了intel的c++编译器,才把这个问题彻底解决掉,呵呵。
Diab1o
2008-01-01
打赏
举报
回复
问题已解决,感恩!
X_worm
2008-01-01
打赏
举报
回复
是VirtualAlloc()这个API函数
X_worm
2008-01-01
打赏
举报
回复
使用SSE指令时,要操作的内存首地址必须16字节对齐,否则就会出错。
一般的汇编编译器如masm,nasm等可通过align 16来实现16字节对齐,对于VC6,可以通过__declspec(align(16))实现某变量的16字节对齐。对于动态分配的内存,默认8字节对齐,但可手工调整到16字节对齐。使用vertualalloc()这个win32API分配的内存是页对齐的,自然是16字节对齐。
当然,实现16字节对齐的方法还有很多。
alan001
2007-12-31
打赏
举报
回复
up
Diab1o
2007-12-30
打赏
举报
回复
[edi]的内容应该没有问题,就是一个数组的指针,不用汇编时候完全正常,内存对齐是什么意思,要怎样做?
housisong
2007-12-30
打赏
举报
回复
[edi]的值正常吗? 内存对齐了吗?
大熊猫侯佩
2007-12-30
打赏
举报
回复
check edi value !
ollydbg23
2007-12-30
打赏
举报
回复
edi没有问题?
我虽然不是很懂mmx sse指令,但是觉得你是不是edi的指向内容出现问题了?
[
VC
] 检测AVX系列指令集的支持级别(AVX、AVX2、F16C、FMA、FMA4、XOP)
从2011年的Sandy Bridge微架构处理器开始,现在支持AVX系列指令集的处理器越来越多了。本文探讨如何用
VC
编写检测AVX系列指令集的程序,并利用了先前的CPUIDFIELD方案。 一、AVX系列指令集简介
SSE
5 指令:
SSE
5...
VIBE背景提取算法完整实现与论文解析【
VC
项目】
下表总结了两种核心理论的对比与作用: 理论名称 核心思想 实现方式 主要优势 时空一致性假设 历史状态可重现,邻域状态可迁移
使用
邻域像素样本替代自身样本 提高样本多样性,增强鲁棒性 随机采样策略 不完全依赖...
1 Studying《Performance Analysis and Tuning on Modern CPUs》1-6
主要内容包括: 性能分析基础 现代系统性能测量中的噪声
问题
及解决方案 生产环境性能监控的最佳实践 性能回归的自动化检测方法 CPU微架构深度解析 流水线、超标量、乱序执行等核心微架构特性 内存层次结构与缓存优化...
游戏编程
游戏编程指南 A Guide to Game Programming v1.10alpha 最后更新于2003.1.14 本文基于
VC
7.0 / DirectX 9.0 / Winsock 2.2 推荐
使用
Word 2000及以上版本阅读 大家看完之后如果有什么意见和建议请务必在留言簿提出,...
C/C++超级大火锅
多数是c/c++,也有少量java基础和其他知识,貌似应该叫《计算机基础
问题
汇总》比较好。不断更新~~一、new 跟 malloc 的区别是什么?1.malloc/free是C/C++语言的标准库函数,new/delete是C++的运算符2.new能够自动...
汇编语言
21,499
社区成员
41,617
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章