水木社区手机版
首页
|版面-C程序设计语言(CProgramming)|
新版wap站已上线
返回
1/1
|
转到
主题:[求助][讨论] cpuid 指令加优化选项后执行错误
6楼
|
fanci
|
2020-05-15 12:04:19
|
展开
用 compiler intrinsic 好点,没有这种ASM副作用的烦恼
https://docs.microsoft.com/en-us/cpp/intrinsics/cpuid-cpuidex?view=vs-2019
【 在 lambdago () 的大作中提到: 】
: 已解决,原因是cpuid指令使用不当
:
: 分析:看到
https://www.intel.com/content/dam/www/public/us/en/documents/white-papers/ia-32-ia-64-benchmark-code-execution-paper.pdf
使用cpuid 和rdtsc 配合使用序列化指令,并获取时间。但实际上cpuid 运行后结果会修改rax,rbx,rcx等寄存器数据,再执行rdtsc获取的时间会覆盖cpuid所修改的寄存器,所以两个联合起来使用没有问题,但单独使用则有问题。之所以没添加优化选项没有问题是因为ii值存在栈上,优化后存在rbx上。
:
--
FROM 203.145.94.*
1/1
|
转到
选择讨论区
首页
|
分区
|
热推
BYR-Team
©
2010.
KBS Dev-Team
©
2011
登录完整版