Article View: pl.comp.lang.asm
Article #1768Re: Metody programowania
From: Bogdan (bogdro)
Date: Fri, 28 Mar 2008 17:10
Date: Fri, 28 Mar 2008 17:10
42 lines
3725 bytes
3725 bytes
Korsarz Jej Królewskiej Mości I Rp. Królowej „Marysienki” pisze: >> Jakie metody programowania można przypisać tworzonym źródłom w języku >> asemblera? Języki wyższego poziomu posiadają na przykład programowanie >> strukturalne, obiektowe, itd. Czy źródło w języku asemblera pisze się w >> sposób wygodny dla zrozumienia rozwiązywanego zadania, czy w sposób >> pośredni (stosując makropolecenia), czy jakoś inaczej? > Przeczytałem wszystkie odpowiedzi i nasuwa mi się coś takiego, że asembler nie posiada wyższej warsty kodu, tylko każdy szczególik trzeba dłutem dopracować, pomijając oczywiście struktury danych, które idą z taśmy. Ale nie rozumiem, dlaczego tak jest i czy tak musi być? Oczywiście znam projekt ‟High-level Assembly”, lecz jest on raczej nastawiony na rozbudowane makropolecenia; nawet wtedy gdy dane makropolecenie jest wbudowane w język, zachowuje się ono tylko jak generator czegoś idącego w ilość. Nie ma jakby takiego optymalizatora kodu, który pozwalałby mimo swoich zmian zachować kontrolę nad kodem. A może wcale nie chodzi o optymalizator? Według mnie, "najwyższą" warstwą kodu dostępną w asmie są procedury/makroinstrukcje (zależy od kompilatora). Dlaczego tak jest? Bo to jest właśnie asembler - język PROCESORA. Procesor nie zna pojęcia klasy, procedury, makra itp. Po prostu wykonuje instrukcje pod wskazanym adresem. A jak pojawia się instrukcja CALL, to my dumnie nazywamy to procedurą, zaś procesor nazywa to: "zapamiętaj gdzie jesteś i zacznij wykonywanie tam". Czy tak musi być? To jest właśnie smak asemblera - wszystko pisze się ręcznie. Mamy szczęście, że nie musimy wklepywać kodów hex/bin każdej instrukcji, że kompilatory mają mechanizmy struktur, makroinstrukcji i inne udogodnienia dla programistów. Może i jakieś cechy z wyższych języków by się czasem przydały, ale to już by było odchodzenie od asemblera w kierunku tychże wyższych języków. Asembler powinien dawać pełną kontrolę nad kodem. Tu kompilator nie poprawia kodu według własnego widzimisię. Tu programista ma optymalizować. Z resztą, optymalizacja w asemblerze nie musi być banalna. Co z tego, że kompilator zamieni moje "powolne" mov eax, 0 na "hiperszybkie" xor eax, eax (dające ten sam efekt), skoro spaprze mi połowę rejestru flag? Istnieją pewne optymalizacje rozmiarowe, np. używanie krótszych form instrukcji, ale do optymalizacji na szybkość potrzeba dużo więcej analizy, np. zależności między instrukcjami. -- 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.JabberPL.org www.TorProject.org Soft (EN): miniurl.pl/bogdro-soft
Technical Details
Message-ID:
<fsj8qf$qdo$3@inews.gazeta.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mailReferences:
<fsbkje$2da$1@news.mixmin.net> <fsicfv$7ad$1@news.mixmin.net>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail From: "Bogdan (bogdro)" <bogdan@poczta.gazeta.pl> Newsgroups: pl.comp.lang.asm Subject: Re: Metody programowania Date: Fri, 28 Mar 2008 18:10:37 +0100 Organization: "Portal Gazeta.pl -> http://www.gazeta.pl" Lines: 42 Message-ID: <fsj8qf$qdo$3@inews.gazeta.pl> References: <fsbkje$2da$1@news.mixmin.net> <fsicfv$7ad$1@news.mixmin.net> NNTP-Posting-Host: 66.230.230.230 Mime-Version: 1.0 X-Trace: inews.gazeta.pl 1206724242 27064 66.230.230.230 (28 Mar 2008 17:10:42 GMT) X-Complaints-To: usenet@agora.pl NNTP-Posting-Date: Fri, 28 Mar 2008 17:10:42 +0000 (UTC) X-User: bog.d In-Reply-To: <fsicfv$7ad$1@news.mixmin.net> User-Agent: Thunderbird 2.0.0.12 (X11/20080213) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit