In the darkest hour on Mon, 19 Sep 2011 18:40:15 +0200, Marcin Wasilewski snipped-for-privacy@adres.pl screamed:
Z80 też.
loop: [...] DJNZ loop
W przypadku wyżej zmniejsza B o 1 i skacze do loop jeśli B nie zawiera zera.
In the darkest hour on Mon, 19 Sep 2011 18:40:15 +0200, Marcin Wasilewski snipped-for-privacy@adres.pl screamed:
Z80 też.
loop: [...] DJNZ loop
W przypadku wyżej zmniejsza B o 1 i skacze do loop jeśli B nie zawiera zera.
In the darkest hour on Mon, 19 Sep 2011 21:08:50 +0200, RoMan Mandziejewicz snipped-for-privacy@pik-net.pl screamed:
A taki C128 całkiem niezły BASIC już miał w ROM-ie (w odróżnieniu od C64).
Użytkownik J.F napisał:
To zależy, nigdy nawet nie rozważałem czegoś takiego jak wyjazd z rodzinnego miasta o innym kraju nie wspominając, nie przykładałem się do nauki języków (czego obecnie żałuję), to co umiałem zostało mi z jednego roku zajęć dodatkowych w podstawówce jakieś 25 lat wcześniej plus gigabajty przeczytanych dokumentacji technicznych datasheetów, linuxowych manuali, obsługa pierwszych systemów komputerowych które były wyłącznie angielskie. Więc czytam, piszę, od biedy się dogaduję. Pierwsze słowa jakie usłyszałem to był szok bo było to zupełnie inne od tego co uczą w szkole, żeby kupić bilet autobusowy nazwę miejscowości musiałem napisać bo nie umiałem poprawnie jej wymówić. Ogólnie komunikatywny był bo test telefoniczny zdałem ale nadal jest kiepsko bo tu gdzie jestem używają cholernie bełkotliwego dialektu do którego nie umiem się dostosować (świetnie mi idzie po paru głębszych).
Akurat kontaktu z klientem nie mamy, wszelkie poważne firmy mają do tego ludzi którzy nie są techniczni ale za to są uprzejmi, ciągle się uśmiechają i ładnie wyglądają, pozory i wizerunek to najważniejsze w tym kraju.
Nie całkiem, ktoś kto dopiero przyjechał do UK takiej roboty nie dostanie (może poza pubem), za dużo specyficznych spraw z których istnienia nie zdawałby sobie sprawy, po ok 2-ch latach - ma szanse.
Jest masa sklepów polskich, znajomy z pracy opowiadał że był w jednym z kolegą irakijczykiem i ten chciał kupić kiełbasę co wyraził po angielsku do sprzedawczyni, babeczka zdębiała, nie zna ani słowa po angielsku.
Bardzo popularny tu jest outsourcing, nawet agencje rządowe tego używają do cięcia kosztów (tak, tu rząd potrafi oszczędzać, a wszelkie(?) machloje wyłażą na wierzch nawet jak są to niewielkie kwoty) więc używają prywatnych firm do tłumaczeń czy to osobiście czy przez telefon (wiem, używałem parokrotnie).
[...]Pożyjemy zobaczymy, jak będzie szansa na porównywalne zarobki w porównywalnych warunkach a ja nadal będę wśród żywych to rozważę powrót.
Użytkownik "Remek" snipped-for-privacy@gmail.com napisał w wiadomości news:j592ta$lv5$ snipped-for-privacy@inews.gazeta.pl...
Naucz się najpierw wklejać linki tak aby się nie łamały, to sobie poczytam. Jak nie wiesz jak to zrobić to daj znać. Chętnie Ci wyjaśnię.
Ze zmiennymi ma to niewiele wspólnego, z jednego powodu - procesor rozumie tylko jedną rzecz - dane, w zależności od procesora mogą mieć różną długość, ale są to tylko dane.
Jakbyś tego nie nazwał i jak by tego nie nazwano w dokumentacji, z definicji zmiennej wynika, że jest to conajmniej nazwa+miejsce na dane. W assemblerze to co nazywasz zmienną może nie mieć wcale nazwy, a może mieć nadane naście etykiet. A jak się w assemblerze odwołujesz do czegoś w następujący sposób:
nazwa+8,
to niby do czego się odwołujesz? Do zmiennej o nazwie "nazwa", czy też do adresu oznaczonego etykietą "nazwa" powiększonego o 8?
Przeczytaj sobie to i odpowiedz na pytania ile to ma wspólnego z jak to nazywasz "zmienną w assemblerze":
A tak zdroworozsądkowo napisz w assemblerze kod, który po spełnieniu jakiegoś warunku utworzy Ci zmienną. Ale nie z poziomu bloków warunkowych dyrektyw assemblacji, tylko z poziomu kodu.
Np. jeśli jak to nazywasz zmienna o nazwie "test" przyjmie wartość 8, zdefiniuj z poziomu programu w assemblerze zmienną "test2". Co, nie da się?
A tu masz coś na temat stałej, bo z tym też masz problem:
I na koniec to:
W dniu 2011-09-20 01:42, Jacek Radzikowski pisze:
a tam tak daleko szukać. Wystarczy że się anglik z południa zaplącze na prowincję w Northumbrii i też może mieć poważne problemy ze zrozumieniem co do niego mówią..
Użytkownik "Marcin Wasilewski" napisał:
Pouczaj twórcę klienta pocztowego, którego uzywam. Niech tak zrobi program, aby nie łamał linków. Mnie to g ... obchodzi. Zresztą z takiego linka tez można skorzystać. Nie wiedziałes?
długość,
A Ty uparcie swoje brednie. Czy ja pisałem co rozumie procesor??? Pisałem o terminologii języka asemblera. Jesteś tępakiem. Przykro mi. Lądujesz w KF i już możesz nie odpisywać.
Remek
Użytkownik "Remek" snipped-for-privacy@gmail.com napisał w wiadomości news:j5ajeq$407$ snipped-for-privacy@inews.gazeta.pl...
W OE też się to da zrobić, ale jak to napisałeś poniżej "tępak" taki jak ty tego nie zrozumie.
Tak samo jak i ze zmiennej w assemblerze. Jak się poskleja to pewnie i można. Tylko, że to jest brak kultury w stosunku do odbiorcy.
No widzisz i dalej nie zrozumiałeś, że assembler to język programowania który operuje bezpośrednio na logice sprzetu. Nie może umożliwiać pracy ze zmiennymi, jeśli procesor tego nie potrafi.
Idź na informatykę i nabierz trochę szerszego spojrzenia, to może pewne rzeczy zauważysz i to ty... przestaniesz być tępakiem.
A co argumenty się skończyły? Okazało się, że jednak w assemblerze nie da się utworzyć zmiennej z poziomu programu? No patrz, a w każdym języku programowania posiadającym obsługę zmiennych jest to bezproblemowe. Ciekawe, czemu w assemblerze się tego nie da zrobić.
W dniu 16.09.2011 09:44, John Smith pisze:
W repozytoriach ubuntu i debiana (testing) jest TurtleART inspirowany logo.
Dyfer
Użytkownik "Marcin Wasilewski" snipped-for-privacy@adres.pl napisał w wiadomości news:j5ale3$gjl$ snipped-for-privacy@news.onet.pl...
Dlaczego uważasz, że to miliony użytkowników programów pocztowych powinny się uczyć jak wklejać linki, a nie powinien tego raz załatwić jego autor ? Według mnie obecnie obowiązująca koncepcja oprogramowania przeznaczonego do użytkowania przez wszystkich (za takie uważam programy pocztowe) zakłada intuicyjność użycia, a nie konieczność wcześniejszego zaliczenia odpowiedniego szkolenia. Akurat w przypadku takich programów brak zaliczenia takiego szkolenia nie powinien być traktowany jako brak kultury (brak wiedzy nie równa się brakowi kultury). Jeśli skopiowany ze schowka link wygląda nie połamany to zakładanie, że intuicja powinna użytkownikowi podpowiedzieć, żeby nie wierzył temu, co widzi, świadczy jednoznacznie o inteligencji czyniącego takie założenie. Nie wiem kiedy w Windows (Linuksa nie znam) wymyślono kopiowanie przez schowek. Było chyba dość czasu, aby każdy program klienta pocztowego potrafił obecnie rozpoznać, że to, co wkłada to link (zresztą rozpoznaje bo wyróżnia) i wstawił go tak, aby się nie łamał. Aby nie było niejasności. Nie wiem jak wkleić inaczej niż normalnie kopiując. Może raz na rok zdarza mi się wkleić jakiś ciut dłuższy link. Skąd mam wiedzieć który się już połamie? Mam podejrzenie, że jakbym nawet doszedł do tego to przy następnej potrzebie za rok będę musiał dochodzić do tego od nowa. Mam inne rzeczy na które powinienem przeznaczać czas, a nie na obchodzenie według mnie oczywistej niedoróbki programu. P.G.
Użytkownik Marcin Wasilewski napisał: [..]
Zmienną tworzy programista w komórce (obszarze) pamięci (zapisywalnej z poziomu wykonywanego programu) którą sobie wybierze. Taka specyfika assemblera i nie ma co tu się rozwodzić nad wyższością jednego języka czy drugiego ani ujmować funkcjonalności bo już samo nadanie etykiety jakiejś komórce może być zadeklarowaniem zmiennej. Do czego programista tej komórki użyje to tylko jego wola ograniczona jedynie wyobraźnią i dostępnym zestawem poleceń procesora, za to kocham assembler.
Am 20.09.2011 20:18, schrieb Marcin Wasilewski:
Najpierw zdefiniuj co znaczy "utworzyć", bo tego nie ma ani w assemblerze, ani w językach wyższego poziomu.
Waldek
PS
nawiasem mówiąc, Fortran w swojej pierwotnej wersji też był rodzajem assemblera.
Użytkownik "Waldemar Krzok" snipped-for-privacy@zedat.fu-berlin.de> napisał w wiadomości news: snipped-for-privacy@mid.uni-berlin.de...
To niech ci będzie zainicjować, czy też zadeklarować bądź zdefiniować*.
*) Piszę w C, więc wiem czym się różni deklaracja od definicji, żeby się nowy wątek nie rozwinął.Takie DIM A, czy też int a; int a=15;.
Tylko wywoływane z poziomu programu np. po spełnieniu jakiegoś warunku wewnątrz programu. a nie z poziomu procesu assemblacji. W assemblerze się tego nie da zrobić. To co Remek nazywa zmiennymi to są zwyczajne etykiety, zamieniamne podczas assemblacji na adresy pamięci zarezerwowanego bloku.
Polecam: (post soku11)
Użytkownik "Piotr Gałka" snipped-for-privacy@CUTTHISmicromade.pl napisał w wiadomości news:4e799c03$ snipped-for-privacy@news.home.net.pl...
Uważam, że OE to syf, ale jeśli się go już z wyboru używa (ja też używam OE) to należy się postarać aby nie utrudniać życia innym czytającym.
Jeśli ktoś się uważa za guru informatyki i nawet potrafi zmienne z poziomu programu w assemblerze obsługiwać to powinien takie rzeczy wiedzieć.
Oto instrukcja:
pomimo, że <> znikną, to link nie będzie się łamał. Dla bezpieczeństwa można tak robić z każdym linkiem. Po kilkunastu razach samo wejdzie Ci w nawyk.
Am 21.09.2011 14:44, schrieb Marcin Wasilewski:
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), z 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.
Muszę lecieć, ale wieczorem mogę dalej na ten temat pisać
Waldek
U mnie nic nie znika.
Nieprawda - są czytniki, które nadal łamią nawet tak zapisane linki.
Ale po co? Nie lepiej używać czytnika, który nie psuje linków?
j.w.
Użytkownik "RoMan Mandziejewicz" snipped-for-privacy@pik-net.pl napisał w wiadomości news: snipped-for-privacy@pik-net.pl...
Bo nie używasz OE.
No i?
Czytającemu wszystko jedno co używasz, mu zależy tylko na tym aby link był cały. Ja np. potrafię spowodować aby był cały w OE i tego używam, bo się przyzwyczaiłem.
A na dowód, że link się nie łamie:
Użytkownik "Marcin Wasilewski" snipped-for-privacy@adres.pl napisał w wiadomości news:j5cmls$kld$ snipped-for-privacy@news.onet.pl...
Spotkałem się z tym z rok temu, ale potem widziałem informację, że to działa ale nie u wszystkich. Myślałem, że piszesz o jakiejś innej możliwości - coś typu "wklej specjalnie". P.G.
Użytkownik "Waldemar Krzok" snipped-for-privacy@zedat.fu-berlin.de> napisał w wiadomości news: snipped-for-privacy@mid.uni-berlin.de...
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.
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.
Użytkownik "Waldemar Krzok" snipped-for-privacy@zedat.fu-berlin.de> napisał w wiadomości news: snipped-for-privacy@mid.uni-berlin.de...
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. Z kolei 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.
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
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.