Nauka programowania od czego zacząć?

Szkoda mi trochę, że nie jesteś już elektronikiem tylko programistą :-) Sam już nieco napisałem włącznie z całym własnym crypto :-) Nie używam ichniego API :-) Tak jak nie używam crypto api z windy :-) A teraz właśnie się biorę za Xcode :-) Mac mini przyszedł i można zacząć :-) Nie zajmie to za wiele chyba :-)

Reply to
rennes
Loading thread data ...

Szkoda, że tego nie wystawiłeś za kasę w tamtych czasach :-) Tak sobie wspominam i podobne programy były za tysiące $. Ty byś zaoferował $100 za kopię i w końcu by ci ktoś zaoferował kilkadziesiąt tysięcy $ albo i więcej za prawa :-) Człowiek był głupi :-)

Z tego właśnie powodu trzeba komentowac kod po angielsku tak żebyś był gotowy sprzedać cały projek as is. Często tak bywa, że coś produkujesz i silniejsza wielka firma oderuje ci kasę za całość. Jak będziesz przeciągał to i tak cię wykończą swoimi produktami. jak masz propozycję od zachodniej konkurencji to ani myśleć tylko sprzedać :-)

Reply to
rennes

Użytkownik "Lelek@" napisał:

Najfajniejsza dla chcącego uczyć się programowania jest prawda. Poważny człowiek szuka rzeczowych i kompetentnych porad. A Ty wypisujesz niefajne bzdury. Może to miał być żart?

Remek

Reply to
Remek

Dnia Sun, 18 Sep 2011 20:18:09 +0200, Darek napisał(a):

Zalezy. Na porzadny procesor mozna pisac w assemblerze calkiem czytelnie.

Za to jezykach HL mozna pisac nieczytelnie, a w niektorych to nawet bardzo bardzo nieczytelnie.

Ba - niektorzy sa z tego dumni :-)

formatting link
J.

Reply to
J.F.

Użytkownik "Remek" snipped-for-privacy@gmail.com napisał w wiadomości news:j55lt4$lis$ snipped-for-privacy@inews.gazeta.pl...

LOL, a nie słyszałeś o przechowywaniu często używanych zmiennych w rejestrze procesora? Nawet C to potrafi. Rejestr jest równie dobrym miejscem przechowywania zmiennych, jak pamięć RAM, czy nawet EEPROM. Wszystko zależy od tego, jak często się do zmiennych odwołujemy. Zmienna to jest bardzo abstrakcyjna rzecz i może być zrealizowana na sprzecie na wiele sposobów.

A tak BTW czym się różnią tak naprawdę rejestry procesora od pamięci RAM? Głównie czasem dostępu właśnie. W AVR np. rejestry się pokrywają z pamięcią RAM. Spróbuj sobie kiedyś zapisać coś do rejestru Rx i odczytać pamięć spod adresu $x, to się lekko zdziwisz.

Reply to
Marcin Wasilewski

samochodem sportowym tez mozna jezdzic jak stara baba i w sumie o niczym to nie swiadczy.

no to przywołam przykład podany wcześniej:

koszyk = jablko_1 + jablko_2

jest mniej czytelny niż?

add jablko_1,jablko_2 //w rejestrze xx mamy koszyk

teraz popatrz na realizacje pętli, instrukcji warunkowych.

Fakt, można wiele, ale w ogólności twórca tej teorii, pisze, mowiac oględnie bzdury.

Asembler ma jeszcze tą podstawową wadę, że oprogramowanie jest praktycznie nieprzenośne pomiędzy procesorami bez przepisania. Dobrze napisany kod w HL może być stosunkowo łatwo przenośny.

Nie wspominam tu już o różnicach w asemblerze poszczególnych rodzin procesorów. Pewnie, można się nauczyć ale gdzie Ci łatwiej będzie pisać, na czymś co dobrze znasz, czy na nowo poznanym?

Asembler ma pewne zalety i to w specyficznych sytuacjach, głównie tam gdzie chodzi o szybkość i to pod warunkiem, że koder jest biegły, jednak nie te, które strał się kolega powyżej udowodnić.

Pozdrawiam Darek

Reply to
Darek

Użytkownik "Remek" snipped-for-privacy@gmail.com napisał w wiadomości news:j55ikr$bov$ snipped-for-privacy@inews.gazeta.pl...

Widzę głównie assembler i C, a ty się sieroto naucz czytać ze zrozumieniem, bo ci to średnio wychodzi. Co do drugiej części pytania tak widziałem, zamienia je wszystkie na rozkazy skoków warunkowych i bezwarunkowych. Natomiast assembler PECETA mnie nie interesuje bo jest tam wiele lepszych języków programowania, od C++ poczynając, ostatnio gdy miałem do czynienia z assemblerem peceta, to przypominało to architekturę

