При расследовании сбоя я наткнулся на следующий фрагмент кода и сразу понял, что инструкция mov
должна быть на самом деле movq
, чтобы получить правильную операцию 64-разрядного регистра.
#elif defined(__x86_64__)
unsigned long rbp;
__asm__ volatile ("mov %%rbp, %0" : "=r" (rbp));
sp = (void **) rbp;
#else
Далеек этому я также нашел документацию, в которой утверждается, что регистр rbp
для x86-64 является универсальным и не содержит адреса текущего кадра.Я также нашел документацию, которая утверждает, что rbp
содержит адрес текущего кадра.Может кто-нибудь уточнить?