请问如何反馈visualstudio2017的BUG

WJN92 2019-07-15 08:05:56
我在DEBUG编译的设置环境下,发现下面红色的代码并没有编译。而且看汇编代码应该是帮我优化了。
它直接放进了xmm0寄存器,并没有帮我保存到内存。导致后面的代码并没有正确执行





下面是编译器命令行

/JMC /GS /W3 /Zc:wchar_t /ZI /Gm- /Od /sdl /Fd"x64\Debug\vc141.pdb" /Zc:inline /fp:precise /D "_DEBUG" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /D "_CRT_SECURE_NO_DEPRECATE" /errorReport:prompt /WX- /Zc:forScope /RTC1 /Gd /MDd /FC /Fa"x64\Debug\" /EHsc /nologo /Fo"x64\Debug\" /Fp"x64\Debug\FourEye.pch" /diagnostics:classic

...全文
307 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhhh63 2019-07-17
  • 打赏
  • 举报
回复
帮助/发送反馈/报告问题
zgl7903 2019-07-16
  • 打赏
  • 举报
回复
WJN92 2019-07-15
  • 打赏
  • 举报
回复
下面是引用Hit0.t 的汇编

	
FE_VECTOR3 aMax = FE_Max(FE_Max(FE_ConditionSwitch(Hit0.bHit, Hit0.vPoint, FE_VECTOR3(-FLT_MAX, -FLT_MAX, -FLT_MAX)),
00007FF7ED043F29 movss xmm3,dword ptr [__real@ff7fffff (07FF7ED080714h)]
00007FF7ED043F31 movss xmm2,dword ptr [__real@ff7fffff (07FF7ED080714h)]
00007FF7ED043F39 movss xmm1,dword ptr [__real@ff7fffff (07FF7ED080714h)]
00007FF7ED043F41 lea rcx,[rbp+964h]
00007FF7ED043F48 call FE_VECTOR3::FE_VECTOR3 (07FF7ECFC2C4Eh)
00007FF7ED043F4D lea rcx,[rbp+12E0h]
00007FF7ED043F54 mov rdi,rcx
00007FF7ED043F57 mov rsi,rax
00007FF7ED043F5A mov ecx,0Ch
00007FF7ED043F5F rep movs byte ptr [rdi],byte ptr [rsi]
00007FF7ED043F61 lea rax,[rbp+12B0h]
00007FF7ED043F68 lea rcx,[rbp+0D0h]
00007FF7ED043F6F mov rdi,rax
00007FF7ED043F72 mov rsi,rcx
00007FF7ED043F75 mov ecx,0Ch
00007FF7ED043F7A rep movs byte ptr [rdi],byte ptr [rsi]
00007FF7ED043F7C lea r9,[rbp+12E0h]
00007FF7ED043F83 lea r8,[rbp+12B0h]
00007FF7ED043F8A movzx edx,byte ptr [rbp+0CCh]
00007FF7ED043F91 lea rcx,[rbp+984h]
00007FF7ED043F98 call FE_ConditionSwitch (07FF7ECFC4184h)
00007FF7ED043F9D lea rcx,[rbp+1460h]
00007FF7ED043FA4 mov rdi,rcx
00007FF7ED043FA7 mov rsi,rax
00007FF7ED043FAA mov ecx,0Ch
00007FF7ED043FAF rep movs byte ptr [rdi],byte ptr [rsi]
00007FF7ED043FB1 movss xmm3,dword ptr [__real@ff7fffff (07FF7ED080714h)]
00007FF7ED043FB9 movss xmm2,dword ptr [__real@ff7fffff (07FF7ED080714h)]
00007FF7ED043FC1 movss xmm1,dword ptr [__real@ff7fffff (07FF7ED080714h)]
00007FF7ED043FC9 lea rcx,[rbp+9A4h]
00007FF7ED043FD0 call FE_VECTOR3::FE_VECTOR3 (07FF7ECFC2C4Eh)
00007FF7ED043FD5 lea rcx,[rbp+1340h]
00007FF7ED043FDC mov rdi,rcx
00007FF7ED043FDF mov rsi,rax
00007FF7ED043FE2 mov ecx,0Ch
00007FF7ED043FE7 rep movs byte ptr [rdi],byte ptr [rsi]
00007FF7ED043FE9 lea rax,[rbp+1310h]
00007FF7ED043FF0 lea rcx,[rbp+0A0h]
00007FF7ED043FF7 mov rdi,rax
00007FF7ED043FFA mov rsi,rcx
00007FF7ED043FFD mov ecx,0Ch
00007FF7ED044002 rep movs byte ptr [rdi],byte ptr [rsi]
00007FF7ED044004 lea r9,[rbp+1340h]
00007FF7ED04400B lea r8,[rbp+1310h]
00007FF7ED044012 movzx edx,byte ptr [rbp+9Ch]
00007FF7ED044019 lea rcx,[rbp+9C4h]
00007FF7ED044020 call FE_ConditionSwitch (07FF7ECFC4184h)
00007FF7ED044025 lea rcx,[rbp+1400h]
00007FF7ED04402C mov rdi,rcx
00007FF7ED04402F mov rsi,rax
00007FF7ED044032 mov ecx,0Ch
00007FF7ED044037 rep movs byte ptr [rdi],byte ptr [rsi]
00007FF7ED044039 movss xmm3,dword ptr [__real@ff7fffff (07FF7ED080714h)]
00007FF7ED044041 movss xmm2,dword ptr [__real@ff7fffff (07FF7ED080714h)]
00007FF7ED044049 movss xmm1,dword ptr [__real@ff7fffff (07FF7ED080714h)]
00007FF7ED044051 lea rcx,[rbp+9E4h]
00007FF7ED044058 call FE_VECTOR3::FE_VECTOR3 (07FF7ECFC2C4Eh)
00007FF7ED04405D lea rcx,[rbp+13A0h]
00007FF7ED044064 mov rdi,rcx
00007FF7ED044067 mov rsi,rax
00007FF7ED04406A mov ecx,0Ch
00007FF7ED04406F rep movs byte ptr [rdi],byte ptr [rsi]
00007FF7ED044071 lea rax,[rbp+1370h]
00007FF7ED044078 lea rcx,[rbp+70h]
00007FF7ED04407C mov rdi,rax
00007FF7ED04407F mov rsi,rcx
00007FF7ED044082 mov ecx,0Ch
00007FF7ED044087 rep movs byte ptr [rdi],byte ptr [rsi]
00007FF7ED044089 lea r9,[rbp+13A0h]
00007FF7ED044090 lea r8,[rbp+1370h]
00007FF7ED044097 movzx edx,byte ptr [rbp+6Ch]
00007FF7ED04409B lea rcx,[rbp+0A04h]
00007FF7ED0440A2 call FE_ConditionSwitch (07FF7ECFC4184h)
00007FF7ED0440A7 lea rcx,[rbp+13D0h]
00007FF7ED0440AE mov rdi,rcx
00007FF7ED0440B1 mov rsi,rax
00007FF7ED0440B4 mov ecx,0Ch
00007FF7ED0440B9 rep movs byte ptr [rdi],byte ptr [rsi]
00007FF7ED0440BB lea r8,[rbp+1400h]
00007FF7ED0440C2 lea rdx,[rbp+13D0h]
00007FF7ED0440C9 lea rcx,[rbp+0A24h]
00007FF7ED0440D0 call FE_Max (07FF7ECFC27B2h)
00007FF7ED0440D5 lea rcx,[rbp+1430h]
00007FF7ED0440DC mov rdi,rcx
00007FF7ED0440DF mov rsi,rax
00007FF7ED0440E2 mov ecx,0Ch
00007FF7ED0440E7 rep movs byte ptr [rdi],byte ptr [rsi]
00007FF7ED0440E9 lea r8,[rbp+1460h]
00007FF7ED0440F0 lea rdx,[rbp+1430h]
00007FF7ED0440F7 lea rcx,[aMax]
00007FF7ED0440FE call FE_Max (07FF7ECFC27B2h)
FE_ConditionSwitch(Hit1.bHit, Hit1.vPoint, FE_VECTOR3(-FLT_MAX, -FLT_MAX, -FLT_MAX))),
FE_ConditionSwitch(Hit2.bHit, Hit2.vPoint, FE_VECTOR3(-FLT_MAX, -FLT_MAX, -FLT_MAX)));

