Improving the State of Debug Performance in C++ - C++ Team Blog (original) (raw)
add_1_impl<...> PROC $LN3: mov QWORD PTR [rsp+16], rdx mov BYTE PTR [rsp+8], cl sub rsp, 248 ; 000000f8H mov DWORD PTR $T1[rsp], 1 lea rcx, QWORD PTR $T1[rsp] call ??$move@H@std@@YA$$QEAH$$QEAH@Z mov eax, DWORD PTR [rax] mov DWORD PTR tv74[rsp], eax mov eax, 4 imul rax, rax, 0 mov rcx, QWORD PTR arr$[rsp] add rcx, rax mov rax, rcx mov rcx, rax call ??$forward@AEAH@std@@YAAEAHAEAH@Z mov QWORD PTR tv70[rsp], rax mov rax, QWORD PTR tv70[rsp] mov eax, DWORD PTR [rax] mov DWORD PTR tv72[rsp], eax mov eax, DWORD PTR tv74[rsp] mov ecx, DWORD PTR tv72[rsp] add ecx, eax mov eax, ecx mov rcx, QWORD PTR tv70[rsp] mov DWORD PTR [rcx], eax mov DWORD PTR $T2[rsp], 1 lea rcx, QWORD PTR $T2[rsp] call ??$move@H@std@@YA$$QEAH$$QEAH@Z mov eax, DWORD PTR [rax] mov DWORD PTR tv86[rsp], eax mov eax, 4 imul rax, rax, 1 mov rcx, QWORD PTR arr$[rsp] add rcx, rax mov rax, rcx mov rcx, rax call ??$forward@AEAH@std@@YAAEAHAEAH@Z mov QWORD PTR tv82[rsp], rax mov rax, QWORD PTR tv82[rsp] mov eax, DWORD PTR [rax] mov DWORD PTR tv84[rsp], eax mov eax, DWORD PTR tv86[rsp] mov ecx, DWORD PTR tv84[rsp] add ecx, eax mov eax, ecx mov rcx, QWORD PTR tv82[rsp] mov DWORD PTR [rcx], eax mov DWORD PTR $T3[rsp], 1 lea rcx, QWORD PTR $T3[rsp] call ??$move@H@std@@YA$$QEAH$$QEAH@Z mov eax, DWORD PTR [rax] mov DWORD PTR tv130[rsp], eax mov eax, 4 imul rax, rax, 2 mov rcx, QWORD PTR arr$[rsp] add rcx, rax mov rax, rcx mov rcx, rax call ??$forward@AEAH@std@@YAAEAHAEAH@Z mov QWORD PTR tv94[rsp], rax mov rax, QWORD PTR tv94[rsp] mov eax, DWORD PTR [rax] mov DWORD PTR tv128[rsp], eax mov eax, DWORD PTR tv130[rsp] mov ecx, DWORD PTR tv128[rsp] add ecx, eax mov eax, ecx mov rcx, QWORD PTR tv94[rsp] mov DWORD PTR [rcx], eax mov DWORD PTR $T4[rsp], 1 lea rcx, QWORD PTR $T4[rsp] call ??$move@H@std@@YA$$QEAH$$QEAH@Z mov eax, DWORD PTR [rax] mov DWORD PTR tv142[rsp], eax mov eax, 4 imul rax, rax, 3 mov rcx, QWORD PTR arr$[rsp] add rcx, rax mov rax, rcx mov rcx, rax call ??$forward@AEAH@std@@YAAEAHAEAH@Z mov QWORD PTR tv138[rsp], rax mov rax, QWORD PTR tv138[rsp] mov eax, DWORD PTR [rax] mov DWORD PTR tv140[rsp], eax mov eax, DWORD PTR tv142[rsp] mov ecx, DWORD PTR tv140[rsp] add ecx, eax mov eax, ecx mov rcx, QWORD PTR tv138[rsp] mov DWORD PTR [rcx], eax mov DWORD PTR $T5[rsp], 1 lea rcx, QWORD PTR $T5[rsp] call ??$move@H@std@@YA$$QEAH$$QEAH@Z mov eax, DWORD PTR [rax] mov DWORD PTR tv154[rsp], eax mov eax, 4 imul rax, rax, 4 mov rcx, QWORD PTR arr$[rsp] add rcx, rax mov rax, rcx mov rcx, rax call ??$forward@AEAH@std@@YAAEAHAEAH@Z mov QWORD PTR tv150[rsp], rax mov rax, QWORD PTR tv150[rsp] mov eax, DWORD PTR [rax] mov DWORD PTR tv152[rsp], eax mov eax, DWORD PTR tv154[rsp] mov ecx, DWORD PTR tv152[rsp] add ecx, eax mov eax, ecx mov rcx, QWORD PTR tv150[rsp] mov DWORD PTR [rcx], eax mov DWORD PTR $T6[rsp], 1 lea rcx, QWORD PTR $T6[rsp] call ??$move@H@std@@YA$$QEAH$$QEAH@Z mov eax, DWORD PTR [rax] mov DWORD PTR tv166[rsp], eax mov eax, 4 imul rax, rax, 5 mov rcx, QWORD PTR arr$[rsp] add rcx, rax mov rax, rcx mov rcx, rax call ??$forward@AEAH@std@@YAAEAHAEAH@Z mov QWORD PTR tv162[rsp], rax mov rax, QWORD PTR tv162[rsp] mov eax, DWORD PTR [rax] mov DWORD PTR tv164[rsp], eax mov eax, DWORD PTR tv166[rsp] mov ecx, DWORD PTR tv164[rsp] add ecx, eax mov eax, ecx mov rcx, QWORD PTR tv162[rsp] mov DWORD PTR [rcx], eax mov DWORD PTR $T7[rsp], 1 lea rcx, QWORD PTR $T7[rsp] call ??$move@H@std@@YA$$QEAH$$QEAH@Z mov eax, DWORD PTR [rax] mov DWORD PTR tv178[rsp], eax mov eax, 4 imul rax, rax, 6 mov rcx, QWORD PTR arr$[rsp] add rcx, rax mov rax, rcx mov rcx, rax call ??$forward@AEAH@std@@YAAEAHAEAH@Z mov QWORD PTR tv174[rsp], rax mov rax, QWORD PTR tv174[rsp] mov eax, DWORD PTR [rax] mov DWORD PTR tv176[rsp], eax mov eax, DWORD PTR tv178[rsp] mov ecx, DWORD PTR tv176[rsp] add ecx, eax mov eax, ecx mov rcx, QWORD PTR tv174[rsp] mov DWORD PTR [rcx], eax mov DWORD PTR $T8[rsp], 1 lea rcx, QWORD PTR $T8[rsp] call ??$move@H@std@@YA$$QEAH$$QEAH@Z mov eax, DWORD PTR [rax] mov DWORD PTR tv190[rsp], eax mov eax, 4 imul rax, rax, 7 mov rcx, QWORD PTR arr$[rsp] add rcx, rax mov rax, rcx mov rcx, rax call ??$forward@AEAH@std@@YAAEAHAEAH@Z mov QWORD PTR tv186[rsp], rax mov rax, QWORD PTR tv186[rsp] mov eax, DWORD PTR [rax] mov DWORD PTR tv188[rsp], eax mov eax, DWORD PTR tv190[rsp] mov ecx, DWORD PTR tv188[rsp] add ecx, eax mov eax, ecx mov rcx, QWORD PTR tv186[rsp] mov DWORD PTR [rcx], eax mov DWORD PTR $T9[rsp], 1 lea rcx, QWORD PTR $T9[rsp] call ??$move@H@std@@YA$$QEAH$$QEAH@Z mov eax, DWORD PTR [rax] mov DWORD PTR tv202[rsp], eax mov eax, 4 imul rax, rax, 8 mov rcx, QWORD PTR arr$[rsp] add rcx, rax mov rax, rcx mov rcx, rax call ??$forward@AEAH@std@@YAAEAHAEAH@Z mov QWORD PTR tv198[rsp], rax mov rax, QWORD PTR tv198[rsp] mov eax, DWORD PTR [rax] mov DWORD PTR tv200[rsp], eax mov eax, DWORD PTR tv202[rsp] mov ecx, DWORD PTR tv200[rsp] add ecx, eax mov eax, ecx mov rcx, QWORD PTR tv198[rsp] mov DWORD PTR [rcx], eax mov DWORD PTR $T10[rsp], 1 lea rcx, QWORD PTR $T10[rsp] call ??$move@H@std@@YA$$QEAH$$QEAH@Z mov eax, DWORD PTR [rax] mov DWORD PTR tv214[rsp], eax mov eax, 4 imul rax, rax, 9 mov rcx, QWORD PTR arr$[rsp] add rcx, rax mov rax, rcx mov rcx, rax call ??$forward@AEAH@std@@YAAEAHAEAH@Z mov QWORD PTR tv210[rsp], rax mov rax, QWORD PTR tv210[rsp] mov eax, DWORD PTR [rax] mov DWORD PTR tv212[rsp], eax mov eax, DWORD PTR tv214[rsp] mov ecx, DWORD PTR tv212[rsp] add ecx, eax mov eax, ecx mov rcx, QWORD PTR tv210[rsp] mov DWORD PTR [rcx], eax add rsp, 248 ; 000000f8H ret 0 add_1_impl<...> ENDP
add_1_impl<...> PROC $LN3: mov QWORD PTR [rsp+16], rdx mov BYTE PTR [rsp+8], cl sub rsp, 56 ; 00000038H mov DWORD PTR $T1[rsp], 1 mov eax, 4 imul rax, rax, 0 mov rcx, QWORD PTR arr$[rsp] mov eax, DWORD PTR [rcx+rax] add eax, DWORD PTR $T1[rsp] mov ecx, 4 imul rcx, rcx, 0 mov rdx, QWORD PTR arr$[rsp] mov DWORD PTR [rdx+rcx], eax mov DWORD PTR $T2[rsp], 1 mov eax, 4 imul rax, rax, 1 mov rcx, QWORD PTR arr$[rsp] mov eax, DWORD PTR [rcx+rax] add eax, DWORD PTR $T2[rsp] mov ecx, 4 imul rcx, rcx, 1 mov rdx, QWORD PTR arr$[rsp] mov DWORD PTR [rdx+rcx], eax mov DWORD PTR $T3[rsp], 1 mov eax, 4 imul rax, rax, 2 mov rcx, QWORD PTR arr$[rsp] mov eax, DWORD PTR [rcx+rax] add eax, DWORD PTR $T3[rsp] mov ecx, 4 imul rcx, rcx, 2 mov rdx, QWORD PTR arr$[rsp] mov DWORD PTR [rdx+rcx], eax mov DWORD PTR $T4[rsp], 1 mov eax, 4 imul rax, rax, 3 mov rcx, QWORD PTR arr$[rsp] mov eax, DWORD PTR [rcx+rax] add eax, DWORD PTR $T4[rsp] mov ecx, 4 imul rcx, rcx, 3 mov rdx, QWORD PTR arr$[rsp] mov DWORD PTR [rdx+rcx], eax mov DWORD PTR $T5[rsp], 1 mov eax, 4 imul rax, rax, 4 mov rcx, QWORD PTR arr$[rsp] mov eax, DWORD PTR [rcx+rax] add eax, DWORD PTR $T5[rsp] mov ecx, 4 imul rcx, rcx, 4 mov rdx, QWORD PTR arr$[rsp] mov DWORD PTR [rdx+rcx], eax mov DWORD PTR $T6[rsp], 1 mov eax, 4 imul rax, rax, 5 mov rcx, QWORD PTR arr$[rsp] mov eax, DWORD PTR [rcx+rax] add eax, DWORD PTR $T6[rsp] mov ecx, 4 imul rcx, rcx, 5 mov rdx, QWORD PTR arr$[rsp] mov DWORD PTR [rdx+rcx], eax mov DWORD PTR $T7[rsp], 1 mov eax, 4 imul rax, rax, 6 mov rcx, QWORD PTR arr$[rsp] mov eax, DWORD PTR [rcx+rax] add eax, DWORD PTR $T7[rsp] mov ecx, 4 imul rcx, rcx, 6 mov rdx, QWORD PTR arr$[rsp] mov DWORD PTR [rdx+rcx], eax mov DWORD PTR $T8[rsp], 1 mov eax, 4 imul rax, rax, 7 mov rcx, QWORD PTR arr$[rsp] mov eax, DWORD PTR [rcx+rax] add eax, DWORD PTR $T8[rsp] mov ecx, 4 imul rcx, rcx, 7 mov rdx, QWORD PTR arr$[rsp] mov DWORD PTR [rdx+rcx], eax mov DWORD PTR $T9[rsp], 1 mov eax, 4 imul rax, rax, 8 mov rcx, QWORD PTR arr$[rsp] mov eax, DWORD PTR [rcx+rax] add eax, DWORD PTR $T9[rsp] mov ecx, 4 imul rcx, rcx, 8 mov rdx, QWORD PTR arr$[rsp] mov DWORD PTR [rdx+rcx], eax mov DWORD PTR $T10[rsp], 1 mov eax, 4 imul rax, rax, 9 mov rcx, QWORD PTR arr$[rsp] mov eax, DWORD PTR [rcx+rax] add eax, DWORD PTR $T10[rsp] mov ecx, 4 imul rcx, rcx, 9 mov rdx, QWORD PTR arr$[rsp] mov DWORD PTR [rdx+rcx], eax add rsp, 56 ; 00000038H ret 0 add_1_impl<...> ENDP