Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[VC++ 2010] Zbugowana wstawka asma

Ostatnio zmodyfikowano 2012-07-30 21:33
Autor Wiadomość
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
P-61285
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.
P-61444
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
P-61476
« 1 »
  Strona 1 z 1