Cel mai bun răspuns
Aproape toate aceste răspunsuri răspund la o întrebare diferită, și anume tipul de procesor acceptat de limbajul de asamblare. Cu toate acestea, un limbaj de asamblare propriu-zis, indiferent de tipul procesorului, poate fi clasificat în trei tipuri diferite.
- Un limbaj de asamblare de bază. Aceasta traduce doar instrucțiunile în coduri opționale. Nimic extraordinar. Cele mai multe dintre acestea sunt pentru mașini încorporate mici. Am scris una pentru 8080/8080 / z80 în ‘79. Nu a recunoscut nici măcar prioritatea pentru expresiile sale limitate.
- Un limbaj de asamblare normal sau tipic care conține (1), dar conține și pseudoinstrucțiuni și directive care setează segmente de cod setate, poate genera blocuri de date și multe altele . Majoritatea asamblatoarelor sunt de această natură.
- Un limbaj de asamblare macro. Unul bun are un limbaj macro extins, inclusiv bucle, înlocuire și multe altele. Pot fi foarte puternici. IBM 360 Assembler este un bun exemplu în acest sens. Asamblatorul MASM Microsoft x86 / x64 este, de asemenea, un exemplu în acest sens.
Următorul este un exemplu de macro în MASM pe care îl folosesc în codul meu pentru a face limbajul de asamblare portabil pentru diferite compilatoare. Ne pare rău pentru încheierea.
;
; This macro declares an external data element.
;
External macro dName:req, dType:req
local dataName, xName
xName textequ
forc chr, <&dName>
ifidn <&chr>, <\_>
xName textequ
else
xName catstr xName, <&chr> ;;catstr &xName, &chr
endif
endm
if (\_borland eq true)
dataName catstr <\_>, <&dName&> ;; extern "C": Borland"s 5.5.1 C++
elseif (\_comeau eq true)
dataName catstr <\_>, <&dName&> ;; extern "C": Comeau 4.2.45.2 C++
elseif (\_gnu eq true)
dataName catstr <\_>, <&dName&> ;; extern "C": GNU 2.95.3-5 C++
elseif (\_ibm eq true)
dataName catstr <\_>, <&dName&> ;; extern "C": IBM VisualAge 4.0 C++
elseif (\_intel eq true)
dataName catstr <\_>, <&dName&> ;; extern "C": Intel 5.0.1 reference C++
elseif (\_microsoft eq true)
if (\_x32 eq true)
dataName catstr <\_>, <&dName&> ;; extern "C": Microsoft Visual Studio
else
dataName textequ <&dName&> ;; extern "C": Microsoft Visual Studio
endif
elseif (\_clr eq true)
if (\_x32 eq true)
dataName catstr <\_>, <&dName&> ;; extern "C": Microsoft Visual Studio with -clr option
else
dataName textequ <&dName&> ;; extern "C": Microsoft Visual Studio with -clr option
endif
endif
extern dataName:dType
\%xName equ dataName
endm
Răspuns
Există multe tipuri de limbaj de asamblare sau este limbaj de asamblare unic?
Da, există mai multe tipuri, cel puțin RISC (în general 3-operand, încărcare / stocare, cu multe registre) și CISC (în general 2 operand și diferit de încărcare / store, poate funcționa pe memorie fără a fi încărcat mai întâi într-un registru).
Cel mai popular RISC este ARM (dar este strict două sau trei arhitecturi, cel puțin ARMv8 este într-adevăr diferit) și de ex. MIPS o altă variantă. Cel mai popular CISC este x86, de la Intel (și de ex. AMD care a făcut extensia x86-64 pe 64 de biți). Încă mai utilizați un alt CISC pentru mainframe-urile IBM.
VLIW este un altul (și EPIC-ul Intel este un fel de variantă), mulți dintre aceștia făcând astfel de tipuri de procesoare, inclusiv TI. obscure este un singur set de instrucțiuni computer – Wikipedia (OISC), în mare parte un exercițiu teoretic.
Există, de asemenea, computer set de instrucțiuni zero – Wikipedia (ZISC), deci nu sunt sigur că se aplică un ansamblu. 🙂
Și arhitectură declanșată de transport – Wikipedia este ultima din partea de sus a capului meu. Există altele?
Dintre toate arhitecturile un set de instrucțiuni , arhitectura TTA este una dintre puținele care au avut procesoare bazate pe a fost construit și singurul care are procesoare bazate pe acesta vândut comercial.