안녕하세요, 어셈블리 명령어에 해당하는 C 문을 얻을 수있는 방법어셈블리 명령은 C 문
0x08048981 <+1165>: call 0x8048404 <[email protected]>
0x08048986 <+1170>: jmp 0x8048a52 <main+1374>
0x0804898b <+1175>: mov -0x38(%ebp),%eax
0x0804898e <+1178>: mov -0x24(%ebp),%edx
0x08048991 <+1181>: mov (%eax,%edx,4),%eax
0x08048994 <+1184>: sub $0x4,%eax
=> 0x08048997 <+1187>: mov (%eax),%ebx
의 기분을 상하게합니다. 주소 0x08048997에있는 명령은 gdb로 표시된 segfault의 위치이며 gdb에서 'disassemble'명령을 사용하여 위 어셈블리를 가져 왔습니다. 당신이 GDB를 사용하고 있기 때문에
덕분에, 카필
Segfault at 0x08048997은 eax가 가리키는 주소가 액세스 가능/쓰기 가능하지 않음을 의미합니다. 소스 또는 전체 디스 어셈블리를 보여줍니다. eax에있는 내용은 jmp 바로 뒤에 0x0804898b에 어떻게 도달합니까? –