Meilleure réponse
Presque toutes ces réponses répondent à une question différente, à savoir le type de processeur supporté par le langage dassemblage. Cependant, un véritable langage dassemblage, quel que soit le type de processeur, peut être classé en trois types différents.
- Un langage dassemblage de base. Cela traduit simplement les instructions en opcodes. Rien dextraordinaire. La plupart dentre eux sont destinés à de minuscules machines intégrées. Jen ai écrit un pour le 8080/8080 / z80 en 79. Il na même pas reconnu la priorité pour ses expressions limitées.
- Un langage dassemblage normal ou typique qui fait (1) mais contient également des pseudo-instructions et des directives qui définissent des segments de code définis, peut générer des blocs de données et bien plus encore . La plupart des assembleurs sont de cette nature.
- Un langage dassemblage de macro. Un bon a un langage macro étendu comprenant des boucles, des substitutions et bien plus encore. Ils peuvent être très puissants. Lassembleur IBM 360 en est un bon exemple. Lassembleur MASM Microsoft x86 / x64 en est également un exemple.
Ce qui suit est un exemple de macro dans MASM que jutilise dans mon code pour rendre le langage dassemblage portable pour différents compilateurs. Désolé pour le bouclage.
;
; 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éponse
Existe-t-il de nombreux types de langage dassemblage, ou langage dassemblage unique?
Oui, il existe de nombreux types, au moins RISC (généralement 3 opérandes, load / store, avec de nombreux registres), et CISC (généralement 2 opérandes et contrairement à load / store, peut fonctionner sur la mémoire sans chargement préalable dans un registre).
Le RISC le plus populaire est ARM (mais cest strictement deux ou trois architectures, au moins ARMv8 est vraiment différent), et par exemple MIPS une autre variante. Le CISC le plus populaire est x86, dIntel (et par exemple AMD qui a créé lextension 64 bits x86-64). Encore en utilisation un autre CISC pour les mainframes dIBM.
VLIW en est un autre (et lEPIC dIntel une sorte de variante de), beaucoup ayant fabriqué de tels types de processeurs, y compris TI.
Certains obscure est un ordinateur de jeu dinstructions – Wikipedia (OISC), principalement un exercice théorique.
Il y a aussi ordinateur de jeu dinstructions zéro – Wikipedia (ZISC), donc je ne suis pas sûr quun assemblage sapplique. 🙂
Et architecture déclenchée par le transport – Wikipédia est la dernière du haut de ma tête. Y en a-t-il dautres?
De toutes les architectures à un jeu dinstructions , larchitecture TTA est lune des rares à avoir des processeurs basés sur il a été construit, et le seul à avoir des processeurs basés sur celui-ci est vendu dans le commerce.