-
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
- w czasach LED komary mają ciężko
- walizka z kodami
- 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?
Najnowsze wątki
- 2025-07-18 celnicy pobili policjanta
- 2025-07-18 Warszawa => Technik IT - Konfiguracja i Wsparcie Sprzętowe <=
- 2025-07-18 Warszawa => Specjalista ds. Sprzętu IT i Wsparcia Technicznego <=
- 2025-07-18 Białystok => Kotlin Developer <=
- 2025-07-18 Warszawa => Sales Director (Cloud solutions) <=
- 2025-07-18 Spalinowa trauma
- 2025-07-18 Polska => Senior Key Account Manager <=
- 2025-07-18 Białystok => Programista Kotlin <=
- 2025-07-18 Szczecin => Key Account Manager IT <=
- 2025-07-18 Łódź => Programista Mainframe (z/OS, Assembler) <=
- 2025-07-18 Łódź => Mainframe (z/OS, Assembler) Developer <=
- 2025-07-18 Lublin => Delphi Programmer <=
- 2025-07-18 Lublin => Programista Delphi <=
- 2025-07-17 Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- 2025-07-17 Andrzej Duda ułaskawił Roberta Bąkiewicza od zarzutu zapchnięcia ze schodów aktywistki Babci Kasi