-
Data: 2011-09-21 18:55:57
Temat: Re: Nauka programowania od czego zacząć?
Od: Waldemar Krzok <w...@z...fu-berlin.de> szukaj wiadomości tego autora
[ pokaż wszystkie 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
- Wieszanie się przy aktywnym SMP
- Prognozowanie zużycia energii przez PGE?
- Odkurzacz mnie bije :(
- Rapsberry Pi i synchronizacja plików
- RCD 300 mA
- rpi i moduł przekaźników
- Falownik do pompy CO
- Lampa ogrodowa rozłączała różnicówkę
- Inteligentne oświetlenie schodów
- Pytanie do Użytkownika
- Emanuel kiedyś szukał gotowca do chłodzenia leków
- Sprzęty z Lidl-a
- idzie nowe
- Wybuchające pagery
- Jak shakować windę
Najnowsze wątki
- 2024-10-07 Re: Taniocha!!!
- 2024-10-07 Warszawa => Technical Leader (Java Background) <=
- 2024-10-07 Zielona Góra => Power Electronics R&D Engineer <=
- 2024-10-07 Warszawa => Junior New Business Development Manager <=
- 2024-10-07 Warszawa => Key Account Manager <=
- 2024-10-07 Wrocław => Konsultant wdrożeniowy ERP (Symfonia) <=
- 2024-10-07 policja szuka
- 2024-10-07 Nowy akt zasadniczy
- 2024-10-07 KIA nas dyma
- 2024-10-07 Warszawa => QA Inżynier <=
- 2024-10-07 Warszawa => Sales Development Representative (z j. niemieckim) <=
- 2024-10-06 miles per gallon
- 2024-10-06 Strefa czystego powietrza
- 2024-10-06 Prawdziwy ekologiczny samochód
- 2024-10-05 Stało się...