[VC++ 2010] Zbugowana wstawka asma
Ostatnio zmodyfikowano 2012-07-30 21:33
Mrovqa Temat założony przez niniejszego użytkownika |
[VC++ 2010] Zbugowana wstawka asma » 2012-07-28 10:28:29 Witam, w Visualu skompilowałem sobie pewien algorytm hashujący jako wtawkę asma. W pewnym miejscu mam taką instrukcję: mov eax, [input_string] To znajduje się w pętli, która powtarza się 7 razy. input_string jest nie ruszany (pointer na string). Za pierwszym obiegiem pętli adres stringu jest kopiowany do rejestru eax, ale za każdym następnym razem debugger Visuala wywala mi błąd - access violation reading at location 0x8... o co z tym chodzi? :/ Dlaczego za pierwszym razem to działa, a później będąc identycznie tym samym już nie? ;/ /edit: Kod funkcji: http://pastebin.com/TfGGchVy/edit2: Rozwiązałem problem w niezbyt ładny sposób. Wywaliłem to z osobnej funkcji i wrzuciłem do maina (bo poza mainem etykieta jest nierozpoznawalna). Dzięki temu mogę w pełni kontrolować wywołanie 'funkcji' ;) Jednakże nadal ciekaw jestem powyższego 'bugu', i jak ktoś wie dlaczego tak jest, niech się wypowie ;) Pozdrawiam, Mrowqa |
|
DejaVu |
» 2012-07-30 16:27:10 Może piszesz po pamięci przy pierwszym obiegu pętli. Poza tym używanie asma w C++ nie uczyni Twojego programu lepszym bądź szybszym. |
|
Mrovqa Temat założony przez niniejszego użytkownika |
» 2012-07-30 21:33:13 Wiem, ale było pewne zadanie, które trzeba było zbrutować. Skoro do brutowania trzeba jak najlepiej kod zoptymalizować, by szybko poszło, więc skopiowałem kod z exeka ;) Możliwe, że piszę po pamięci, nie wiem jak Visual sobie to wstawia do kodu... dlatego wolę zrobić to jako funkcja, bo w pełni kontroluję to co robię i - co ważniejsze - wiem co dokładnie się dzieje ;) Lepiej nie używać zmiennych lokalnych spoza wstawki... heh |
|
« 1 » |