Dyskusja:Asembler
Z Wikipedii
Należy pisać "assembler" czy "asembler"?
W języku polskim istnieje WYŁĄCZNIE słowo asembler przez jedno S. Pozostawiamy natomiast pisownię SS w nazwach własnych, np. w nazwach programów. Beno Moja dyskusja 09:37, 23 kwi 2005 (CEST)
Spis treści |
[edytuj] Asembler to nie język programowania!
Tak mnie przynajmniej uczono na studiach (studiuję informatykę). Wersja 18:17, 11 lis 2004 Tsca jest najbardziej poprawna. Jak ktoś znajdzie, że asembler to język programowania, niech poda źródło, aby to zrewidować.koobak 18:28, 29 lis 2005 (CET)
- Może u Was używa się jakiejś bardzo wyrafinowanej, specjalistycznej definicji języka programowania? Czy chcesz powiedzieć, że asembler nie jest językiem programowania wobec definicji podanej tutaj (która brzmi całkiem OK dla nieinformatyka)? --Bansp 18:45, 29 lis 2005 (CET)
Asembler, to jakby nie patrzec, jezyk maszynowy, a czy to jest jezyk programowania? Na wiki podaja, ze tak... PALLADINUS talk 23:24, 29 lis 2005 (CET)
- Powiem tak: Wikipedia ma zawierać wiedzę, a nie czyjeś widzimisie na temat wiedzy. Przecież to ma być encyklopedia! Nie można w encyklopedii zamieszczać nieprawdy! Definicje, które się tutaj znajdują muszą być OK dla każdego (i specjalisty i laika). Ewentualnie można dobrać odpowiednio słownictwo. koobak 23:41, 29 lis 2005 (CET)
- Dla mnie jezyk maszynowy to raczej ciąg '0' i '1'. A asembler (tak mnie też uczono na informatyce :P) to jezyk programowania. Z resztą, zadajmy sobie proste pytanie: "Czy w Asemblerze można napisać program?" Otóż moim skromnym zdaniem: tak. Co (przynajmniej dla mnie) jest równoważne stwierdzniu, że jest on jezykiem programowania. 18:17, 23 gru 2005 (CET)Egon 18:17, 23 gru 2005 (CET)
No wiec tak, PWN [1] mowi o jezyku maszynowym, WIEM, wp.pl i interia [2] [3] [4] o jezyku programowania niskiego poziomu. No i kto sie w tym rozezna? I jeszcze digipedia [5] tez o jezyku programowania mowi. - PALLADINUS talk 23:53, 29 lis 2005 (CET)
- Koobak: ze specjalistami to jest tak, że czasem długo debatują, której definicji danego pojęcia chcą używać :-), no a (nie)prawda w takim ujęciu, jakiego się domagasz, jest niestety względna wobec przyjętych definicji. Ja tam informatykiem nie jestem, ale i tak otarłem się o debaty, czy coś tam jest już językiem programowania, czy jeszcze językiem skryptowym -- to zależy od Twoich definicji. No i weź Bieleckiego ze swoimi definicjami -- to on mówi prawdę, czy ci, co tradycyjnie rzeczy nazywają? ;-) Powyżej chodziło mi o to, że definicja języka programowania taka jaka jest tu, jest i OK dla laika, i zapewne do przyjęcia dla Knutha (najwyżej z lekkim skrzywieniem), bo to właśnie encyklopedia ma chyba być, a nie leksykon terminów informatycznych. To tak IMHO, bo kłócić się, jako niespecjalista i newbie tutaj, nie mam zamiaru. Pozdro, --Bansp 01:07, 30 lis 2005 (CET)
Jeszcze jeden dowód: asemblery tej samej maszyny mogą mieć całkiem różne składnie - np. składnie Intela i AT&T dla procesorów x86. --matusz d 15:14, 9 sty 2006 (CET)
Asembler jest językiem - składnia większości implementacji asemblera x86 daje m.in. możliwość tworzenia makrodefinicji, obok mnemoników występują instrukcje sterujące (.286, data, segment,...) a poszczególne kompilatory posiadają szereg rozszerzeń, np. nasm pozwala na używanie if czy while, definiowanie struktur i unii. Kod wynikowy przeważnie przechodzi przez etap linkowania, niektóre asemblery pozwalają na optymalizację kodu. Mnemoniki niektórych instrukcji (właśnie: instrukcji) nie mają przełożenia 1:1 w kodzie maszynowym (np. nop to najczęściej mov ax, ax xchg ax, ax). To jest język programowania (niskiego poziomu). :] Kro 05:52, 15 sty 2006 (CET)
- nop = xchg ax, ax ?? możesz mi przybliżyć pod jakim asemblerem (nasm? tasm? masm? fasm? ???)
Przyznam szczerze że nigdy mi się jeszcze nie zdarzyło uzyskać "xchg ax, ax" używając nop'a ;> Co nie zmienia faktu, że wynik operacji obu instrukcji jest taki sam. Co to za dziwny asembler który zamienia nop na xchg ax, ax?? No a skoro już się "czepiam" ;) to (.286, data, segment,...) to jest zbiór dyrektryw dla asemblera a nie zbiór instrukcji sterujących. Pozdrawiam kbhood 14:22, 15 lut 2006 (CET)
- NOP = XCHG (E)AX,(E)AX.
- Opcod 'NOP' to 0x90 - w tym opcodzie ostatnie 3 bity to numer rejestru. Numer rejestru eax to 0, wiec 90. Dla przykładu, xchg (e)cx,(e)cx to bedzie 0x91 (numer rejestru ecx to 1).
- W czasach 8086 istnialo to tylko jako xchg ax,ax, ale w krotki czas potem zostala ustanowiona 'nowa' nazwa dla tego opcodu - nop. Sytuacja podobna jak z je/jz - ten sam opcod, ale inna nazwa, dla zachowania czytelnosci.
- Pozdrawiam Fr3m3n
-
- Zgadza się Fr3m3n. Po przestudiowaniu tablicy opkodów dla procesora Intel przyznaję rację, że instrukcje
XCHG (E)AX, (E)AXorazNOPmają ten sam opkod. Zwracam honor wikipedyście Kro.
- Pozdrawiam kbhood
- Zgadza się Fr3m3n. Po przestudiowaniu tablicy opkodów dla procesora Intel przyznaję rację, że instrukcje
[edytuj] Przykład
Zważywszy na naturę asemblera, można by się pokusić o słowną interpretację obok każdego z poleceń przykładu, bo tak jak jest, to baaardzo sucho wygląda :-) --Bansp 18:50, 29 lis 2005 (CET)
[edytuj] czym jest język programowania ?
Najpopularniejszą "środowiskową" definicją j. p. jest taka, w której językiem programowania jest wszystko, co pozwala na instrukcje warunkowe i pętle oraz bodajże funkcje. W ramach tej definicji nawet LaTeX jest j.p (o tym że jest nim PS chyba wszyscy wiedzą?) a tym bardziej asembler :P
Pozdrawiam --WarX <talk> 23:34, 29 lis 2005 (CET)
[edytuj] Czym nie jest asembler
Pogodzę Was koledzy. Asembler nie jest w żadnym wypadku jezykiem oprogramownia. Asembler, to program tłumaczący język asemblera ( czyli to co tu definiujecie ) lub jak wolicie język mnemonik na kod maszynowy. To co tu napisaliście powinno figurowac pod hasłem "języki asemblera", hasło asembler powinno mieć treść: program tłumaczący języki asemblera na odpowiadajace im kody maszynowe. Niestety nie jestem wikipedystą i nie wiem jak to zrobić.:(
wyrazy uznania za ciężką i pożyteczną pracę :)
M
- Tak, ale nie do końca - po polsku często używa się słowa asembler zarówno w odniesieniu do programu jak i języka. Trzeba by dopisać trochę, żeby był sens rozdzielać to na dwie części. Poza tym to nie zmienia istoty sprawy - że każdy język asemblera jest językiem programowania ;-) . --matusz d 15:55, 14 sty 2006 (CET)
- Kasztan to i drzewo i owoc, więc rozumowanie jak najbardziej błędne. Równie dobrze mogę twierdzić, że asembler to nie program do czytania i tłumaczenia plików, bo pliki czyta i tłumaczy interpreter asemblera. Kro 05:45, 15 sty 2006 (CET)
-
- No cóż, kasztan to drzewo i owoc, śliwka też, ale nic z tego nie wynika dla kwestii asemblera. ;)
- Aby się nie rozwodzić, cytat z brytyjskiej Wikipedii ( podkreślenia są moje ):
-
- "An assembler is a computer program for translating assembly language — essentially, a mnemonic representation of machine language — into object code. A cross assembler (see cross compiler) produces code for one type of processor, but runs on another.
-
- As well as translating assembly instruction mnemonics into opcodes, assemblers provide the ability to use symbolic names for memory locations (saving tedious calculations and manually updating addresses when a program is slightly modified), and macro facilities for performing textual substitution — typically used to encode common short sequences of instructions to run inline instead of in a subroutine.
-
- Assemblers are far simpler to write than compilers for high-level languages, and have been available since the 1950s. "
-
- jeszcze raz pozdrawiam
- M
[edytuj] asembler a Asembler
Chciałbym zwrócić uwagę na fakt, że używamy słowa "asembler" jeśli odwołujemy się do programu tłumaczącego mnemoniki do postaci binarnej. Natomiast słowa "Asembler" w przypadku gdy chodzi nam o język. Taką terminologię stosują autorzy książek poświęconych zagadnieniom programowania w języku Asemblera.
-
- "Aby napisać program w języku Asembler, musimy znać składnię i znaczenie słów należących do tego języka. Znajomość syntaktyki i semantyki języka stanowi zaledwie część wiedzy niezbędnej do tworzenia programu asemblerowego. Program źródłowy (z rozszerzeniem asm) musi być zapisany zgodnie nie tylko ze składnią i znaczeniem słów tworzących język Asembler, lecz także z zasadami asemblera-translatora czyli programu, który czyta i analizuje zawartość programu źródłowego oraz w razie potrzeby ponawia te czynności. "
-
- Stanisław Kruk " Asembler - kurs programowania dla średnio zaawansowanych" wyd. Mikom
A tu kolejny cytat tego samego autora:
-
- "Pomysł był prosty; należało napisać program przekształcający monotonne ciągi zerojedynkowe, które oznaczałyby kody rozkazów procesora oraz ich adresy w pamięci, na symboliczne nazwy. Dokonano tego i okazało się, że to działa aż do dziś - tak powstał symboliczny asembler (jako program-translator pisany jest zawsze małą literką, aby nie mylić z nazwą języka Asembler)."
-
- Stanisław Kruk " Asembler - Podręcznik użytkownika" wydanie 3 poprawione i uzupełnione, wyd. Mikom
Dla odmiany cytat innego autora:
-
- "Niektórzy ludzie definiują język Asemblera jako język, w którym z jednego wiersza tekstu źródłowego (zapisanego przez programistę) tworzy się jedną instrukcję maszynową. Dosłownie to nie jest prawda, gdyż niektóre wiersze zapisane przez programistę w kodzie źródłowym są poleceniami dla programu asemblera i nie powodują utworzenia żadnej instrukcji maszynowej.
-
- Moja definicja Asemblera jest następująca (to wciąż cytat - dop.):
Język Asemblera jest językiem, który umożliwia sprawowanie całkowitej kontroli nad każdą poszczególną instrukcją maszynową, wytworzoną przez program translatora."
-
- Jeff Duntemann " Zrozumieć Asembler"
W ostatniej definicji "program translatora" to po prostu asembler (przez małe 'a' bo chodzi o program a nie język).
A .. i jeszcze jedno. A propos historii języka (wybitny znawca tematu - Stanisław Kruk):
-
- "Jak podają książki o historii Asemblera, podczas rywalizacji między mocarstwami zaprogramowano rakietę Vanquard - jako odpowiedź na Sputnika z 1957 r. - w języku wewnętrznym maszyny. Po prostu "nafaszerowano" jej wnętrze zerami i jedynkami. I cóż się stało. Ano, stało się, programista przeoczył zero czy jedynkę, po czym odbył się kosztowny spektakl na nieboskłonie. Czy ten programista dalej tam pracował? Nie wiadomo. W każdym razie poważnie rzecz potraktowano, wzięto pod uwagę omylność człowieka i sięgnięto po pomysł z początku lat 50. Pomysł był prosty ..."
dalej znajduje się fragment przytoczony przeze mnie wyżej.
I kolejna sprawa... W artykule zamiast "Przykładowe polecenie" powinno być "Przykładowe polecenia" gdyż podano ciąg 4 instrukcji z których każda z nich jest poleceniem dla procesora. Następnie fragment "Rozszerzeniem Asemblera z zachowaniem wszystkich jego możliwości jest makroasembler" powinien być uzupełniony o co dokładnie Makroasembler rozszerza funkcjonalność Asemblera, tak by zdanie to wnosiło do definicji coś konkretnego. Makroasembler w skrócie (dla potrzeb tego artykułu) uzupełnia dziewiczy język Asemblera o składnię języka wysokiego poziomu, a więc możliwe staje się stosowanie iteracji warunkowych ograniczonych jak i nieograniczonych (for, while, repeat...until) oraz wyboru warunkowego (if, if...else), makr, i wysokopoziomowej składni wywoływania procedur (invoke zamiast call - własność Macro Assembler'a) a oto przykład z Makroasemblera:
.if eax == 7 add eax, ebx invoke foo, param1, param2, ebx .else invoke bar, eax, param2, param3 .endif ret
co w języku Asemblera przybrałoby postać (np.):
cmp eax, 7 jne label_else add eax, ebx push ebx push param2 push param1 call foo jmp label_endif label_else: push param3 push param2 push eax call bar label_endif: ret
po więcej przykładów i informacji na temat makroasemblera -> www.masm32.com , www.win32asm.cjb.net (szczególnie polecam dział tutorials i source) Pozdrawiam [powyższe napisane przeze mnie - Kbhood 11:37, 15 lut 2006 (CET)]
Jeśli Asembler to język, a asembler to program, to chyba powinno się pisać język Asembler, a nie język Asemblera (jak to jest w art.), bo to trochę jak język Pascala. royas 12:41, 6 lip 2006 (CEST)
- Zgadzam się. Jakkolwiek, takie tłumaczenie zastosowano (m.in.) w książce "Zrozumieć Asembler", autor Jeff Duntemann. Widać tłumacz wpadł w tę samą pułapkę.
- Pozdrawiam kbhood
[edytuj] Asembler- język programistów
przypisuje nazwy symboliczne:
a)wyłącznie argumentom operacji b)operacjom oraz ich argumentom c)wyłącznie operacjom
[6] OS stworzony w Asemblerze :-) --Pan Czips 10:15, 8 lip 2007 (CEST)