Я вставил следующий код asm в мой код C ++. Я использую компилятор VC ++.
char c;
curr_stack_return_addr = s.AddrFrame.Offset; //I am doing a stack walk
__asm{
push bx
mov eax, curr_stack_return_addr
mov bl, BYTE PTR [eax - 1]
mov c,bl
pop bx
}
Я получаю правильное значение в c для своих функций, но оно падает, когда достигает системных функций в стеке. Я не получаю ошибок компилятора. Что я сделал не так?
Решено: Я забыл проверить конец стека! Обратный адрес в последнем кадре равен 0. Спасибо всем.