logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[BASCOM-AVR] - Weryfikacja błędu przed zgłoszeniem.

Mundi1970 30 Wrz 2012 15:29 1239 4
REKLAMA
  • #1 11363295
    Mundi1970
    Poziom 24  
    Witam.

    Przypuszczam że znalazłem błąd w funkcji MemCopy , ale chciałbym sprawdzić czy nie występuje on tylko u mnie. :). Funkcja zwraca do zmiennej WORD lub INTEGER ilość skopiowanych bajtów. Jeżeli wynik ma być zwrócony, do zmiennej globalnej jest wszystko w porządku. Kłopot zaczyna się jeżeli wynik ma być zwrócony do zmiennej lokalnej, po zakończeniu funkcja Memcopy nadpisuje inną zmienną.

    Przedstawione jest to w procedurze Sub Bug_memcopy:
    - zdefiniowane są dwie zmienne lokalne typu word B i C
    - zerowanie zmiennej B i C
    - wywołanie funkcji Memcopy (6 bajtów do skopiowania między dwoma tablicami), ilość skopiowanych bajtów powinna byś zwrócona do zmiennej C
    - niestety zmienna C ma wartość 0, a zmienna B jest równa 6 a powinna mieć wartość 0

    Przykład komplikowałem wersją 2.0.7.3.001 i 2.0.7.5.002 (Win7 64bit).

    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 11366235
    Fredy
    Poziom 27  
    A spróbuj najpierw tą tablice źródłową czyms zapelnic? Może brakuje znaku null na końcu.
  • REKLAMA
  • #3 11368858
    Mundi1970
    Poziom 24  
    Funkcja ma taki format: Ilość_skopiowanych_bajtów = Memcopy (źródło, cel, ilość_bajtów) . W moim przykładzie dane są prawidłowo kopiowane, tylko informacja o ilości skopiowanych bajtów jest błędnie zapisywana do zmiennej lokalnej (nadpisuje inną zmienną). Jeżeli wartość ma być zwrócona do zmiennej globalnej, jest wszystko ok. Sprawdzałem już na dwóch komputerach, na dwóch systemach (Win7 i XP), zainstalowałem starą wersje Bascom'a z roku 2007 (1.11.8.7) i dalej ten błąd występuje. :)
  • REKLAMA
  • #4 11370964
    Fredy
    Poziom 27  
    Ale zdajesz sobie sprawę, że trochę nie logicznie jest kopiować bajty ze zmiennej która nie została zainicjowana?
    Przecież tam może być totalny bałagan.
    Zapełnij zmienną SRC jakimś tekstem i spróbuj wtedy.
    Nie wiem czy to pomoże , ale aby traktować to jako bug to wypada zastosować prawidłowe warunki.
  • #5 11371427
    Mundi1970
    Poziom 24  
    Poprawiłem programik, zwiększyłem wielkości stosu, stosu programowego i ramki, tablice Src_array i Dest_array wypełniłem danymi. Błąd dalej występuje.

    [BASCOM-AVR] - Weryfikacja błędu przed zgłoszeniem.

    Jak widać zmienna B została uszkodzona, a zmienna "C" w której powinna być zwrócona wartość prze Memcopy jest równa 0.

    Kod: text
    Zaloguj się, aby zobaczyć kod
REKLAMA