Thread View: pl.comp.lang.asm
14 messages
14 total messages
Started by Borneq
Wed, 11 Aug 2010 12:19
Pierwsze kroki z assemblerem
Author: Borneq
Date: Wed, 11 Aug 2010 12:19
Date: Wed, 11 Aug 2010 12:19
8 lines
1213 bytes
1213 bytes
Zastanawiam się nad którymś nasm, yasm, SB86, fasm, JWasm. Jakie są różnice
między nimi?
Szukam przykładów, jak zacząć np. utworzyć konsolę i użyć funkcji z WinApi
aby wypisać coś w rodzaju printf("Hello world"). Czy główna funcja musi się
nazywac main?
Poza tym - jak napisać minimalną okienkową aplikację tworząca okno i
obłsugującą komunikat Paint z możliwością rysowania TextOut, i innynch
rzeczy.
Re: Pierwsze kroki z assemblerem
Author: Borneq
Date: Wed, 11 Aug 2010 13:39
Date: Wed, 11 Aug 2010 13:39
13 lines
1560 bytes
1560 bytes
Użytkownik "Borneq" <borneq@antyspam.hidden.pl> napisał w wiadomości news:i3u4hc$qa1$1@news.onet.pl... > Zastanawiam się nad którymś nasm, yasm, SB86, fasm, JWasm. Jakie są > różnice między nimi? > Szukam przykładów, jak zacząć np. utworzyć konsolę i użyć funkcji z file:///C:/prog/asm/nasm/sample.shtml są przykłady pod Linuksa, przykłady ALink sa pod Tasm, wolałbym nasm, a poza tym zawierają includelib "win32.lib", chciałbym nie używać żadnych zewnętrznych bibliotek a jedynie wołać funkcje API Windows bezpośrednio z DLL przez LoadLibrary (ale samo LoadLibrary jest w kernel32.dll który jest zawsze załadowany ale jak w assemblerze wywołać którąś jego funkcję)
Re: Pierwsze kroki z assemblerem
Author: Borneq
Date: Wed, 11 Aug 2010 14:42
Date: Wed, 11 Aug 2010 14:42
13 lines
1680 bytes
1680 bytes
Użytkownik "Borneq" <borneq@antyspam.hidden.pl> napisał w wiadomości news:i3u970$7hh$1@news.onet.pl... > bibliotek a jedynie wołać funkcje API Windows bezpośrednio z DLL przez > LoadLibrary (ale samo LoadLibrary jest w kernel32.dll który jest zawsze > załadowany ale jak w assemblerze wywołać którąś jego funkcję) Znalazłem http://sourceforge.net/projects/nasmx/ i udało się skompilować przykład z funkcjami z DLL:ExitProcess i MessageBoxA. Ale jednak jest pewien problem: gdy próbuję debugować za pomoca GDB, nie rozpoznaje pliku jako execa. Zlinkowany jest za pomocą GoLink. Gdy próbuję użyć Alink, wypisuje że nie znalazł _MessageBoxA@16, _ExitProcess@4. Jak linkerowi Alink wskazac że ma brać te funkcje z DLL i dlaczego zmienił nazwy dodając podkreślenie i po nazwie liczbę?
Re: Pierwsze kroki z assemblerem
Author: yesma
Date: Wed, 11 Aug 2010 18:12
Date: Wed, 11 Aug 2010 18:12
15 lines
1369 bytes
1369 bytes
Borneq pisze: > Zastanawiam się nad którymś nasm, yasm, SB86, fasm, JWasm. Jakie są > różnice między nimi? Ja poleciłbym Ci NASM bo jest przenośny na inne platformy np LINUX, jest wolnym oprogramowaniem i dlatego że sam używałem go to pisania okienek w window$. Tyle że ja tworzyłem sobie pliki lib z dll'i a nie tak jak piszesz w poście niżej że chcesz używać bezpośrednio przez loaddll, ALINK je utworzy tyle że teraz niepamiętam jak to robiłem, sprawdź ALINK napewno dasz rade -- Pozdrawiam - Grzechu Linux x86_64
Re: Pierwsze kroki z assemblerem
Author: yesma
Date: Wed, 11 Aug 2010 18:15
Date: Wed, 11 Aug 2010 18:15
15 lines
1366 bytes
1366 bytes
Borneq pisze: > Zastanawiam się nad którymś nasm, yasm, SB86, fasm, JWasm. Jakie są różnice między nimi? Ja poleciłbym Ci NASM bo jest przenośny na inne platformy np LINUX, jest wolnym oprogramowaniem i dlatego że sam używałem go to pisania okienek w window$. Tyle że ja tworzyłem sobie pliki lib z dll'i a nie tak jak piszesz w poście niżej że chcesz używać bezpośrednio przez loaddll, ALIB je utworzy tyle że teraz niepamiętam jak to robiłem, sprawdź ALIB napewno dasz rade -- Pozdrawiam - Grzechu Linux x86_64
Re: Pierwsze kroki z assemblerem
Author: Wiktor S.
Date: Fri, 13 Aug 2010 11:36
Date: Fri, 13 Aug 2010 11:36
15 lines
1541 bytes
1541 bytes
> przykłady ALink sa pod Tasm, wolałbym nasm, a poza tym zawierają > includelib "win32.lib", chciałbym nie używać żadnych zewnętrznych > bibliotek a jedynie wołać funkcje API Windows bezpośrednio z DLL > przez LoadLibrary to win32.lib to biblioteka dla linkera statycznie importująca funkcje z dllek systemowych. Zaoszczędza ci pisanie kodu z LoadLibrary. To tylko automatycznie wygenerowane informacje dla linkera i później systemowego loadera. Nie jest to jakaś "prawdziwa" zewnętrzna biblioteka. Nie ma potrzeby by _wszystko_ ładować dynamicznie przez LoadLibrary/GetProcAddress. -- Azarien
Re: Pierwsze kroki z assemblerem
Author: Bogdan (bogdro)
Date: Mon, 16 Aug 2010 16:27
Date: Mon, 16 Aug 2010 16:27
63 lines
4153 bytes
4153 bytes
W dniu 11.08.2010 14:19, Borneq pisze:
> Zastanawiam się nad którymś nasm, yasm, SB86, fasm, JWasm. Jakie są
> różnice między nimi?
Różnią się w dyrektywach kompilatorów. Składnia języka jest ta sama.
LZASM jest zgodny z przestarzałym TASMem (Borland Turbo Assembler),
JWasm - z MASMem (Microsoft Macro Assembler), YASM jest zgodny z
NASMem i GNU as. Ja osobiście używam głównie NASMa, ale czasem też
FASMa, do testów. Porównanie dyrektyw i sposobów kompilacji znajdziesz
tu: http://rudy.mif.pg.gda.pl/~bogdro/dos/fntasm.htm.
Dla Windows jest też rodzina narzędzi "Go": GoAsm - kompilator,
GoLink - linker, GoBug - debuger, GoRC - kompilator zasobów
(http://www.godevtool.com/).
Dobrym debugerem jest też Olly Debugger (http://www.ollydbg.de/).
> Szukam przykładów, jak zacząć np. utworzyć konsolę i użyć funkcji z
> WinApi aby wypisać coś w rodzaju printf("Hello world").
Poszukaj kursu Iczeliona dla Win32 (http://win32asm.cjb.net/; wersja
polska pod adresem http://www.i-lo.tarnow.pl/edu/inf/prg/win32asm/) -
tego potrzebujesz. Kurs jest napisany pod MASMa lub MASMa32, ale z
niewielkim wysiłkiem można go przenieść na FASMa (i tak też robiłem).
FASM dla Windows to edytor tekstu z wbudowanym kolorowaniem składni i
opcjami kompilacji i uruchamiania, ale dla tego kompilatora napisano
też środowisko o nazwie Fresh (dostępne ze stron FASMa). Na zrzutach
ekranu wygląda podobnie np. do Borland Buildera, może więc okazać się
przydatne do pisania aplikacji okienkowych.
> Czy główna
> funcja musi się nazywac main?
Nie, chyba że linkujesz ze biblioteką standardową języka C.
> Poza tym - jak napisać minimalną okienkową aplikację tworząca okno i
> obłsugującą komunikat Paint z możliwością rysowania TextOut, i innynch
> rzeczy.
Wszystko znajdziesz w tutorialach Iczeliona. Jeśli używasz
odpowiedniego kompilatora, nie musisz używać LoadLibrary, ani nawet
bibliotek importowych (win32.lib czy cokolwiek w tym guście) -
wystarczy napisać odpowiednie linijki w programie (lub jeszcze łatwiej
- dołączyć do programu plik już je zawierający). Tak na pewno było w
FASMie dla Windows. Co do innych - nie wiem.
Co do dziwnych nazw ("_MessageBoxA@16") - są to nazwy funkcji i
bodajże ilość bajtów dla parametrów. Ich nazewnictwo musi być
uzgodnione między kompilatorem, linkerem i biblioteką DLL. Niektóre
kompilatory mają opcję importowania z inną nazwą, coś w stylu
extern _MessageBoxA@16 as MessageBoxA
dzięki czemu możesz używać normalnych nazw (bez ozdobników), a nie
będzie błędów linkera.
Jeśli jednak zdecydujesz się linkować Alinkiem, to też polecam Alib
do tworzenia bibliotek importowych z bibliotek DLL, dzięki czemu Alink
się połapie, o jakie funkcje chodzi.
Wejdź na http://rudy.mif.pg.gda.pl/~bogdro/linki.htm - znajdziesz tam
wiele odnośników do kompilatorów, narzędzi, kursów, książek i innych
stron o asemblerze.
--
Pozdrawiam/Regards - Bogdan (GNU/Linux & FreeDOS)
Kurs asemblera x86 (DOS, GNU/Linux):http://rudy.mif.pg.gda.pl/~bogdro
Grupy dyskusyjne o asm: pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
www.Xiph.org www.TorProject.org Soft (EN): miniurl.pl/bogdro-soft
Re: Pierwsze kroki z assemblerem
Author: Wiktor S.
Date: Wed, 18 Aug 2010 16:55
Date: Wed, 18 Aug 2010 16:55
13 lines
1320 bytes
1320 bytes
> Różnią się w dyrektywach kompilatorów. Składnia języka jest ta sama. > LZASM jest zgodny z przestarzałym TASMem (Borland Turbo Assembler), > JWasm - z MASMem (Microsoft Macro Assembler), YASM jest zgodny z > NASMem i GNU as. Zapomniałeś jeszcze "FASM jest mniej więcej zgodny z NASM". Jak dla mnie, składnia NASM/YASM/FASM jest najczytelniejsza. GNU as to makabra. -- Azarien
Re: Pierwsze kroki z assemblerem
Author: Wojciech Muła
Date: Wed, 18 Aug 2010 17:02
Date: Wed, 18 Aug 2010 17:02
9 lines
1065 bytes
1065 bytes
On Wed, 18 Aug 2010 18:55:45 +0200 "Wiktor S." <wswiktor&poczta,fm@no.spam> wrote: > GNU as to makabra. Bez przesady, w miarę łatwo da się przestawić - kwestia przyzwyczajenia. w.
Re: Pierwsze kroki z assemblerem
Author: Marek Borowski
Date: Wed, 18 Aug 2010 19:45
Date: Wed, 18 Aug 2010 19:45
19 lines
1601 bytes
1601 bytes
On 18-08-2010 18:55, Wiktor S. wrote: >> Różnią się w dyrektywach kompilatorów. Składnia języka jest ta sama. >> LZASM jest zgodny z przestarzałym TASMem (Borland Turbo Assembler), >> JWasm - z MASMem (Microsoft Macro Assembler), YASM jest zgodny z >> NASMem i GNU as. > > Zapomniałeś jeszcze "FASM jest mniej więcej zgodny z NASM". > Jak dla mnie, składnia NASM/YASM/FASM jest najczytelniejsza. > > GNU as to makabra. > > Duzo pisalem w m68k. - Najcudowniejszy assembler do recznego pisania. I skladnia intela byla dla mnie na poczatku katorga. (o trybie rzeczywistym nie wspominajac). Bardzo lubie GNU as. Takze sa wyjatki :-). Pozdr Marek
Re: Pierwsze kroki z assemblerem
Author: Wojciech Muła
Date: Wed, 18 Aug 2010 19:49
Date: Wed, 18 Aug 2010 19:49
13 lines
1260 bytes
1260 bytes
On Wed, 18 Aug 2010 20:02:15 +0200 "Wiktor S." <wswiktor&poczta,fm@no.spam> wrote: > >> GNU as to makabra. > > > Bez przesady, w miarę łatwo da się przestawić > > nie czuję potrzeby, skoro jak trzeba to jest NASM. Ależ nie namawiałem Cię do zmiany religii. :) Tylko niepotrzebnie straszysz młodych. w.
Re: Pierwsze kroki z assemblerem
Author: yesma
Date: Wed, 18 Aug 2010 20:04
Date: Wed, 18 Aug 2010 20:04
14 lines
1308 bytes
1308 bytes
Wiktor S. pisze: > GNU as to makabra. > "wojna" AT&T czy INTEL chyba nigdy się nie skończy :) Ja też popieram składnie Intel w wykonaniu NASM Jest minimalistyczna i w 100% zrozumiała, bez movb al,? == mov al,? , wiadomo że al to 8bitów. Ale jak ktoś dużo napisał w GNU AS to szacunek, napewno oprócz przyzwyczajenia ma swoje zalety tym bardziej jak ktoś dużo pisze w C :) -- Pozdrawiam - Grzechu Linux x86_64
Re: Pierwsze kroki z assemblerem
Author: yesma
Date: Fri, 20 Aug 2010 18:02
Date: Fri, 20 Aug 2010 18:02
12 lines
1108 bytes
1108 bytes
yesma pisze: > movb al,? == mov al,? mam nadzieję że nikt się nie obraził za mój błąd, rozpędziłem się :) oczywiście movb ?,%al == mov al,? -- Pozdrawiam - Grzechu Linux x86_64
Re: Pierwsze kroki z assemblerem
Author: Remek
Date: Fri, 22 Oct 2010 15:59
Date: Fri, 22 Oct 2010 15:59
11 lines
1230 bytes
1230 bytes
Użytkownik "Borneq" napisał:
> Szukam przykładów, jak zacząć np. utworzyć konsolę i użyć funkcji z WinApi
> aby wypisać coś w rodzaju printf("Hello world").
Jeśli za późno sie obudziłem to sorry. Do rzeczy.
Jeśli WinApi to jak rozumiem Windows32. Do tego jest niezawodny, dedykowany
i wspierany Masm32. Darmowy i jest do niego masa tutoriali.
Remek
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads