tutaj jest mój kod disas:gdb nie może uzyskać dostępu Błąd adresu pamięci
0x0804844d <+0>: push %ebp
0x0804844e <+1>: mov %esp,%ebp
0x08048450 <+3>: and $0xfffffff0,%esp
0x08048453 <+6>: sub $0x20,%esp
0x08048456 <+9>: movl $0x8048540,(%esp)
0x0804845d <+16>: call 0x8048310 <[email protected]>
0x08048462 <+21>: lea 0x1c(%esp),%eax
0x08048466 <+25>: mov %eax,0x4(%esp)
0x0804846a <+29>: movl $0x8048555,(%esp)
0x08048471 <+36>: call 0x8048320 <[email protected]>
0x08048476 <+41>: mov 0x1c(%esp),%eax
0x0804847a <+45>: cmp $0x208c,%eax
0x0804847f <+50>: jne 0x804848f <main+66>
0x08048481 <+52>: movl $0x8048558,(%esp)
0x08048488 <+59>: call 0x8048310 <[email protected]>
0x0804848d <+64>: jmp 0x804849b <main+78>
=> 0x0804848f <+66>: movl $0x8048569,(%esp)
0x08048496 <+73>: call 0x8048310 <[email protected]>
0x0804849b <+78>: mov $0x0,%eax
0x080484a0 <+83>: leave
0x080484a1 <+84>: ret
co jestem tring aby zbadać to $ 0x208c. Kiedy wpisuję x/xw 0x208c, to daje mi błąd, który mówi: Nie mogę uzyskać dostępu do pamięci pod adresem 0x208c. Kiedy wpisuję rejestry Info i patrzę na eax, mówi ona o wartości, którą podałem. Zasadniczo ten program porównuje dwie wartości iw zależności od tego drukuje coś. Problem polega na tym, że jest to praca domowa z uniwersytetu i nie mam kodu. Mam nadzieję, że możesz pomóc. Dziękuję Ci.
[palec w powietrzu] podajesz nieprawidłowy parametr? Siedzisz tam, przed debuggerem. Czego moglibyśmy się dowiedzieć, czego nie można, zwłaszcza bez kodu źródłowego? To bardzo dziwne zadanie, które prosi cię o naprawienie rzeczy bez źródła ... –
W końcu wymyśliłem, żeby użyć instrukcji print zamiast x/xw, czy możesz wyjaśnić, dlaczego druk działał, a x nie? – Ojs
$ 0x208c jest wartością bezwzględną, a nie adresem pamięci! –