Wpis z mikrobloga

Mirki znające #asm #assembler #masm


Piszę sobie radix sort w MASM i natrafiam na 2 problemy:

1. Podczas niektórych wywołań leci błąd:
Run-Time Check Failure #2 - Stack around the variable 'firstarray' was corrupted._
Nie widzę szczególnego błędu u mnie w kodzie, jakieś sugestie?

2. Elementy w "posortowanej" tablicy są pozamieniane parami, a wydaje mi się że algorytm jest poprawny. Pewnie świeże spojrzenie znalazłoby błąd w tym kodzie.


Kod:
main.cpp
radixsort.asm
#programowanie
  • 3
@sosnnaa: sorry że tak późno odpisuję. Widzę tu dwa błędy:
- nie wszystkie rejestry, z których korzystasz zapisujesz w prologu funkcji. Musisz to robić inaczej funkcje, które wywołują radixsort nie będą działać poprawnie
- array + leftoneindex - to jest ok w C. Natomiast w asm 'add edx, esi' zadziałałoby dla tablic charów, a tym przypadku masz tablicę intów więc musisz to robić raczej w stylu edx + esi*4