🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.asm
Article #1768

Re: Metody programowania

#1768
From: Bogdan (bogdro)
Date: Fri, 28 Mar 2008 17:10
42 lines
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-mail
References: <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