右值引用
// 右值引用
int&& rret = 1 + 2;
00D01FDF mov dword ptr [ebp-18h],3
00D01FE6 lea eax,[ebp-18h]
00D01FE9 mov dword ptr [rret],eax
rret = 10;
00D01FEC mov eax,dword ptr [rret]
00D01FEF mov dword ptr [eax],0Ah
左值引用
// 左值引用
int& lret = rret;
00D01FF5 mov eax,dword ptr [rret]
00D01FF8 mov dword ptr [lret],eax
lret = 10;
00D01FFB mov eax,dword ptr [lret]
00D01FFE mov dword ptr [eax],0Ah
指针
// 指针
int* retp = &rret;
00D02004 mov eax,dword ptr [rret]
00D02007 mov dword ptr [retp],eax
*retp = 10;
00D0200A mov eax,dword ptr [retp]
00D0200D mov dword ptr [eax],0Ah
变量
int a = rret;
00962013 mov eax,dword ptr [rret]
00962016 mov ecx,dword ptr [eax]
00962018 mov dword ptr [a],ecx
a = 10;
0096201B mov dword ptr [a],0Ah
总结
看上去 [左值引用]汇编和 [指针]汇编一样。