8-bitowego procesora i się zraziłem. Jak ktoś pisał kod pod MC68K, to się później do badziewiastego intela nie przekona. Czy tam nadal wykonanie jakichkolwiek obliczeń wymaga zapisania danych do akumulatora? Bo wiesz na MC68K powstałym w latach 70-tych to operacje arytmetyczne nawet na rejestrach adresowych można było wykonywać, a coś takiego jak akumulator zwyczajnie nie istniało, bo nie było takiej potrzeby.
Reply to
Marcin Wasilewski

W dniu 19.09.2011 00:00, J.F. pisze:

ARM jest raczej porządną architekturą z niezłą wydajnością a ma jeden z bardziej upierdliwych assmeblerów z którymi miałem do czynienia (duża ilość flag w rozkazach).

Reply to
Michoo

Dnia Fri, 16 Sep 2011 09:08:30 +0200, Zbyszek napisał(a):

A propos

formatting link

Reply to
J.F.

Użytkownik "Darek" napisał:

Twoje opinie są typowe dla ludzi nie znających asma. Takie typowe ble, ble o nieprzenośności, nieczytelności itp. A co to ma do rzeczy? Asembler to dłuto rzeźbiarskie, a HL to taśma produkcyjna. I oba te zastosowania mają swoją specyfikę i przeznaczenie. A Twoja argumentacja mnie osłabia. Programista ma rozumieć jak działa procesor, a nie jak się dodaje jabłka do koszyka. A przenośność kodu to miraż. Nie ma przenośnego kodu wynikowego. W pewnym zakresie może być przenośny kod źródłowy, ale to musi umieć kompilator.

Remek

Reply to
Remek

Użytkownik "Marcin Wasilewski" napisał:

Sam jesteś LOL :) Zrozum o co pytałem. Chodzi o zmienną w ASEMBLERZE. Jasne? Zmienna jest deklarowana w żródle i jej wartość, oraz adres są w kodzie. Co nie przeszkadza, jeśli taka potrzeba załadować jej argument, czy adres do rejestru. Tylko to są dwie różne sprawy.

Remek

Reply to
Remek

Użytkownik "Marcin Wasilewski" napisał:

architekturę

Jeśli masz na temat asm wiedzę z przed potopu, to postaraj się poduczyć, albo milcz i nie obrażaj innych. To, że się zraziłeś nie upoważnie Cię do nazywania mnie epitetami. Po prostu niewiele wiesz o asm.

Remek

Reply to
Remek

Użytkownik Remek napisał: [..]

Podpisuję się wszelakimi kończynami, na rozmowie kwalifikacyjnej jak babeczka spytała czy umiem obsługiwać oscyloskop to musiała słowo oscyloskop napisać na kartce bo nie mogłem zidentyfikować wymówionego przez nią słowa, po sprawdzeniu mnie przez technika robotę dostałem od ręki na naprawdę niezłych warunkach, i widzę masę polaków po studiach ze świetnym angielskim pracujących za najniższe stawki na najniższych stanowiskach przez agencje.

Reply to
AlexY

a Ty wiesz odnośnie czego odpowiadasz? przeczytaj to coś Ty tutaj narzeźbił

4 odpowiedzi wcześniej. To Ty głosisz bzdury, że asembler jest bardziej czytelny od HL i do tego się ustosunkowuje i chyba w tym kontekście ma to wiele do rzeczy co nie?

jeżeli coś ma być dłutem rzeźbiarskim to chyba maszynowy.

przecież nie ja wymyśliłem ten przykład kolego.

a kto wspominał o przenośności kodu wynikowego? :-) Ty chyba kod wynikowy utożsamiasz najwyraźniej z asemblerem. Tylko proszę teraz się nie czepiaj że formalnie to się nazywa język asemblera a asembler to program produkujący kod maszynowy... ok?

panie kolego, program napisany w np. C jest w kodzie źródłowym. Co musi umieć kompilator? Programista znając różnice pomiędzy uC musi wiedzieć jakich modyfikacji dokonać w programie przed przeniesieniem a nie kompilator.

definitywnie EOT

Reply to
Darek

Użytkownik "Remek" snipped-for-privacy@gmail.com napisał w wiadomości news:j563sb$o9o$ snipped-for-privacy@inews.gazeta.pl...

Nie, zmienna w assemblerze to jest przechowywana wartość - tyle i tylko tyle. W jaki sposób sobie jej przechowywanie rozwiążesz, to jest tylko twoja sprawa.

W assemblerze nie ma zmiennych w rozumieniu np. języka C, są tylko etykiety, bloki pamięci i wartości wpisane do pamięci. Jeśli sądzisz inaczej to powiedz mi w jaki sposób w assemblerze deklaruje się zmienną, zmienia jej wartość, czy też zmienia jej typ z poziomu kodu źródłowego. To wszystko o czym piszesz to są przechowywane wartości pod określonym adres pamięci, dla uproszczenia oznaczane etykietą, a nie określonym adresem. Nic nie stoi na przeszkodzie aby dla danego adresu pamięci nadać kilka etykiet, lub też nie nadawać ich wcale i odwoływać się bezpośrednio do komórki pamięci.

Assembler to język, który za pomocą skrótów literowych symbolizuje instrukcje kodu maszynowego procesora. Jeśli sprzęt nie obsługuje zmiennych (cokolwiek to jest) to i assembler tego nie robi.

Reply to
Marcin Wasilewski

Użytkownik "Remek" snipped-for-privacy@gmail.com napisał w wiadomości news:j563sb$o9o$ snipped-for-privacy@inews.gazeta.pl...

To pokaż mi w tym assemblerze np. pętlę for? Assembler to język symbolizujący mnemonikami instrukcje kodu maszynowego wykonywane bezpośrednio przez procesor. Podstawową cechą assemblera jest zasada, że 1 instrukcja assemblera = 1 kod maszynowy procesora. To, że gdzieś wprowadzono jakieś kombajny i uproszczenia, pozwalające się mniej napisać, to jeszcze nie znaczy, że to czysty assembler.

Raczej to ty niewiele wiesz, co to assembler, dorwałeś się do jakiegoś kombajna pod windows posiadającego tysiące udogodnień i wydaje Ci się, że to assembler. Czysty assembler to zasada:

1 instrukcja = 1 kod maszynowy procesora.

Jeśli jest inaczej, to to nie jest assembler, a coś pośredniego pomiędzy assemblerem a językami wyższego poziomu.

Reply to
Marcin Wasilewski

Użytkownik "Marcin Wasilewski" napisał:

Pisałeś coś w asm pod Windows?Kiedy i na jakim poziomie?

Mylisz pojęcia. Definicje zmiennych:

.data ; zmienne z przypisanymi wartościami

Bufor1 db 16 dup(0) Bufor2 db 16 dup(0)

Len dd 0

.data? ; zmienne bez przypisanej początkowej wartości

hInstance HINSTANCE ? Hwnd dd ?

.const ; stałe

Button1ID equ 33 Button2ID equ 34

.code

start: ; etykieta invoke GetModuleHandleA, 0 mov hInstance, eax call WinMain invoke ExitProcess, 0

..............

messag: ; etykieta invoke MessageBox, hWnd, addr Tekst2, addr Tytul2, MB_OK invoke SetFocus, hEdit1

lea esi, Bufor1 ; pobranie adresu zmiennej (!) Load Effective Address.

No i co ma z tego wynikać? Że w asm nie ma zmiennych i na dodatek nie mają adresów?

Remek

Reply to
Remek

W dniu 19.09.2011 13:11, Remek pisze:

Mylisz pojęcia.

Definicje ciągów bajtów w różnych sekcjach i ewentualnie, zależnie od argumentów kompilacji symboli linkera (które nie są częścią assemblera).

Zmienna to twór logiczny - powiązanie kontekstu z wartością.

A widzisz różnicę pomiędzy assemblerem a makroassemblerem? Ztcw przyjmuje się, że assembler operuje na mnemonikach rozkazów procesora - coś więcej to już są makropolecenia.

Np wszystkie etykiety zostaną (zarówno danych jak i kodu) zostaną na etapie assemblacji (a najdalej linkowania) zamienione na adresy/offset zależnie od kontekstu - bo one tylko tym są, a etykieta jest dla ułatwienia życia programiście. Natomiast makra zostaną rozwinięte etap wcześniej - np invoke na odłożenie argumentów na stos+call, tak samo pętla - oidp (trochę już nie pisałem w MASM) możesz ten kod spokojnie obejrzeć.

Reply to
Michoo

W dniu 19.09.2011 12:53, Marcin Wasilewski pisze:

No w sumie assembler x86 ma pętlę, składniowo jest to bardziej pętla do-while: extern int ECX; do{ //instrukcje }while(--ECX);

Ja bym jednak powiedział 'rozkaz'. Bo nawet dla RISC to nie jest koniecznie prawda - instrukcja często może zawierać:

- kod rozkazu dostępu do I/O (kierunek, domena operacji)

- kod rozkazu dla alu/fpu wykonywane na dwóch odrębnych "maszynach" - kontrolerze pamięci i rdzeniu procesora

Reply to
Michoo

Użytkownik "Darek" napisał w wiadomości grup

Podobnie jak my nie poslugujemy sie na codzien innymi jezykami, tzn przepraszam, akurat my elektronicy-programisci sie poslugujemy :-)

No jak to jak - propaganda, powszechne kursy, nauka w szkole. Ale widac nie bylo naporu, to sie nie przyjal.

No nie wiem - lacina w calej europie. Oczywiscie wsrod nielicznych, wyksztalconych warstw. Francuski podobnie - to po prostu nie wypadalo nie mowic po francusku :-)

To sie nie bardzo zgodze, bo zanim internet trafil pod strzechy czy nawet na uczelnie, to juz trzeba bylo umiec poslugiwac sie dosem, turbo jezykiem itp.

Co prawda w drugim rzucie to mozesz miec racje - zwykly czlowiek juz chyba mial windowsa i programy po polsku, ale przyszedl internet.

J.

Reply to
J.F

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.