Czy język asemblera i język maszynowy (dla tego samego systemu bazowego) są naprawdę takie same? Czy są jakieś różnice między tymi dwoma koncepcjami?Jaki jest związek między językiem asemblera a językiem maszynowym?
Odpowiedz
Język złożenia to mechanizm wygody w stosunku do języka maszyny. W języku asemblerowym zamiast numerycznych kodów operacji można używać sekwencji mnemonicznych, a zamiast ręcznego obliczania przesunięć można używać etykiet symbolicznych. Chroni cię również przed naprawdę głupimi błędami - jak wpisywanie źle sformułowanej instrukcji procesora.
W przeciwnym razie język assemiczny jest odpowiednikiem języka maszynowego. Czasami będziesz miał stary asembler, który nie będzie obsługiwać mnemoniki dla niektórych instrukcji nowszych procesorów - wtedy nadal możesz wstawiać kody operacji bezpośrednio do programu.
W Assembly instrukcje są łatwiejsze do zrozumienia reprezentacjami instrukcji CPU.
Ale assembler sprawia również, na przykład, zwracając się łatwiejsze:
- W języku maszynowym trzeba wiedzieć odległość (w przestrzeni adresowej) pomiędzy gdzie jesteś i gdzie chcesz, aby przejść do
- W języku asemblerowym wywołuje się jeden adres "iWantToJumpHere", a następnie można powiedzieć "skok iWantToJumpHere"
Ułatwia to konserwację, szczególnie w przypadku zmiany odległości między adresami.
Język maszynowy to "Kodowanie bitowe" kodów operacyjnych procesora.
Langauge zespołu to "kodowanie symboliczne" kodów operacji procesora.
Tak na przykład symbolicznie:
loop: dec R1 # Decrement register R1
bnq loop # Branch if not equal to zero to
# address "loop"
Staje Kodowanie Bit:
# Mythical CPU Machine code 4 bits operation,
# 4 bit "option"
0x41 # 4 is a "dec" and represents r1;
0x7E # 7 is bnq and E means PC -2;
Ogólnie jest to jeden do jednego związku, jednak niektóre języki montażowe będą ocationally narzucają instrukcję montażu, które mapują albo wielokrotność instrukcje dotyczące kodu maszynowego lub ponowne użycie innego kodu operacji. Takich jak użycie kodu maszynowego "xor R1, R1" jako "clr R1" lub coś bardzo podobnego.
Ponadto języki asemblacji będą wspierać "programowanie makr", które w latach 80-tych, kiedy montaż był szeroko stosowany, nadawało kodowi źródłowemu bardziej "wysokiego poziomu" wyglądu. Osobiście napisałem makra montażowe, które wyglądały jak "wykres x, y" i "Hex Val", aby uprościć typowe operacje.
Na przykład:
# Mythically CPU Macro
.macro spinSleep x,y
ld #x,y
localLoop: dec y
brq localLoop
.endmacro
# Macro invocation
spinSleep 100,R1
# Macro expantion
ld #100,R1
localLoopM: dec R1
brq localLoopM # localLoopM is "Mangled" for localization.
Złożyć poziom języka jest pierwszym krokiem w kierunku podejmowania świadomych prostego programowania poprzez umożliwienie programistom pisać mnemoniki zamiast kodu binarnego (kod maszynowy).
znalazłem bardzo dobre wyjaśnienie, pomyślał aby umieścić go tutaj, tak aby inni mogli ją przeczytać:
język maszyna jest rzeczywiste bity wykorzystywane do sterowania procesora w komputerze , zazwyczaj postrzegane jako sekwencja liczb szesnastkowych (zazwyczaj bajtów). Procesor odczytuje te bity z pamięci programu, a bity przedstawiają "instrukcje" co do następnego. Tak więc język maszynowy zapewnia sposób wprowadzania instrukcji do komputera (niezależnie od tego, czy jest to za pośrednictwem przełączników, taśmy perforowanej lub pliku binarnego ).
Assembler to bardziej czytelny widok języka maszynowego. Zamiast reprezentowania maszyny język w postaci liczb, instrukcje i rejestry mają nazwy (zwykle są to skrócone słowa lub mnemoniki, np. Ld oznacza "obciążenie"). W przeciwieństwie do języka wysokiego poziomu, asembler jest bardzo zbliżony do języka maszynowego . Główne abstrakcje (z wyjątkiem mnemoników ) to użycie etykiet zamiast adresów w stałej pamięci i komentarzy .
Program w języku asemblerowym (tj. Plik tekstowy ) jest tłumaczony na język komputera przez asembler. Dezasembler wykonuje odwrotną funkcję (chociaż komentarze i nazwy etykiet zostaną odrzucone w procesie asemblera).
Źródło: What is difference between machine language and assembly language?
języku maszynowym, co chip rozumie Zgromadzenie jest to, czego zrozumieć
Każda komenda montaż ma język maszynowy równoważne
43 00 00 00 = inc ebx
41 00 00 00 = inc eax
3B CA 00 00 = CMP ECX, EDX
C3 00 00 00 = retencji
itd
Montaż jest język symboliczny kodowanie rozkazu (kod operacji), które jest zrozumieć przez ludzi i używaj tylko do instruowania procesora komputera (praca sprzętowa) i robota (operacja robotyczna) do wykonywania określonych zadań. Jest to zrozumiały język dla ludzi. Ten język służy wyłącznie do instruowania obsługi sprzętu i zdecydowanie nie służy do tworzenia oprogramowania. Asembler służy do konwersji tej symbolicznej części kodowej opcode (kod operacji) na język maszynowy. Kod operacji (Opcode) jest częścią języka maszynowego.
Nie jest jasne, co to odpowiedź ma na celu przekazać. –
Maszyna Język:
- To programowanie język Pierwsza generacja
- Jest o wiele trudniejsze niż Assembly Język
- Trudne do zrozumienia przez człowieka
- Jest w formie 0s i 1s
- Język maszyny różni się od platformy
- To c Annot łatwo zmienić
- To nie obsługuje modyfikacji
- Ryzyko występowania błędów jest wysoka
- Kod binarny nie można zapamiętać
- bez potrzeby kompilatora
Assembly Język:
- Jest to język programowania drugiej generacji
- Jest mniej trudne niż język maszynowy
- łatwe do zrozumienia przez człowieka
- Używa instrukcje symboliczne, opisowych nazw dla elementów danych oraz lokalizację pamięci
- Zgromadzenie Język jest platforma zależne
- Jest łatwo Modyfikowalny
- wsparcia IT zmienia
- ryzyko wystąpienia błędu jest redukowane
- memorability jest wysoka
- Jest potrzebny kompilator i wie jak asemblerze
- 1. Dokładna różnica i relacja między JSTL a językiem ekspresji
- 2. Poza językiem deklaratywnym, czy SQL jest językiem funkcjonalnym?
- 3. Jaki jest związek między __getattr__ a getattr?
- 4. Jaki jest związek między pasażerem a Capistrano?
- 5. Czy bash jest językiem interpretowanym?
- 6. Różnice między językiem programowania systemów a językami programowania aplikacji
- 7. regexp z rosyjskim językiem
- 8. Parser z językiem DOT
- 9. Jaka jest różnica między językiem zorientowanym na komponenty i obiektowym?
- 10. Czy ASP.Net jest językiem skryptowym lub ramowym?
- 11. Jest groovy potencjalnym językiem programowania dla Androida
- 12. Problemy Html2Canvas z językiem tajlandzkim
- 13. Jaki jest związek między stertą "a" i stosem?
- 14. jaki jest związek między tomcat i jdk a aplikacją internetową?
- 15. Jaki jest związek między SPID a połączeniem na serwerze SQL?
- 16. Jaki jest związek między forkOn a flagą -qm RTS?
- 17. Jaki jest związek między stacją nazw iostream a stacją nazw?
- 18. Jaki jest związek między polem "SYSTEM_PROPERTIES_MODE_ENVIRONMENT" a PropertyPlaceHolderConfigurer?
- 19. Jaki jest związek między modelowaniem tematów a grupowaniem dokumentów?
- 20. Jaki jest związek między Spring Boot a Spring IO?
- 21. Jaki jest związek między liczbą a funkcją.prototype w javascript?
- 22. Jaki jest związek między wątkiem JavaScript a wątkiem interfejsu Silverlight?
- 23. vim: rozszerzenie skojarzone z językiem
- 24. jaki jest związek między masksToBounds i cornerRadius?
- 25. Jaki jest związek między WIC i GDI +?
- 26. Jaki jest związek między docutils i Sphinx?
- 27. Jaki jest związek między UIView i CALayer
- 28. Jaki jest związek między Node.js i V8?
- 29. Jaki jest związek między validate() i hasErrors()
- 30. Jaki jest związek między iteracjami i FRP?
dzięki Sharptooth, myślę, że mam go – freenight