![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 283 Pomógł: 11 Dołączył: 11.10.2004 Skąd: 3c Ostrzeżenie: (10%) ![]() ![]() |
Tytul moze dziwny, ale czy ktos moglby mnie oswiecic jak wyglada programowanie od poczatku - od poczatku czyli jaki jezyk programowania jest tym startowym i jakie sa kolejne do osiagniecia poziomu systemu operacyjnego (np. w czym albo jak zaprogramowano jezyk C).
Czyli w czym buduje sie podwaline pod cala reszte programow i kolejnych jezykow - co jest lacznikiem miedzy podzespolami komputera a cala reszta swiata informatycznego. Ktos to w miare lopatologicznie potrafi wyjasnic? Przyznam sie, ze temat moze jest banalny ale ciezko mi w google wyszukac az takie podstawy, nawet nie wiem jakich fraz uzyc a te co wymyslam nie daja mojej oczekiwanej odpowiedzi... Ten post edytował Volume 18.02.2013, 18:30:53 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Jeśli Cię to interesuje to zainteresuj się mikrokontrolerami - wtedy dokładnie będziesz wiedział jak to działa.
W skrócie. Ciąg 0 i 1 to jakieś instrukcje w komputerze. Umówiono się, że pewne wyrazy typu: ADD czy SUB lub JMP oznaczają konkretny ciąg 0 i 1. I tak powstał pierwszy język zwany asemblerem. Następnie napisano w asemblerze program, który zamienia instrukcję typu wyglądająca "po ludzku" na instrukcję asemblera. Najbardziej znanym takim programem i który się przyjął jest język C. Później już napisano w C inny język, a w innym języku jeszcze inny język. Każdy ma wady i zalety. Miałem styczność z pisaniem kompilatora C w ... C ![]() -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Google: compiler bootstrapping
@kamil4u: Gwoli ścisłości, nie ma języka "assembler" jako takiego. Każdy procesor, czy raczej architektura/rodzina procesorów ma swój własny "język assemblera". |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Zacznijmy po kolei:
- komp rozumie tylko ciąg zer i jedynek - człowiek dla łatwiejszej orientacji podzielił ciągi na bajty czy słowa. I programował tak, jak komputer umiał - składając z zer i jedynek instrukcje dla komputera. Załóżmy, że komputer miał 8 rejestrów, oznaczonych literami od A do H - i do wstawienia do rejestru A wartości 1 potrzebny był kod "0x35 0x01", ale już przy rejestrze B kod mógł brzmieć "0x71 0x01". Tak samo z dodawaniem liczby do rejestru, odejmowaniem... Programowanie szybko zaczęło męczyć. Ponieważ jednak (Crozin dobrze gada, polać mu) każdy producent procesora podawał (w specyfikacji procesora) takie rzeczy jak mnemonik (czyli : ADD, SUB, MOV, JMP, ...), i wartość, jaka temu mnemonikowi odpowiada (+opcjonalnie parametry), stosunkowo łatwo było napisać sobie... - ASEMBLER - czyli tłumacz mnemoników bezpośrednio na binarny kod maszynowy. Dodatkową zaletą pisania w asemblerze stało się to, że już nie trzeba było przeliczać adresów do skoków (JMP), asembler sam potrafił o to zadbać, trzeba było tylko w odpowiednim miejscu kodu umieścić tzw. etykietę, którą podawało się w instrukcjach JMP czy CALL jako adres do skoku. Dodatkowo oczywiście pojawiły się automatyczne konwersje ciągu znaków (podanych w cudzysłowach) na ich kody ASCII i umieszczenie w poszczególnych komórkach pamięci, można było używać stałych... Życie stało się prostsze. - Ale ludzie chcieli więcej i łatwiej, i dlatego już w latach '50-'60 powstały takie języki jak Fortran (do dziś wielu naukowców go używa, z uwagi na nieprawdopodobnie dobrej jakości biblioteki numeryczne), Algol (prekursor Pascala) czy Cobol (język dla biznesu). Nieco później (na początku lat '70) powstały dopiero C czy Prolog. Z ciekawostek: C, C++, Unix, tranzystor - to wszystko łączą dwa słowa: "Bell Labs". P.S. Zobacz sobie http://www.thegeekstuff.com/2011/10/c-prog...-an-executable/ - tu masz fajnie pokazane, jak linuksowy gcc kompiluje program "Hello World", a także (co może Cię bardziej zainteresować), jak wygląda kod asemblera takiego programu. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.06.2025 - 19:50 |