Reklama
Pokazuje wyniki od 1 do 7 z 7

Temat: [c++/asembler] Przekazanie długiego tekstu do/z funkcji asemblerowej

  1. #1
    Avatar Celestian hunter
    Data rejestracji
    2006
    Położenie
    Gliwice
    Wiek
    32
    Posty
    1,059
    Siła reputacji
    19

    Domyślny [c++/asembler] Przekazanie długiego tekstu do/z funkcji asemblerowej

    Mam za zadanie zaimplementować wybrany algorytm w c++ i w asemblerze, a następnie porównać ich czasy wykonania. W visual studio stworzyłem normalny projekt cpp oraz w tej samej solucji ddl z funkcją asemblera. Jako, że tego ostatniego znam bardzo słabo, prosiłbym was o radę.

    Implementuję prosty algorytm kompresji tekstu (RLE). Dane do kompresji mają być w plikach txt, program będzie więc czytał sobie z pliku, wykonywał algorytm i wypluwał od razu wynik (najlepiej do innego pliku). Próbowałem wstępnie poćwiczyć operacje na plikach w asemblerze i pojawił się problem - najwyraźniej przerwania nie działają na windowsie 7, także nie jestem w stanie w ten sposób choćby i otworzyć pliku txt.

    Pytanie co robić dalej? Upierać się na tych przerwaniach, czy szukać innego sposobu? W zasadzie w projekcie najważniejszy jest sam algorytm, a przekazanie danych mogę załatwić już jakąś inną metodą. Jedyne co mi przychodzi do głowy, to wczytanie zawartości pliku do zmiennej w c++, przekazanie jej do funkcji asemblerowej, która zwróci później nowy, skompresowany już ciąg znaków. Ma to sens?

  2. #2
    Avatar zakius
    Data rejestracji
    2008
    Położenie
    The Internets
    Wiek
    33
    Posty
    11,075
    Siła reputacji
    24

    Domyślny

    1. Kompiluj w g++ wersje cpp plx
    2. nie znam się na asemblerze, weź coś prostszego i wykonaj 10k* i masz porównanie xD
    3. sens jest jeśli inaczej nie umiesz, a ten etap sam w sobie nie ma nic do rzeczy
    Problem z komputerem? Instrukcja diagnostyczna
    Cytuj Vegeta napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Baby maja wymagania jak windows vista, takze nigdy nie wiesz.
    Cytuj Dzzej napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Moje posty to esencja głupoty.
    "Don't worry, I'm just a pervert"

  3. Reklama
  4. #3

    Data rejestracji
    2005
    Posty
    257
    Siła reputacji
    19

    Domyślny

    Cytuj Celestian hunter napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    najwyraźniej przerwania nie działają na windowsie 7, także nie jestem w stanie w ten sposób choćby i otworzyć pliku txt.
    Nonsens. Podejrzewam, że używasz ich źle. To, co tak naprawdę próbujesz odpalić, to tzw. wywołania systemowe i z tego co wiem, ich numerki są różne pod różnymi wersjami Windowsa (choć pewien nie jestem). Ewentualnie, spróbuj ładować te wywołania z DLLów. Pokaż co próbowałeś - pewnie wywołania systemowe z DOSa?

  5. #4
    Avatar TheSnake
    Data rejestracji
    2008
    Posty
    321
    Siła reputacji
    17

    Domyślny

    WinApi... po co kombinować. Po za tym przez syscalle pewnie wszystkie AV będą wyły, bo żadna aplikacja praktycznie nie potrzebuje tego używać, od tego jest właśnie api.
    Ostatnio zmieniony przez TheSnake : 21-12-2013, 18:17

  6. #5

    Data rejestracji
    2005
    Posty
    257
    Siła reputacji
    19

    Domyślny

    t
    Cytuj TheSnake napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    WinApi... po co kombinować.
    Bo każą? Nie zauważyłeś, że większość tego działu to prace domowe studentów? :P

    @down:

    Pardon, faktycznie, mój błąd.
    Ostatnio zmieniony przez deathplanter : 22-12-2013, 03:08

  7. #6
    Avatar TheSnake
    Data rejestracji
    2008
    Posty
    321
    Siła reputacji
    17

    Domyślny

    Cytuj Celestian hunter napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Pytanie co robić dalej? Upierać się na tych przerwaniach, czy szukać innego sposobu? W zasadzie w projekcie najważniejszy jest sam algorytm, a przekazanie danych mogę załatwić już jakąś inną metodą.
    Nie każą? Wiem, dlatego rzadko się tu wypowiadam, ale czasem jest śmiesznie.

    Innym sposobem jest inline asm, ale takie porównanie, że śmiech. Można wiedzieć jaka to uczelnia?

    @up:
    ... jaka wina? ;)
    Ostatnio zmieniony przez TheSnake : 21-12-2013, 18:20

  8. #7
    Avatar Lord
    Data rejestracji
    2012
    Położenie
    CPK xDDD
    Wiek
    29
    Posty
    10,490
    Siła reputacji
    18

    Domyślny

    najwyraźniej przerwania nie działają na windowsie 7,
    Przerwania nie działają w trybie chronionym. Musiałbys byc w Ring 0-1. Wyjątkiem były apki z Turbo Pascala 7
    Spróbuj wykorzystać funkcję Nt* i Rtl* z "Native Api"

Reklama

Informacje o temacie

Użytkownicy przeglądający temat

Aktualnie 1 użytkowników przegląda ten temat. (0 użytkowników i 1 gości)

Podobne tematy

  1. Odpowiedzi: 1
    Ostatni post: 25-11-2014, 20:38
  2. [AJAX][PHP]Przekazanie wartości zmiennej
    Przez Abe w dziale Programowanie
    Odpowiedzi: 13
    Ostatni post: 26-06-2014, 22:41
  3. [c++] Przekazanie argumentu do metody
    Przez Celestian hunter w dziale Szkoła i nauka
    Odpowiedzi: 3
    Ostatni post: 06-01-2013, 19:48
  4. Przekazanie domku
    Przez -Maciek Mur- w dziale Tibia
    Odpowiedzi: 3
    Ostatni post: 14-11-2012, 16:05

Zakładki

Zakładki

Zasady postowania

  • Nie możesz pisać nowych tematów
  • Nie możesz pisać postów
  • Nie możesz używać załączników
  • Nie możesz edytować swoich postów
  •