Что означает Znwm и ZdlPv в сборке?

Я новичок в сборке и пытаюсь понять, как C++ обрабатывает динамическую диспетчеризацию в сборке.

Просматривая ассемблерный код, я увидел 2 необычных звонка:

call _Znwm
call _ZdlPv

У них не было подпрограммы, которую я мог бы отследить. Изучив код, Znwm, похоже, вернул адрес объекта при вызове его конструктора, но я не уверен в этом. ZdlPv был в блоке кода, который никогда не мог быть достигнут (он был перепрыгнут). C++:

Fruit * f;
f = new Apple();

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

Любой совет будет принят во внимание. Благодарю.

1 ответ

_Znwm - оператор новый.
_ZdlPv - оператор удаления.

Другие вопросы по тегам