-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!fu-berlin.de!uni-berlin.de!not-for-mail
From: Waldemar Krzok <w...@z...fu-berlin.de>
Newsgroups: pl.misc.elektronika
Subject: Re: Nauka programowania od czego zacząć?
Followup-To: pl.misc.elektronika
Date: Wed, 21 Sep 2011 20:55:57 +0200
Organization: Freie Universitaet Berlin
Lines: 97
Message-ID: <9...@m...uni-berlin.de>
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> <j5ctjp$brc$1@news.onet.pl>
Mime-Version: 1.0
Content-Type: text/plain; charset="ISO-8859-2"
Content-Transfer-Encoding: 8Bit
X-Trace: news.uni-berlin.de
XK5jXY8K+OP4bT1+TMLn3Q3pglMgvmZe5DfNYSwyh6K1wTcktIOZS0LZ3E
Cancel-Lock: sha1:Fo4Tm3Nim9xdzQZVXn4+4MOUBME=
User-Agent: KNode/4.4.10
Xref: news-archive.icm.edu.pl pl.misc.elektronika:617979
[ ukryj nagłówki ]Marcin Wasilewski wrote:
> 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.
Tak dla informacji: studiowałem m.in. informatykę, a tam budowę
kompilatorów. Również napisałem (co prawda prosty ale mimo to) kompilator na
zaliczenie jak i disassembler i pisałem i stosowałem.
To, co ty napisałeś może być faktycznie zadeklarowane na heap-ie, ale też na
stacku. Dynamiczne int c = 5 może być zaimplementowane w tym przypadku w
assemblerze jako mov 4[bp],ax. Zmienne statyczne na heapie, też warunkowo
deklarowane, są najczęściej rezerwowane za pomocą funkcji alloc systemu
operacyjnego.
Waldek
--
My jsme Borgové. Sklopte štíty a vzdejte se. Odpor je marný.
Następne wpisy z tego wątku
- 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.
- 24.09.11 13:08 Jarosław Sokołowski
- 26.09.11 07:03 Artur M. Piwko
Najnowsze wątki z tej grupy
- pradnica krokowa
- Nieustający podziw...
- Coś dusi.
- akumulator napięcie 12.0v
- Podłączenie DMA 8257 do 8085
- pozew za naprawę sprzętu na youtube
- gasik
- Zbieranie danych przez www
- reverse engineering i dodawanie elementów do istniejących zamkniętych produktów- legalne?
- Problem z odczytem karty CF
- 74F vs 74HCT
- Newag ciąg dalszy
- Digikey, SN74CBT3253CD, FST3253, ktoś ma?
- Szukam: czujnik ruchu z możliwością zaączenia na stałe
- kabelek - kynar ?
Najnowsze wątki
- 2025-01-19 Test - nie czytać
- 2025-01-19 qqqq
- 2025-01-19 Tauron przysyła aneks
- 2025-01-19 Nowa ładowarka Moya a Twizy -)
- 2025-01-18 Power BANK z ładowaniem przelotowym robi PRZERWY
- 2025-01-18 Pomoc dla Filipa ;)
- 2025-01-18 znowu kradno i sie nie dzielo
- 2025-01-18 Zieloni oszuchiści
- 2025-01-18 Zielonka => Specjalista ds. public relations <=
- 2025-01-18 Warszawa => Frontend Developer (JS, React) <=
- 2025-01-18 Warszawa => Software .Net Developer <=
- 2025-01-18 Warszawa => Developer .NET (mid) <=
- 2025-01-18 Katowice => Administrator IT - Systemy Operacyjne i Wirtualizacja <=
- 2025-01-17 Zniknął list gończy za "Frogiem". Frog się nam odnalazł?
- 2025-01-17 Kto wytłumaczy "głupiemu" prezydentowi Dudzie wielką moc prawną "dekretu premiera" TUSKA? [(C)Korneluk (2025)]