Pokaż wyniki 1 do 10 z 10

Temat: asm - wady i zalety

  1. #1
    Zarejestrowany
    Jul 2007
    Skąd
    C:\Perl\bin
    Postów
    1,578

    Domyślnie asm - wady i zalety

    hello

    od pewnego czasu kusi mnie do tego asma
    na poczatku chcialbym zobaczyc, czy to wogole bedzie jezyk dla mnie
    jesli to cos da, to od razu mowie ze cpp nie trawie

    a wiec do rzeczy:
    widzialem ze jest duzo tych 'podjezykow' asmow np. asm tasm fasm i inne diably
    czym one sie roznia?
    nastepna sprawa, raczej interesuje mnie pisanie pod windowsa
    ludzi znajacych asma moge tu wymienic na palcach jednej reki, ale dobrze by bylo gdyby napisali cos ciekawego
    chcialbym tez zebyscie napisali wady i zalety oraz to ile [i z czego] uczyliscie sie asma

    ty.
    War, war never changes.

  2. #2
    Zarejestrowany
    May 2008
    Postów
    534

    Domyślnie

    nie podjezykow, a kompilatorow.
    Kompilatory roznia sie skladnia kodu.
    Polecam fasm, imho najlepszy kompilator kiedykolwiek zrobiony (http://www.flatassembler.net/).

    chcialbym tez zebyscie napisali wady i zalety oraz to ile [i z czego] uczyliscie sie asma
    wady - brak.
    zalety? chyba wszystkie mozliwe. Mozesz zrobic wszsytko, a z doswiadczeniem robiszto coraz szybciej.


    I jeszcze 1, asm jest zawsze ten sam (pod dana architekture). Ale windows ma dosc zlozony format plikow COFF. I tu trzeba sie troche pogimnastykowac, glownie z importami.

  3. #3
    Zarejestrowany
    Jul 2007
    Skąd
    C:\Perl\bin
    Postów
    1,578

    Domyślnie

    k, jakies kursy? poradniki? przyklady programow

    //edit
    btw, znalazlem cos takiego
    http://www.i-lo.tarnow.pl/edu/inf/prg/win32asm/
    dobre to?
    //hmm jakis MASM to tez raczej nie to
    //mam pecha do kursow, nieczytelnie zapisane a programy z nich nie dzialaja
    Ostatnio edytowane przez GSG-9 : 07-30-2008 - 14:49
    War, war never changes.

  4. #4

    Domyślnie

    Tu jest nizezły kurs: http://www.rag.kgb.pl/aoapl.php
    Jak zrozumiesz jak działa procesor do dalej będzie łatwo.
    "a imię jego będzie czterdzieści i cztery"
    A. Mickiewicz Dziady cz. III

  5. #5

  6. #6
    Zarejestrowany
    Sep 2007
    Skąd
    Różne zakątki sieci.
    Postów
    995

    Domyślnie

    Wpisz w google "kurs fasm" First link Linuks + DOS. Świetnie napisane.

    Jedak assemblera na windowsa nie polecam, jest bardziej skomplikowany niż ten Linuksowy, głównie chodzi o wywołania funkcji systemowych. W windowsie jest to raczej porażka (chociaż nie znam go dokładnie).

    Sam assembler nie jest trudny, ale ma sporo innych wad. Najbardziej bolesną jest to, że jest bardzo nieprzenośny, a na różnych architekturach różni się niebotycznie. Nawet kolejne wersje systemu mogą zmusić Cię do przepisywania całego kodu :| Po drugie wiele różnych nagłówków dla różnych kompilatorów i dwie składnie... Kody są w nim długie i nieczytelne (czytając czyjś kod praktycznie zdany jesteś na komentarze). Jednak to że kody są długie, ma też swoją dobrą stronę, szybciej nauczysz się go na pamięć (chociaż na początku będzie trudny). Zalety? Możesz ręcznie zoptymalizować program pod wybraną architekturę, jednak teraz tego się praktycznie nie używa. No i oczywiście mały rozmiar kodu wynikowego. Jednak znajomość assemblera pozwoli Ci lepiej programować w takich językach jak C (nawet gdy nie będziesz robił w nim wstawek assemblerowych). Programując w assemblerze poznajesz działanie swojej maszyny od bebechów, co jest gwarancją wydajniejszego i łatwiejszego używania wskaźników. Polecam składnie intela, ponieważ jest czytelniejsza i wymaga mniejszej dbałości od piszącego program. Assemblery (programy assemblujący nie nazywają kompilatorem) które polecam to FASM (ponieważ stworzył go polak i nie potrzebuje linkera) i NASM (jest w prawie każdym systemie). Jak coś będziesz chciał więcej, napisz, namiary znasz.
    http://nikowek.blogspot.com/
    Zbrojne Ramię Pingwina!
    -----BEGIN GEEK CODE BLOCK-----
    Version: 3.12
    GCS d- s++:++ a--- C+++ UL+++ P L+++ E--- W++ N++ o K- w--
    O M- V- PS PE Y PGP++ t+ 5 X+ R tv- b++ DI- D-
    G+ e- h! r% y?
    ------END GEEK CODE BLOCK------

  7. #7
    Zarejestrowany
    Aug 2007
    Skąd
    Gdzie nogi poniosą.
    Postów
    175

    Domyślnie

    Nikow jak zwykle połknął googla

  8. #8
    Zarejestrowany
    Jul 2008
    Skąd
    /dev/random
    Postów
    556

    Domyślnie

    To moze dodam cos od siebie.

    Assembler ma tyle wad co i zalet Kwestja podejscia Zaleta jest to ze dokladnie poznajesz jak dziala procesor, skladnie sa rozne i to juz kwesja przyzwyczajenia jaki sie wybiera. Ewentualnie jak sie zaczyna to chyba nalezy wybrac assembler oferujacy bardziej zrozumialy zapis.

    Owszem z przenosnoscia kodu nie jest tak pieknie jak w C (choc zerknijmy na kompatybilnosc kodu C++ .NET - niech ktos mi kompilnie cos napisanego w VS .NET2003 na VS .NET2005), jednak jest tez inna zaleta znajac assembler jakiegos procesora praktycznie bez wiekszych problemow piszesz pod inny procesor - zerkajac tylko w dokumentacje (na liste rozkazow i ewentualnie obsluge wbudowanych peryferiow).

    Wiec otwiera sie przed toba szeroki swiat mikrokontrolerow itp. Tak samo analiza
    jakiegokolwiek oprogramowania jest duzo latwiejsza, jak sama nazwa wskazuje disassembler kodu w C ci nie wygeneruje

    Co do tego mowienia o tym gdzie sie wygodniej piesze Linux/Windows jest to dosc sporne. Osobiscie pisze pod oba systemy i do tego pod wiele uC jednoukladowych (znanych i egzotycznych). Wszystko kwesja poznania, jesli poznasz wmiare dobrze WinAPI nie bedzie to problemem. Choc nawet piszac w C musisz znac WinAPI (nie dotyczy .NET/MFC).

    Osobiscie na poczatek zabawy pod M$ proponuje masm32, a konkretnie w raz z IDE WinASM Studio http://www.winasm.net/

    Na forum stronki znajdziesz wystarczajaca liczbe przykladow i rozwiazywania niektorych problemow.

    Osobiscie wole dosc czesto pisac program w ASM niz C, w niektorych wypadkach jest to duzo wygodniejsze - ale to moze tylko takie moje zboczenie

  9. #9

    Domyślnie

    Do nauki asma tylko i wyłącznie książka "Zrozumieć asembler" Jeff Dunteman.
    Inni autorzy w ogóle nie maja talentu i rozumie się ich tylko jak się posługujesz asmem biegle a to nie o t0 chodzi, żeby n4pisa[ książkę w stylu - im bardziej naukowo i ogólnie tym lepiej.

    wady asemblera są ogromne - jest bardzo wolny w pisaniu a napisanie quake nie wiem czy by było w ogóle do ogarnięcia.

    Żeby wypisać na ekranie wartość rejestru np: AX w postaci: 3 to zajmuje to naprawdę kupę pisania. Od razu bronię się, że nie chodzi o przerwanie 21h powodujące wypisanie 0003.

    C i inne wyższe języki zostały zrobione dla wygody - tylko i wyłącznie.
    Teraz asma używa się już tylko w niskopoziomowych procesach do pisania drv czy obsługi jakiś urządzeń. Raczej fadingów już się w tym nie robi...teraz masz DirectX. Wiesz ile by zajeła implementacja cieniowania Guoarda na obracający się sześcian w asmie ? OMG nawet nie chce sobie przypominać: P
    Są lepsze przyjemności na świecie niż pisanie takich zagadnień w asmie - np: dziwki, narkotyki sterydy i pieniądze: P
    Ostatnio edytowane przez Elitegroup : 01-12-2009 - 23:52

  10. #10
    Zarejestrowany
    Jan 2009
    Postów
    7

    Domyślnie

    mozna by powiedziec ze asm to jezyk prawie maszynowy, samo opanowanie tego jezyka, jego
    skladni, niestety nie wystarczy, jezeli nie bedziemy miec pojecia na temat budowy procesora czy przeliczania systemow liczbowych. W asamblerze pisze sie glownie sterowniki do roznych urzadzen, uzywany wszedzie tam gdzie potrzeba najwiekszej wydajnosci. No i nalezy pamietac ze w asmie powstaje duza ilosc wirusow. Warto sie jednak nim zainteresowac jezeli chcemy sie poczuc madrzejsi. Ja korzystalem z kompilatora NASM - szczerze polecam.

Tagi

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj