前言
在用WinDbg调试CoreCLR源码的时候,想起在VS Studio也是反汇编调试的.这里在VS中进行汇编调试.
C++代码
int addNum(int a, int b)
{
return a + b;
}
int main(int argc, char* argv[])
{
int a = 10;
int b = 20;
int result = addNum(a, b);
cin.get();
}
汇编代码:
int addNum(int a, int b)
{
mov dword ptr[rsp + 10h], edx
mov dword ptr[rsp + 8], ecx
push rbp
push rdi
sub rsp, 0E8h
lea rbp, [rsp + 20h]
lea rcx, [__592BE506_main@cpp(07FF66A872076h)]
call __CheckForDebuggerJustMyCode(07FF66A7B52C4h)
return a + b
mov eax, dword ptr[b]
mov ecx, dword ptr[a]
add ecx, eax
mov eax, ecx
}
int main(int argc, char* argv[])
{
mov qword ptr[rsp + 10h], rdx
mov dword ptr[rsp + 8], ecx
push rbp
push rdi
sub rsp, 148h
lea rbp, [rsp + 20h]
lea rcx, [__592BE506_main@cpp(07FF66A872076h)]
call __CheckForDebuggerJustMyCode(07FF66A7B52C4h)
int a = 10
mov dword ptr[a], 0Ah
int b = 20
mov dword ptr[b], 14h
int result = addNum(a, b)
mov edx, dword ptr[b]
mov ecx, dword ptr[a]
call addNum(07FF66A7B48B5h)
mov dword ptr[result], eax
cin.get()
mov rcx, qword ptr[__imp_std::cin(07FF66A86E3E8h)]
call qword ptr[__imp_std::basic_istream<char, std::char_traits<char> >::get(07FF66A86E3F0h)]
}
由于不是系统性学习汇编,这里只是根据汇编指令推断.