Care sunt diferitele tipuri de limbaje de asamblare?


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.

  1. 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.
  2. 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ă.
  3. 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.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *