Książki Assebler

0

Cześć, są jakieś książki (najlepiej polskie) dotyczące programowania w assemblerze w składni Intela na Linuxa, najlepiej w NASM? Albo znacie jakieś ciekawe materiały w internecie?

0

Ja proponuje zaczac najpierw od re.coldwind.pl(skladnia fasm), aby ogarnac sobie kompletne podstawy, poniewaz z tego co przejrzalem material, ktory cepa podrzucil to od podstaw sie nie zaczyna. Potem spokojnie za to mozesz sie brac, a na koniec najlepiej sobie manuale intela przeczytac lub nawet od razu zaczac je ogarniac, bo potem mozna sie zdziwic dlaczego rzuca roznymi wyjatkami, gdy korzystasz z mmx i koprocesora razem.
No i zostaja rozne bajery i dodatki skladniowe nasma, ktore w dokumentacji asemblera sa dokladnie opisane, wiec ogolnie nie ma problemu z nauka tego jezyka.

0

Btw skoro rozmowa już zeszła na manuale intela - da się je jeszcze jakoś dostać w wersji drukowanej? Albo kupić? Bo czytanie z monitora nie jest zbyt wygodne a sam sobie tego nie wydrukuję...

(*NOTE: The Intel® 64 and IA-32 Architectures Software Developer's Manuals are no longer availble to order as hard copy.)

0

http://rudy.mif.pg.gda.pl/~bogdro/ to jest najlepszy kurs assemblera od podstaw.
A potem Iczelion dla win32... i już sobie poradzisz ze wszystkim

0

Aa jeszce jedno - pisz tylko w fasm. Inne asemblery to strata czasu.

0
wiadro napisał(a)

Aa jeszce jedno - pisz tylko w fasm. Inne asemblery to strata czasu.

Jakies argumenty ?

0

Nie da się pisać na zmianę kodu w różnej bitowości, są mniej logiczne (słowo kluczowe offset? wtf?), nie mają makr albo mają o wiele bardziej prymitywne, wymagają linkera.
Fasm ma tę wadę że jest napisany w assemblerze - ale przynajmniej można zobaczyć i zedytować źródła w przeciwieństwie do tasma/masma.

Fasm ma w tej chwili największą społeczność więc najwięcej narzędzi/bibliotek z makrami/itd. Masm też ma dużo, ale stare, raczej mało kto robi nowe.

Inne asemblery nie mają żadnych zalet w stosunku do fasma.

0

FASM jest jedynym asemblerem który znam od którego mnie odrzuca jak tylko próbuję coś zacząć pisać (a IDE FASM to dno). Już nawet w archaicznym tasm-ie piszę mi się przyjemniej. Ale to było moje prywatne zdanie. Konkretniej:

Co do społeczności mój ulubiony test czyli google dobre na wszystko (najszybszy i dość miarodajny) zapytanie:

NASM - 1.100.000
TASM - 800.000
MASM - 600.000
FASM - 200.000.

Gdzie ta twoja społeczność?

Co do makr - jeśli makra MASM są prymitywne to już nie wiem jakie makra są rozbudowane.

W pakiecie MASMa są setki przykładów, narzędzi i tutoriali.

No i MASM ma porządne plecy, nie to co FASM...

0
wiadro napisał(a)

Nie da się pisać na zmianę kodu w różnej bitowości, są mniej logiczne (słowo kluczowe offset? wtf?)

A ty wiesz o istnieniu tez nasm i yasm? Zresztą ta zmodyfikowana składnia się właśnie od nasm-a zaczęła...

0

MSM - co za idiotyzm, wyniki z google dadzą ci popularność, a nie społeczność, bo społeczność coś tworzy. W przypadku tasma i nasma te wyniki to chyba głównie pytania od studentów. Nie mówiąc już o tym że większość wyników to zupełnie inne rzeczy jak "Smithsonian National Air and Space Museum " albo "Tulsa Air and Space Museum & Planetarium " ...
Tutoriali z fasmem jest chyba rzeczywiście mniej, ale jedyny wartościowy z masmem to ten iczeliona - a kod z masma zadziała w fasmie, wystarczy leciutko zmienić prototypy funkcji. A bibliotek i podobnych rzeczy fasm ma więcej, wystarczy wejść na forum. A ide jest przecież dowolne... można pisać w czymkolwiek.

Nasma nie można porównywać z fasmem, bo makra to tylko proste podstawienia, nie ma etykiet anonimowych i wymaga linkera. Pisanie w nim mija się z celem, jest zbyt prymitywny. A tasm prymitywny i stary.
A yasma nie znam. Kiedyś go ściągnałem ale nie używałem zbyt dużo i nic nie pamiętam. Wydaje się być najmniej znany.

Kiedyś uczyłem się assemblera i pisałem nawet dość duże jak na assembler programy (disassembler, jakieś wirusy, silniki polimorficzne, system operacyjny, prymitywne gry na gdi...) i fasm był najlepszy do wszystkiego. A zaczynałem od nasma...

0

MSM - co za idiotyzm, wyniki z google dadzą ci popularność, a nie społeczność, bo społeczność coś tworzy. W przypadku tasma i nasma te wyniki to chyba głównie pytania od studentów. Nie mówiąc już o tym że większość wyników to zupełnie inne rzeczy jak "Smithsonian National Air and Space Museum " albo "Tulsa Air and Space Museum & Planetarium " ...

Popularność = ludzie tego używają. Tak czy inaczej fasm jest najmniej znany. (btw. co powiesz na Aaron Vickery FASM Murals albo Fine Arts Society of Milton?)

kod z masma zadziała w fasmie, wystarczy leciutko zmienić prototypy funkcji

Czyli kod z fasma zadziała w masmie, "wystarczy leciutko zmienić prototypy funkcji"? No to w czym problem?

Nasma nie można porównywać z fasmem, bo makra to tylko proste podstawienia, nie ma etykiet anonimowych i wymaga linkera. Pisanie w nim mija się z celem, jest zbyt prymitywny. A tasm prymitywny i stary.

Ja akurat lubię nasma, właśnie dzięki jego prostocie, ale to chyba tylko moje dziwactwo.

Kiedyś uczyłem się assemblera i pisałem nawet dość duże jak na assembler programy (disassembler, jakieś wirusy, silniki polimorficzne, system operacyjny, prymitywne gry na gdi...) i fasm był najlepszy do wszystkiego. A zaczynałem od nasma...

Skoro Tobie się podoba fasm to przecież nie każe ci go wyrzucać - tylko nie pisz że jest Jedynym Słusznym a Wszystkie Inne są Beznadziejne Bo Tak.

I jeszcze jedno. Nie wierzę po prostu żeby fasm miał bardziej rozbudowane makra/preprocesor niż masm.

0

Nie wiem jak MASM czy TASM ale FASM może kompilować kod wieloprzebiegowo - np jeśli gdzieś tam mamy jumpa do lokacji odległej o < 128 bajtów to zastosuje krótką formę jumpa. Jeśli któryś jump się skróci to potem sprawdzi czy inne jumpy nagle nie stały się skracalne.

Bardzo dawno temu bawiłem się FASMem i już wtedy jego makra były na tyle rozbudowane, że można było w nim stworzyć jakiegoś DSLa. Większość rzeczy które są wspawane w MASMie w kompilator są zrobione jako makra w FASMie. Dzięki temu można rozbudowywać funkcjonalność FASMa bez rekompilacji i z zachowaniem "przenośności" kodu (tzn kolega ze standardowym FASMem też skompiluje kod).

Idea SSSO (Same Source Same Output) przyświecająca autorowi FASMa bardzo mi się podoba, nie trzeba kombinować z przełącznikami w linii poleceń aby skompilować kod.

MASM jest strasznie stary, ztcw nie wspiera MMX, 3dNow! i nowszych, co najwyżej robią makra które dają wsparcie dla tych instrukcji, ale te makra mają tę wadę, że asembler nie ma szans wybrać krótszych reprezentacji opkodów w razie możliwości.

EDIT:
No dobra MASM jednak wpiera te rozszerzenia, kilka lat temu pobrałem MASMa ze strony masm32.com i była tam wersja 6.15.

0

wiadro: bzdury Ty piszesz o nasmie i wtracasz masma oraz tasma do tematu o programowaniu pod Linuksem, gdzie standardowym asemblerem jest nasm oraz as dla gcc, podobnie jak w bsd, wiec ciezko zeby fasm byl od niego popularniejszy i mial lepsze wsparcie, ale nie twierdze, ze w najblizszym czasie sytuacja nie ulegnie zmianie, bo rzeczywiscie fasm jest ciekawym asemblerem. W makrach nasm od fasma nie odstaje(patrz dokumentacje), a to ze linker jest oddzielnie nie jest wada asemblera.
Co do skladni asemblera ogolnie to zalezy od architektury bardziej, a nie od tego, czy to fasm, nasm, czy inny, wiec moze warto spojrzec na temat z tego wlasnie punktu widzenia...

0

Nasma nie można porównywać z fasmem, bo makra to tylko proste podstawienia, nie ma etykiet anonimowych i wymaga linkera.

Nie każdemu zależy na zylionie makr, czasami wystarczy goły kod. Jak potrzebujesz super wypasionych makr, to może pisz w czymś wyższego poziomu.
Normalny linker też czasem jest potrzebny, jeśli tylko część programu ma być w asemblerze, itd.

Jednemu rybki, innemu akwarium. FASM jest twoim ulubionym asemblerem – fajnie, ale nie wszczynaj flameware'a pisząc, że cała reszta „mija się z celem”.
Zwłaszcza, że tego twojego FASM-a nikt tu nie krytykuje.

0

FASM oczywiście ma możliwość wypluwania np MS COFF.

Jeśli ktoś lubi albo musi pisać w asemblerze to FASM jest najbardziej godny polecenia, bardzo wygodny. Bardzo ładnie i zwięźle jest opisany preprocesor FASMa w dokumentacji: http://flatassembler.net/docs.php?article=manual#2.3

FASM został zaprojektowany tak, że dodanie nowych formatów plików wyjściowych nie jest problemem. Nie trzeba korzystać z np plików .lib, aby korzystać z funkcji z kernel32.dll.

Koniec końców i tak autor zadecyduje co mu się podoba. TASMa należy jednak omijać szerokim łukiem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1