use*_*870 4 c++ assembly dynamic dispatch
我是汇编程序的新手,我试图弄清楚C ++如何处理汇编程序中的动态调度。
查看汇编代码时,我发现有2个异常调用:
call _Znwm
call _ZdlPv
Run Code Online (Sandbox Code Playgroud)
这些没有我可以追踪到的子程序。通过检查代码,Znwm似乎在调用其构造函数时返回对象的地址,但是我不确定。ZdlPv处于无法访问的代码块中(它被跳过了)。C ++:
Fruit * f;
f = new Apple();
Run Code Online (Sandbox Code Playgroud)
x86:
# BB#1:
mov eax, 8
mov edi, eax
call _Znwm
mov rdi, rax
mov rcx, rax
.Ltmp6:
mov qword ptr [rbp - 48], rdi # 8-byte Spill
mov rdi, rax
mov qword ptr [rbp - 56], rcx # 8-byte Spill
call _ZN5AppleC2Ev
Run Code Online (Sandbox Code Playgroud)
任何意见,将不胜感激。谢谢。