-
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!.POSTED!not-for
-mail
From: "Marcin Wasilewski" <j...@a...pl>
Newsgroups: pl.misc.elektronika
Subject: Re: Nauka programowania od czego zacząć?
Date: Wed, 21 Sep 2011 16:50:34 +0200
Organization: http://onet.pl
Lines: 81
Message-ID: <j5ctjp$brc$1@news.onet.pl>
References: <5...@n...onet.pl> <j4vkb2$bgr$1@opal.futuro.pl>
<j55bji$ile$1@inews.gazeta.pl> <j55jmj$r4h$1@opal.futuro.pl>
<j55lt4$lis$1@inews.gazeta.pl> <j55ra9$mes$1@news.onet.pl>
<j563sb$o9o$2@inews.gazeta.pl> <j575tk$kuj$1@news.onet.pl>
<j5782t$mg9$1@inews.gazeta.pl> <j57q92$pcu$1@news.onet.pl>
<j592ta$lv5$1@inews.gazeta.pl> <j59qr8$2qa$1@news.onet.pl>
<j5ajeq$407$1@inews.gazeta.pl> <j5ale3$gjl$1@news.onet.pl>
<9...@m...uni-berlin.de> <j5cm6m$isn$1@news.onet.pl>
<9...@m...uni-berlin.de>
NNTP-Posting-Host: host-81-190-189-35.kwidzyn.mm.pl
Mime-Version: 1.0
Content-Type: text/plain; format=flowed; charset="iso-8859-2"; reply-type=response
Content-Transfer-Encoding: 8bit
X-Trace: news.onet.pl 1316616633 12140 81.190.189.35 (21 Sep 2011 14:50:33 GMT)
X-Complaints-To: n...@o...pl
NNTP-Posting-Date: Wed, 21 Sep 2011 14:50:33 +0000 (UTC)
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.5931
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109
Xref: news-archive.icm.edu.pl pl.misc.elektronika:617964
[ ukryj nagłówki ]Użytkownik "Waldemar Krzok" <w...@z...fu-berlin.de> napisał w
wiadomości news:9du5jlFhnpU6@mid.uni-berlin.de...
> No trochę tu przesadzasz, no i definiujesz znów niedokładnie. Napisałeś że
> znasz różnicę deklaracji od definicji, ale jakoś zanika ta wiedza zaraz
> potem.
> Assembler i język wysokiego poziomu są prawie równoważne (język WP da się
> sprowadzić do assemblera, na odwrót niekoniecznie).
Nie no bez jaj. To co wykonuje procesor to kod maszynowy, assembler
polega głównie na tym, że zamiast wpisywać np. $FFFF to wpisujesz NOP, itd.
Skolei procesor to taka zaawansowana technologicznie maszyna stanów, gdzie
kolejne sekwencje zer i jedynek wyzwalają dany stan.
Tak więc wszystko MUSI się dać sprowadzić do kodu maszynowego bo TYLKO to
potrafi wykonać procesor. A zatem da się też zapisać w postaci programu w
assemblerze. Nazywa się to disassemblacją i istnieje do tego wiele programów
robiących to mniej lub bardziej automatycznie.
http://pl.wikipedia.org/wiki/Deasembler
> czego wynika, że w assemblerze istnieją zmienne. Deklaracja takowej
> zmiennej to przydzielenie jej pamięci (czy z "naklejką", czy bez to nie
> gra roli), definicja to wpisanie do tego obszaru pamięci jakiejś wartości.
> Inicjacja to wariant definicji i też w assemblerze jest do zrobienia w
> trakcie kompilacji lub, jak piszesz z wewnątrz programu.
To proszę bardzo wklej mi kawałek kodu w assemblerze równoważny temu:
if (a==b)
{
int c=5;
};
Tu nie chodzi o to, że w assemblerze możesz sobie napisać:
zmienna dc 10
Tylko abyś mógł tą zmienną stworzyć z poziomu kodu.
Powiem Ci jak to działa w C. Program wynikowy w C posiada kod inicjujący,
który m.in
przydziela pamięć na tzw. stertę (heap) i to w niej tworzy zmienne globalne
(zmienne lokalne tworzone są na stosie). Tylko, że potrafi to robić w miarę
wykonywania programu. Zmienne mogą w tej stercie pojawiać się i znikać w
czasie działania programu. W zależności od przebiegu programu mogą nie
pojawić się wcale. W przypadku gdy miejsce na stercie się kończy, kod
odpowiedzialny za kontrolę tego potrafi dla sterty przydzielić dodatkową
pamięć. Podczas inicjowania tablic potrafi na nią przydzielić dynamicznie
pamięć.
W assemblerze podczas assemblacji tworzone są tzw. chunki "code" (z
kodem dla procesora), "data" blok ze zdefiniowanymi danymi. Oraz czasami
chunk z danymi nt. zarezerwowanych obszarów, które są rezerwowane z poziomu
systemu (dletego, że nie ma sensu aby w pliku był obecny fizycznie obszar
1024K zawierający same zera). I to wszystko. Te bloki są statyczne -
powstają wraz z uruchomieniem programu i istnieją do momentu aż ten program
się przestanie wyknywać. To co wielu nazywa zmienną w assemblerze to właśnie
taki kawałek pamięci.
Różnica jest taka, że kod wynikowy w C podczas wykonywania programu
dynamicznie takie zmienne inicjuje, czy też deallokuje. W assemblerze to
jest zdefiniowany blok pamięci z danymi i nic więcej.
I naprawdę mam już dosyć tematu. Jeśli ktoś nadal uważa, że assembler
potrafi operować na zmiennych, to OK. Jego sprawa. Ci którzy pojmują, że
assembler to język niskiego poziomu zdają sobie sprawę, że assembler
obsługuje tylko to co potrafi obsłużyć dany procesor, gdyż jest zależny od
sprzętu. Wszelkie makra, etykiety itp. służą tylko temu aby ułatwić życie
programiście, gdyż tak naprawdę zamiast etykiet, można by było podawać od
razu adresy w pamięci.
Języki wyższego poziomu posiadają pewną warstwę abstrakcji i nie opisują
bezpośrednio sprzętu.
Za to odpowiedzialne są kompilatory, które zamieniają składnię języka na kod
zrozumiały dla procesora, dodając m.in. kod inicjujący, kontrolny i końcowy.
Osobną grupą są interpretery (np. wiele języków z rodziny BASIC, ale też np.
PHP), które nie są kompilowane, a wykonywanie programu polega na
interpretacji kodu źródłowego, przez specjalny interpreter który jest
niezbędny do uruchomienia programu.
Następne wpisy z tego wątku
- 21.09.11 14:54 Marcin Wasilewski
- 21.09.11 18:55 Waldemar Krzok
- 21.09.11 19:38 Lelek@
- 21.09.11 19:53 Marcin Wasilewski
- 21.09.11 20:12 Waldemar Krzok
- 22.09.11 07:19 Artur\(m\)
- 22.09.11 07:27 Artur\(m\)
- 22.09.11 07:51 Artur\(m\)
- 22.09.11 07:55 Artur\(m\)
- 22.09.11 07:56 Artur\(m\)
- 22.09.11 08:10 Artur\(m\)
- 23.09.11 22:44 Padre
- 24.09.11 07:40 J.F.
- 24.09.11 09:17 Marcin Wasilewski
- 24.09.11 10:01 J.F.
Najnowsze wątki z tej grupy
- Elektryczna łapka i szerszeń
- moduł dtmf
- 0.5V
- Odbiór SDR na mikrokontrolerach
- Taki uziom....
- Nałożnica?
- ładowanie akku
- Mikrofala
- organy
- Zasilacz, regulacja prądu, oscylacje
- Tester akumulatorów ACT612
- HD44780 i urządzenia 3,3V
- Odbiornik Ania R-612 - wyniesienie anteny ferrytowej
- Ładny rewersik
- Polski satelita i rozdzielczość
Najnowsze wątki
- 2024-09-02 Wzór
- 2024-09-01 Polska-Chorwacja 650zł elektrykiem
- 2024-09-01 odrdzewiacz do amelinium
- 2024-09-01 Elektryczna łapka i szerszeń
- 2024-09-01 Jakie podatki za wynajem?
- 2024-09-02 Warszawa => Key Account Manager <=
- 2024-09-02 Warszawa => Projektant/Programista React Native <=
- 2024-09-02 Gdańsk => Head of International Freight Forwarding Department <=
- 2024-09-02 Warszawa => Sales Development Representative (in German) <=
- 2024-09-01 1. wrzesnia po niemiecku
- 2024-09-01 Od setki do setki...
- 2024-08-31 wpadłem w siodło
- 2024-08-25 cenka opada
- 2024-08-30 Elektryki takie bezpieczne cd.
- 2024-08-31 Warszawa => International freight forwarder <=