FE_VECTOR3 aMin = FE_Min(FE_Min(FE_ConditionSwitch(Hit0.bHit, Hit0.vPoint, FE_VECTOR3(FLT_MAX, FLT_MAX, FLT_MAX)),


我猜编译器是想把测试结果放在xmm0。但是后面的代码就忘记用xmm0了
WJN92 2019-07-15
  • 打赏
  • 举报
回复
下面是汇编代码


LineIntersectResult Hit0;
00007FF7ED043A58 lea rcx,[Hit0]
00007FF7ED043A5C call LineIntersectResult::LineIntersectResult (07FF7ECFC2B45h)
LineIntersect(p1, line(T2.vPoint[0], T2.vPoint[1]), &Hit0);
00007FF7ED043A61 mov eax,0Ch
00007FF7ED043A66 imul rax,rax,1
00007FF7ED043A6A lea rcx,[rbp+0E00h]
00007FF7ED043A71 mov rdx,qword ptr [&T2]
00007FF7ED043A78 mov rdi,rcx
00007FF7ED043A7B lea rsi,[rdx+rax]
00007FF7ED043A7F mov ecx,0Ch
00007FF7ED043A84 rep movs byte ptr [rdi],byte ptr [rsi]
00007FF7ED043A86 mov eax,0Ch
00007FF7ED043A8B imul rax,rax,0
00007FF7ED043A8F lea rcx,[rbp+0DD0h]
00007FF7ED043A96 mov rdx,qword ptr [&T2]
00007FF7ED043A9D mov rdi,rcx
00007FF7ED043AA0 lea rsi,[rdx+rax]
00007FF7ED043AA4 mov ecx,0Ch
00007FF7ED043AA9 rep movs byte ptr [rdi],byte ptr [rsi]
00007FF7ED043AAB lea r8,[rbp+0E00h]
00007FF7ED043AB2 lea rdx,[rbp+0DD0h]
00007FF7ED043AB9 lea rcx,[rbp+844h]
00007FF7ED043AC0 call line::line (07FF7ECFC39CDh)
00007FF7ED043AC5 lea rcx,[rbp+0E60h]
00007FF7ED043ACC mov rdi,rcx
00007FF7ED043ACF mov rsi,rax
00007FF7ED043AD2 mov ecx,18h
00007FF7ED043AD7 rep movs byte ptr [rdi],byte ptr [rsi]
00007FF7ED043AD9 lea rax,[rbp+0E30h]
00007FF7ED043AE0 lea rcx,[p1]
00007FF7ED043AE4 mov rdi,rax
00007FF7ED043AE7 mov rsi,rcx
00007FF7ED043AEA mov ecx,10h
00007FF7ED043AEF rep movs byte ptr [rdi],byte ptr [rsi]
00007FF7ED043AF1 lea r8,[Hit0]
00007FF7ED043AF5 lea rdx,[rbp+0E60h]
00007FF7ED043AFC lea rcx,[rbp+0E30h]
00007FF7ED043B03 call LineIntersect (07FF7ECFC3202h)
if (Hit0.t > -0.08f && Hit0.t < 1.08f)
00007FF7ED043B08 movss xmm0,dword ptr [Hit0]
00007FF7ED043B0D comiss xmm0,dword ptr [__real@bda3d70a (07FF7ED080704h)]
00007FF7ED043B14 jbe TriangleTriangleIntersect+16Eh (07FF7ED043B1Eh)
if (Hit0.t > -0.08f && Hit0.t < 1.08f)
00007FF7ED043B16 movss xmm0,dword ptr [__real@3f8a3d71 (07FF7ED080684h)]
Hit0.bHit == true;

LineIntersectResult Hit1;
00007FF7ED043B1E lea rcx,[Hit1]
00007FF7ED043B25 call LineIntersectResult::LineIntersectResult (07FF7ECFC2B45h)
LineIntersect(p1, line(T2.vPoint[0], T2.vPoint[2]), &Hit1);
00007FF7ED043B2A mov eax,0Ch
00007FF7ED043B2F imul rax,rax,2
00007FF7ED043B33 lea rcx,[rbp+0ED0h]
00007FF7ED043B3A mov rdx,qword ptr [&T2]
00007FF7ED043B41 mov rdi,rcx
00007FF7ED043B44 lea rsi,[rdx+rax]
00007FF7ED043B48 mov ecx,0Ch
00007FF7ED043B4D rep movs byte ptr [rdi],byte ptr [rsi]
00007FF7ED043B4F mov eax,0Ch
00007FF7ED043B54 imul rax,rax,0
00007FF7ED043B58 lea rcx,[rbp+0EA0h]
00007FF7ED043B5F mov rdx,qword ptr [&T2]
00007FF7ED043B66 mov rdi,rcx
00007FF7ED043B69 lea rsi,[rdx+rax]
00007FF7ED043B6D mov ecx,0Ch
00007FF7ED043B72 rep movs byte ptr [rdi],byte ptr [rsi]
00007FF7ED043B74 lea r8,[rbp+0ED0h]
00007FF7ED043B7B lea rdx,[rbp+0EA0h]
00007FF7ED043B82 lea rcx,[rbp+874h]
00007FF7ED043B89 call line::line (07FF7ECFC39CDh)
00007FF7ED043B8E lea rcx,[rbp+0F30h]
00007FF7ED043B95 mov rdi,rcx
00007FF7ED043B98 mov rsi,rax
00007FF7ED043B9B mov ecx,18h
00007FF7ED043BA0 rep movs byte ptr [rdi],byte ptr [rsi]
00007FF7ED043BA2 lea rax,[rbp+0F00h]
00007FF7ED043BA9 lea rcx,[p1]
00007FF7ED043BAD mov rdi,rax
00007FF7ED043BB0 mov rsi,rcx
00007FF7ED043BB3 mov ecx,10h
00007FF7ED043BB8 rep movs byte ptr [rdi],byte ptr [rsi]
00007FF7ED043BBA lea r8,[Hit1]
00007FF7ED043BC1 lea rdx,[rbp+0F30h]
00007FF7ED043BC8 lea rcx,[rbp+0F00h]
00007FF7ED043BCF call LineIntersect (07FF7ECFC3202h)
if (Hit1.t > -0.08f && Hit1.t < 1.08f)
00007FF7ED043BD4 movss xmm0,dword ptr [Hit1]
00007FF7ED043BDC comiss xmm0,dword ptr [__real@bda3d70a (07FF7ED080704h)]
00007FF7ED043BE3 jbe TriangleTriangleIntersect+23Dh (07FF7ED043BEDh)
00007FF7ED043BE5 movss xmm0,dword ptr [__real@3f8a3d71 (07FF7ED080684h)]
Hit1.bHit == true;

LineIntersectResult Hit2;
00007FF7ED043BED lea rcx,[Hit2]
00007FF7ED043BF4 call LineIntersectResult::LineIntersectResult (07FF7ECFC2B45h)
LineIntersect(p1, line(T2.vPoint[1], T2.vPoint[2]), &Hit2);
00007FF7ED043BF9 mov eax,0Ch
00007FF7ED043BFE imul rax,rax,2
00007FF7ED043C02 lea rcx,[rbp+0FA0h]
00007FF7ED043C09 mov rdx,qword ptr [&T2]
00007FF7ED043C10 mov rdi,rcx
00007FF7ED043C13 lea rsi,[rdx+rax]
00007FF7ED043C17 mov ecx,0Ch
00007FF7ED043C1C rep movs byte ptr [rdi],byte ptr [rsi]
00007FF7ED043C1E mov eax,0Ch
00007FF7ED043C23 imul rax,rax,1
00007FF7ED043C27 lea rcx,[rbp+0F70h]
00007FF7ED043C2E mov rdx,qword ptr [&T2]
00007FF7ED043C35 mov rdi,rcx
00007FF7ED043C38 lea rsi,[rdx+rax]
00007FF7ED043C3C mov ecx,0Ch
00007FF7ED043C41 rep movs byte ptr [rdi],byte ptr [rsi]
00007FF7ED043C43 lea r8,[rbp+0FA0h]
00007FF7ED043C4A lea rdx,[rbp+0F70h]
00007FF7ED043C51 lea rcx,[rbp+8A4h]
00007FF7ED043C58 call line::line (07FF7ECFC39CDh)
00007FF7ED043C5D lea rcx,[rbp+1000h]
00007FF7ED043C64 mov rdi,rcx
00007FF7ED043C67 mov rsi,rax
00007FF7ED043C6A mov ecx,18h
00007FF7ED043C6F rep movs byte ptr [rdi],byte ptr [rsi]
00007FF7ED043C71 lea rax,[rbp+0FD0h]
00007FF7ED043C78 lea rcx,[p1]
00007FF7ED043C7C mov rdi,rax
00007FF7ED043C7F mov rsi,rcx
00007FF7ED043C82 mov ecx,10h
00007FF7ED043C87 rep movs byte ptr [rdi],byte ptr [rsi]
00007FF7ED043C89 lea r8,[Hit2]
00007FF7ED043C90 lea rdx,[rbp+1000h]
00007FF7ED043C97 lea rcx,[rbp+0FD0h]
00007FF7ED043C9E call LineIntersect (07FF7ECFC3202h)
if (Hit2.t > -0.08f && Hit2.t < 1.08f)
00007FF7ED043CA3 movss xmm0,dword ptr [Hit2]
00007FF7ED043CAB comiss xmm0,dword ptr [__real@bda3d70a (07FF7ED080704h)]
00007FF7ED043CB2 jbe TriangleTriangleIntersect+30Ch (07FF7ED043CBCh)
00007FF7ED043CB4 movss xmm0,dword ptr [__real@3f8a3d71 (07FF7ED080684h)]
Hit2.bHit == true;


16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