I have inserted the following asm code in my C++ code. I am using a VC++ compiler.
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
}
I get the correct value in c for my functions but it crashes when it reaches system functions on stack. I get no compiler errors. What did I do wrong?
Resolved: I forgot to check for end of stack! The return address in last frame is 0. Thanks everyone.