-
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
- Rejestrator temperatur - termopara, siec
- Router LTE z możliwością zmian MTU
- Fajny film widziałem...
- Jaka ładowarka sieciowa do Iphona?
- Taśma izolacyjna do prac elektrycznych
- Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Wkrętarki, wiertarki...
- Zasilacz impulsowy 12V 10A, coś godnego uwagi jako zamiennik akumulatora wkrętarki
- Mouser - koszt wysyłki
- [OT] Jak wycinac ksztalt w piance lub styropianie?
- FV--> ciepła woda w kranie
- Szok
Najnowsze wątki
- 2025-07-14 granice
- 2025-07-14 Awaria VM?
- 2025-07-14 Gdańsk => Programista Kotlin <=
- 2025-07-14 Warszawa => Junior Rekruter <=
- 2025-07-14 Warszawa => Specjalista rekrutacji IT <=
- 2025-07-14 Wkłady do zniczy...
- 2025-07-14 Warszawa => Specjalista ds. Sprzętu Komputerowego <=
- 2025-07-14 Re: PO chroniło i chroni policyjnych bandziorów [zawiasy za katowanie obywatela (Poznań czerwiec 2012)]
- 2025-07-14 Warszawa => International Freight Forwarder <=
- 2025-07-14 Warszawa => Recruiter 360 <=
- 2025-07-14 Re: Rz?Âd ZAKAZUJE magazyn?Â?w energii ?!! Nowe prawo od 14 lipca to SZOK! ??Â
- 2025-07-14 Warszawa => Sales Assistant <=
- 2025-07-13 Fałszywe alerty
- 2025-07-12 dlaczego gadacie z tym debilem
- 2025-07-13 Unia Europejska przygotowuje nowy podatek