Dyskusja:Asembler

message: 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)

message: 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)
replies: text: 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)

text: 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)

text: 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  mowi o jezyku maszynowym, WIEM, wp.pl i interia    o jezyku programowania niskiego poziomu. No i kto sie w tym rozezna? I jeszcze digipedia  tez o jezyku programowania mowi. - PALLADINUS talk 23:53, 29 lis 2005 (CET)

text: 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)

text: 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)

text: NOP = XCHG (E)AX,(E)AX.

text: 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).

text: 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.

text: Pozdrawiam Fr3m3n
replies: text: :Zgadza się Fr3m3n. Po przestudiowaniu tablicy opkodów dla procesora Intel przyznaję rację, że instrukcje XCHG (E)AX, (E)AX oraz NOP mają ten sam opkod. Zwracam honor wikipedyście Kro.

text: :Pozdrawiam kbhood
thread_title:  Asembler to nie '''język programowania'''! 

message: 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)
thread_title:  Przykład 

message: 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)
thread_title:  czym jest język programowania ? 

message: 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
replies: text: 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)

text: 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)
replies: text: :No cóż, kasztan to drzewo i owoc, śliwka też, ale nic z tego nie wynika dla kwestii asemblera. ;)

text: :Aby się nie rozwodzić, cytat z brytyjskiej Wikipedii ( podkreślenia są moje ):

text: :"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.

text: :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.

text: :Assemblers are far simpler to write than compilers for high-level languages, and have been available since the 1950s. "

text: :jeszcze raz pozdrawiam

text: :M
thread_title:  Czym nie jest asembler 

message: 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.
replies: text: :"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:
replies: text: :"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:

text: :"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.

text: :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):

text: :"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)

text: 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ę.

text: Pozdrawiam kbhood
thread_title:  asembler a Asembler 

message: przypisuje nazwy symboliczne:
                              a)wyłącznie argumentom operacji
                              b)operacjom oraz ich argumentom
                              c)wyłącznie operacjom
----
 OS stworzony w Asemblerze :-)
--Pan Czips 10:15, 8 lip 2007 (CEST)
thread_title:  Asembler- język programistów 

message: Czy bibliografia, która została użyta to stworzenia tego hasła nie jest zbyt obszerna - wygląda trochę, jakby ktoś wrzucił do niej wszystkie książki o asemblerze jakie znalazł.
thread_title:  Bibliografia 

message: Witam, mam pytanie, czy istnieją sprzętowe asemblery? lub sprzętowe interpretatory języka asemblera?  (nie jestem informatykiem, sorry jeśli w jakiś sposób okazałem ignorancję)
thread_title: ==